Author: pschweitzer Date: Wed Nov 30 22:04:54 2011 New Revision: 54552
URL: http://svn.reactos.org/svn/reactos?rev=54552&view=rev Log: [CRT] Fix error handling for j0, j1, y0, y1 Bessel functions. Remove useless defines
Modified: trunk/reactos/lib/sdk/crt/math/j0_y0.c trunk/reactos/lib/sdk/crt/math/j1_y1.c
Modified: trunk/reactos/lib/sdk/crt/math/j0_y0.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/j0_y0.c?re... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/j0_y0.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/j0_y0.c [iso-8859-1] Wed Nov 30 22:04:54 2011 @@ -2,8 +2,6 @@ #include <float.h> #include "ieee754/ieee754.h"
-typedef int fpclass_t; -fpclass_t _fpclass(double __d); int *_errno(void);
/* @@ -11,7 +9,7 @@ */ double _j0(double num) { - /* FIXME: errno handling */ + if (!_finite(num)) *_errno() = EDOM; return __ieee754_j0(num); }
@@ -21,7 +19,12 @@ double _y0(double num) { double retval; - if (!_finite(num)) *_errno() = EDOM; + int fpclass = _fpclass(num); + + if (!_finite(num) || fpclass == _FPCLASS_NN || + fpclass == _FPCLASS_ND || fpclass == _FPCLASS_NZ) + *_errno() = EDOM; + retval = __ieee754_y0(num); if (_fpclass(retval) == _FPCLASS_NINF) {
Modified: trunk/reactos/lib/sdk/crt/math/j1_y1.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/j1_y1.c?re... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/j1_y1.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/j1_y1.c [iso-8859-1] Wed Nov 30 22:04:54 2011 @@ -2,8 +2,6 @@ #include <float.h> #include "ieee754/ieee754.h"
-typedef int fpclass_t; -fpclass_t _fpclass(double __d); int *_errno(void);
/* @@ -11,7 +9,7 @@ */ double _j1(double num) { - /* FIXME: errno handling */ + if (!_finite(num)) *_errno() = EDOM; return __ieee754_j1(num); }
@@ -21,7 +19,12 @@ double _y1(double num) { double retval; - if (!_finite(num)) *_errno() = EDOM; + int fpclass = _fpclass(num); + + if (!_finite(num) || fpclass == _FPCLASS_NN || + fpclass == _FPCLASS_ND || fpclass == _FPCLASS_NZ) + *_errno() = EDOM; + retval = __ieee754_y1(num); if (_fpclass(retval) == _FPCLASS_NINF) {