- Timestamp:
- Jul 9, 2020, 8:51:43 AM (4 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-2.1.1
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-math/src/math.c
r331 r439 5 5 */ 6 6 7 #ifdef MRB_WITHOUT_FLOAT 8 # error Math conflicts 'MRB_WITHOUT_FLOAT' configuration in your 'build_config.rb' 9 #endif 10 7 11 #include <mruby.h> 8 12 #include <mruby/array.h> … … 15 19 struct RClass *math = mrb_module_get(mrb, "Math"); 16 20 struct RClass *domainerror = mrb_class_get_under(mrb, math, "DomainError"); 17 mrb_value str = mrb_str_new_cstr(mrb, func); 18 mrb_raisef(mrb, domainerror, "Numerical argument is out of domain - %S", str); 21 mrb_raisef(mrb, domainerror, "Numerical argument is out of domain - %s", func); 19 22 } 20 23 … … 23 26 24 27 #include <float.h> 25 26 #define MATH_TOLERANCE 1E-1227 28 28 29 double … … 123 124 sum += term/(2*j+1); 124 125 ++j; 125 } while (fabs(term/sum) > MATH_TOLERANCE); 126 if (sum == 0) break; 127 } while (fabs(term/sum) > DBL_EPSILON); 126 128 return two_sqrtpi*sum; 127 129 } … … 156 158 q1 = q2; 157 159 q2 = b/d; 158 } while (fabs(q1-q2)/q2 > MATH_TOLERANCE);160 } while (fabs(q1-q2)/q2 > DBL_EPSILON); 159 161 return one_sqrtpi*exp(-x*x)*q2; 160 162 } 161 163 164 #endif 165 166 #if defined __FreeBSD__ && !defined __FreeBSD_version 167 #include <osreldate.h> /* for __FreeBSD_version */ 162 168 #endif 163 169 … … 487 493 { 488 494 mrb_float x, base; 489 int argc;495 mrb_int argc; 490 496 491 497 argc = mrb_get_args(mrb, "f|f", &x, &base); … … 658 664 659 665 mrb_get_args(mrb, "fi", &x, &i); 660 x = ldexp(x, i);666 x = ldexp(x, (int)i); 661 667 662 668 return mrb_float_value(mrb, x); … … 737 743 #else 738 744 mrb_define_const(mrb, mrb_math, "E", mrb_float_value(mrb, exp(1.0))); 739 #endif740 741 #ifdef MRB_USE_FLOAT742 mrb_define_const(mrb, mrb_math, "TOLERANCE", mrb_float_value(mrb, 1e-5));743 #else744 mrb_define_const(mrb, mrb_math, "TOLERANCE", mrb_float_value(mrb, 1e-12));745 745 #endif 746 746
Note:
See TracChangeset
for help on using the changeset viewer.