* math.c (math_erf,math_erfc): new function. [ruby-list:37753]

* eval.c (ruby_finalize): no longer need to turn off $DEBUG in the
  finalizer. (ruby-bugs-ja PR#473)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2003-06-05 06:40:42 +00:00
parent bd368e9749
commit c004ecfa1e
7 changed files with 36 additions and 2 deletions

View File

@ -1,3 +1,7 @@
Thu Jun 5 15:09:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* math.c (math_erf,math_erfc): new function. [ruby-list:37753]
Thu Jun 5 05:49:43 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net> Thu Jun 5 05:49:43 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
* ext/syck/rubyext.c: using GC nodes caused segfault. [ruby-core:1071] * ext/syck/rubyext.c: using GC nodes caused segfault. [ruby-core:1071]
@ -11,6 +15,11 @@ Thu Jun 5 04:48:57 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
* ext/syck/handler.c, ext/syck/syck.c: ensure a fresh strtable between * ext/syck/handler.c, ext/syck/syck.c: ensure a fresh strtable between
parser iterations. parser iterations.
Wed Jun 4 12:06:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (ruby_finalize): no longer need to turn off $DEBUG in the
finalizer. (ruby-bugs-ja PR#473)
Tue Jun 3 22:20:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org> Tue Jun 3 22:20:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_call_super): should search superclass method based on * eval.c (rb_call_super): should search superclass method based on

1
LEGAL
View File

@ -134,6 +134,7 @@ st.[ch]:
x68/*: x68/*:
missing/alloca.c: missing/alloca.c:
missing/dup2.c: missing/dup2.c:
missing/erf.c:
missing/finite.c: missing/finite.c:
missing/hypot.c: missing/hypot.c:
missing/isinf.c: missing/isinf.c:

View File

@ -262,6 +262,7 @@ missing/acosh.c
missing/alloca.c missing/alloca.c
missing/crypt.c missing/crypt.c
missing/dup2.c missing/dup2.c
missing/erf.c
missing/file.h missing/file.h
missing/fileblocks.c missing/fileblocks.c
missing/finite.c missing/finite.c

View File

@ -371,7 +371,7 @@ AC_FUNC_FSEEKO
AC_CHECK_FUNCS(ftello) AC_CHECK_FUNCS(ftello)
AC_REPLACE_FUNCS(dup2 memmove mkdir strcasecmp strncasecmp strerror strftime\ AC_REPLACE_FUNCS(dup2 memmove mkdir strcasecmp strncasecmp strerror strftime\
strchr strstr strtoul crypt flock vsnprintf\ strchr strstr strtoul crypt flock vsnprintf\
isinf isnan finite hypot acosh) isinf isnan finite hypot acosh erf)
AC_CHECK_FUNCS(fmod killpg wait4 waitpid syscall chroot fsync\ AC_CHECK_FUNCS(fmod killpg wait4 waitpid syscall chroot fsync\
truncate chsize times utimes fcntl lockf lstat symlink readlink\ truncate chsize times utimes fcntl lockf lstat symlink readlink\
setitimer setruid seteuid setreuid setresuid setproctitle\ setitimer setruid seteuid setreuid setresuid setproctitle\

1
eval.c
View File

@ -1313,7 +1313,6 @@ ruby_finalize()
{ {
int state; int state;
ruby_debug = Qfalse;
PUSH_TAG(PROT_NONE); PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) { if ((state = EXEC_TAG()) == 0) {
rb_trap_exit(); rb_trap_exit();

19
math.c
View File

@ -271,6 +271,22 @@ math_hypot(obj, x, y)
return rb_float_new(hypot(RFLOAT(x)->value, RFLOAT(y)->value)); return rb_float_new(hypot(RFLOAT(x)->value, RFLOAT(y)->value));
} }
static VALUE
math_erf(obj, x)
VALUE obj, x;
{
Need_Float(x);
return rb_float_new(erf(RFLOAT(x)->value));
}
static VALUE
math_erfc(obj, x)
VALUE obj, x;
{
Need_Float(x);
return rb_float_new(erfc(RFLOAT(x)->value));
}
void void
Init_Math() Init_Math()
{ {
@ -314,4 +330,7 @@ Init_Math()
rb_define_module_function(rb_mMath, "ldexp", math_ldexp, 2); rb_define_module_function(rb_mMath, "ldexp", math_ldexp, 2);
rb_define_module_function(rb_mMath, "hypot", math_hypot, 2); rb_define_module_function(rb_mMath, "hypot", math_hypot, 2);
rb_define_module_function(rb_mMath, "erf", math_erf, 1);
rb_define_module_function(rb_mMath, "erfc", math_erfc, 1);
} }

View File

@ -54,6 +54,11 @@ extern double frexp _((double, int *));
extern double hypot _((double, double)); extern double hypot _((double, double));
#endif #endif
#ifndef HAVE_ERF
extern double erf _((double, double));
extern double erfc _((double, double));
#endif
#ifndef HAVE_ISINF #ifndef HAVE_ISINF
extern int isinf _((double)); extern int isinf _((double));
#endif #endif