parameters: (context, builder, state_ptr)
return_statement: return builder.fdiv(
          builder.fadd(b, builder.fmul(a, ir.Constant(double, 67108864.0))),
          ir.Constant(double, 9007199254740992.0))
docstring: Get the next double generated by the PRNG at *state_ptr*.
docstring_summary: Get the next double generated by the PRNG at *state_ptr*.
docstring_tokens: Get the next double generated by the PRNG at * state_ptr * .
function: def get_next_double(context, builder, state_ptr):
      """
      Get the next double generated by the PRNG at *state_ptr*.
      """
      # a = rk_random(state) >> 5, b = rk_random(state) >> 6;
      a = builder.lshr(get_next_int32(context, builder, state_ptr), const_int(5))
      b = builder.lshr(get_next_int32(context, builder, state_ptr), const_int(6))
  
      # return (a * 67108864.0 + b) / 9007199254740992.0;
      a = builder.uitofp(a, double)
      b = builder.uitofp(b, double)
      return builder.fdiv(
          builder.fadd(b, builder.fmul(a, ir.Constant(double, 67108864.0))),
          ir.Constant(double, 9007199254740992.0))
function_tokens: def get_next_double ( context , builder , state_ptr ) : # a = rk_random(state) >> 5, b = rk_random(state) >> 6; a = builder . lshr ( get_next_int32 ( context , builder , state_ptr ) , const_int ( 5 ) ) b = builder . lshr ( get_next_int32 ( context , builder , state_ptr ) , const_int ( 6 ) ) # return (a * 67108864.0 + b) / 9007199254740992.0; a = builder . uitofp ( a , double ) b = builder . uitofp ( b , double ) return builder . fdiv ( builder . fadd ( b , builder . fmul ( a , ir . Constant ( double , 67108864.0 ) ) ) , ir . Constant ( double , 9007199254740992.0 ) )