def get_next_double(context, builder, state_ptr):
 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))
 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))

def get_next_double ( context , builder , state_ptr ) : 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 ) ) 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 ) )
get the next double generated by the prng at *state_ptr* .