ext/kmat/smat/boxmuller.c in kmat-0.0.3 vs ext/kmat/smat/boxmuller.c in kmat-0.1.0

- old
+ new

@@ -10,23 +10,23 @@ if (RTEST(rb_ivar_get(random, id_iv_kmat_stored))) { rb_ivar_set(random, id_iv_kmat_stored, Qfalse); return NUM2DBL(rb_ivar_get(random, id_iv_kmat_stored_value)); } else { rb_ivar_set(random, id_iv_kmat_stored, Qtrue); - double sqrt_m2_log_x = sqrt(-2.0*log1p(-NUM2DBL(rb_funcall(random, id_rand, 0)))); - double two_pi_y = M_2PI*NUM2DBL(rb_funcall(random, id_rand, 0)); + const double sqrt_m2_log_x = sqrt(-2.0*log1p(-NUM2DBL(rb_funcall(random, id_rand, 0)))); + const double two_pi_y = M_2PI*NUM2DBL(rb_funcall(random, id_rand, 0)); rb_ivar_set(random, id_iv_kmat_stored_value, rb_float_new(sqrt_m2_log_x*sin(two_pi_y))); return sqrt_m2_log_x*cos(two_pi_y); } } // replace ary[0..(len-1)] by random numbers which follow N(0, 1) // `random' is an instance of Random void -km_fill_normal(int len, double *ary, VALUE random) +km_fill_normal(size_t len, double *ary, VALUE random) { - int i; + size_t i; double sqrt_m2_log_x, two_pi_y; len--; if (RTEST(rb_ivar_get(random, id_iv_kmat_stored))) { ary[0] = NUM2DBL(rb_ivar_get(random, id_iv_kmat_stored_value)); i = 1; @@ -64,9 +64,9 @@ } void km_Mat_rand_init(void) { - kmgv_mat_random = rb_const_get(rb_cRandom, id_DEFAULT); + kmgv_mat_random = rb_funcall(rb_cRandom, id_new, 0); rb_define_variable("$MatRandom", &kmgv_mat_random); rb_define_method(rb_cRandom, "randn", km_random_randn, -1); }