mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
math.c: use common constants
* math.c (math_log1, math_log10): use common math constants instead of math function calls. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9801daf9e1
commit
fd2c613b1c
1 changed files with 12 additions and 2 deletions
14
math.c
14
math.c
|
@ -10,6 +10,9 @@
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
# define _USE_MATH_DEFINES 1
|
||||||
|
#endif
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
@ -408,6 +411,13 @@ math_exp(VALUE obj, VALUE x)
|
||||||
# define log10(x) ((x) < 0.0 ? nan("") : log10(x))
|
# define log10(x) ((x) < 0.0 ? nan("") : log10(x))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef M_LN2
|
||||||
|
# define M_LN2 0.693147180559945309417232121458176568
|
||||||
|
#endif
|
||||||
|
#ifndef M_LN10
|
||||||
|
# define M_LN10 2.30258509299404568401799145468436421
|
||||||
|
#endif
|
||||||
|
|
||||||
static double math_log1(VALUE x);
|
static double math_log1(VALUE x);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -466,7 +476,7 @@ math_log1(VALUE x)
|
||||||
/* check for pole error */
|
/* check for pole error */
|
||||||
if (d == 0.0) return -INFINITY;
|
if (d == 0.0) return -INFINITY;
|
||||||
|
|
||||||
return log(d) + numbits * log(2); /* log(d * 2 ** numbits) */
|
return log(d) + numbits * M_LN2; /* log(d * 2 ** numbits) */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef log2
|
#ifndef log2
|
||||||
|
@ -559,7 +569,7 @@ math_log10(VALUE obj, VALUE x)
|
||||||
/* check for pole error */
|
/* check for pole error */
|
||||||
if (d == 0.0) return DBL2NUM(-INFINITY);
|
if (d == 0.0) return DBL2NUM(-INFINITY);
|
||||||
|
|
||||||
return DBL2NUM(log10(d) + numbits * log10(2)); /* log10(d * 2 ** numbits) */
|
return DBL2NUM(log10(d) + numbits * M_LN2/M_LN10); /* log10(d * 2 ** numbits) */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue