From 880d7af47a66f021712eac17adffac2686d08aad Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 3 Sep 2004 09:00:52 +0000 Subject: * struct.c (make_struct): remove redefining constant when conflict. [ruby-dev:24210] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- math.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'math.c') diff --git a/math.c b/math.c index 5b9294e781..cea7bb801d 100644 --- a/math.c +++ b/math.c @@ -331,6 +331,28 @@ math_log(obj, x) return rb_float_new(d); } +/* + * call-seq: + * Math.log2(numeric) => float + * + * Returns the base 2 logarithm of numeric. + */ + +static VALUE +math_log2(obj, x) + VALUE obj, x; +{ + double d; + + Need_Float(x); + errno = 0; + d = log2(RFLOAT(x)->value); + if (errno) { + rb_sys_fail("log2"); + } + return rb_float_new(d); +} + /* * call-seq: * Math.log10(numeric) => float @@ -511,6 +533,7 @@ Init_Math() rb_define_module_function(rb_mMath, "exp", math_exp, 1); rb_define_module_function(rb_mMath, "log", math_log, 1); + rb_define_module_function(rb_mMath, "log2", math_log, 1); rb_define_module_function(rb_mMath, "log10", math_log10, 1); rb_define_module_function(rb_mMath, "sqrt", math_sqrt, 1); -- cgit v1.2.3