Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 566c15e

Browse files
committed
BUG Use the floating point status functions in build time tests
1 parent 5771dae commit 566c15e

3 files changed

Lines changed: 110 additions & 54 deletions

File tree

numpy/core/setup.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,13 +233,16 @@ def check_prec(prec):
233233
exists.extend(C99_COMPLEX_FUNCS_CHECKED)
234234

235235
if len(exists) > 0:
236-
fp = open('./numpy/core/test_c99complex.c', 'r')
236+
fp = open(join('.', 'numpy', 'core', 'test_c99complex.c'), 'r')
237237
obody = fp.read()
238238
fp.close()
239239
precname = {'f':'FLOAT', '':'DOUBLE', 'l':'LONGDOUBLE'}[prec]
240240
for f in exists:
241-
body = obody.replace('PYTESTPRECISION', precname).replace('PYTESTFUNC', f.upper())
242-
if config.try_run(body, libraries=mathlibs):
241+
body = obody.replace('PYTESTPRECISION', precname) \
242+
.replace('PYTESTFUNC', f.upper())
243+
inc_dir = join('.', 'numpy', 'core', 'src', 'npymath')
244+
if config.try_run(body, libraries=mathlibs,
245+
include_dirs=[inc_dir]):
243246
priv.append((fname2def(f + prec), 1))
244247

245248
check_prec('')

numpy/core/src/npymath/fpstatus.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
* keep in sync with NO_FLOATING_POINT_SUPPORT in ufuncobject.h
44
*/
55

6+
/* This include is wrapped so that these functions can also be called when
7+
* doing config tests.
8+
*/
9+
#ifndef CONFIG_TESTS
610
#include "npy_math_common.h"
11+
#endif
712

813
#if (defined(__unix__) || defined(unix)) && !defined(USG)
914
#include <sys/param.h>

numpy/core/test_c99complex.c

Lines changed: 99 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
#include <fenv.h>
2-
#include <float.h>
1+
#ifdef HAVE_NUMPY
2+
#include <numpy/npy_3kcompat.h>
3+
#include <numpy/npy_math.h>
4+
#else
35
#include <stdio.h>
46
#include <math.h>
57
#ifdef __SUNPRO_CC
68
#include <sunmath.h>
79
#endif
810
#include <complex.h>
11+
#endif
12+
13+
#include <float.h>
914

1015
#define PYTESTPRECISION 1
1116
#define PYTESTFUNC 1
@@ -154,6 +159,18 @@
154159
FMT "j\n", __LINE__, xr, xi, er1, ei1, er2, ei2, er3, ei3, er4, ei4, \
155160
rr, ri))
156161

162+
#define TEST_RAISES_FAILED(func, xr, xi, er, ei, rr, ri, efpe, rfpe) \
163+
TEST_FAILED_INT(PyOS_snprintf(buf, bsize, "%d: " STRINGIZE(func) \
164+
"(" FMT " + " FMT "j): expected: " FMT " + " FMT "j: received: " FMT \
165+
" + " FMT "j, required FPE: %d, recieved: %d\n", __LINE__, xr, xi, \
166+
er, ei, rr, ri, efpe, rfpe))
167+
168+
#define TEST_RAISES_FAILED2(func, xr, xi, er1, ei1, er2, ei2, rr, ri, efpe, rfpe) \
169+
TEST_FAILED_INT(PyOS_snprintf(buf, bsize, "%d: " STRINGIZE(func) \
170+
"(" FMT " + " FMT "j): expected: " FMT " + " FMT "j or " FMT " + " FMT \
171+
"j: received: " FMT " + " FMT "j, required FPE: %d, recieved: %d\n", \
172+
__LINE__, xr, xi, er1, ei1, er2, ei2, rr, ri, efpe, rfpe))
173+
157174
#define TEST_CPOW_FAILED(func, xr, xi, yr, yi, er, ei, rr, ri) \
158175
TEST_FAILED_INT(PyOS_snprintf(buf, bsize, "%d: " STRINGIZE(func) "(" FMT \
159176
" + " FMT "j, " FMT " + " FMT "j): expected: " FMT " + " FMT \
@@ -239,6 +256,18 @@
239256
#define NPY_PI_2l 1.570796326794896619231321691639751442L /* pi/2 */
240257
#define NPY_SQRT2l 1.414213562373095048801688724209698079L /* sqrt(2) */
241258

259+
#define NPY_FPE_DIVIDEBYZERO 1
260+
#define NPY_FPE_OVERFLOW 2
261+
#define NPY_FPE_UNDERFLOW 4
262+
#define NPY_FPE_INVALID 8
263+
264+
/* Including this directly is the easiest way to get npy_clear_floatstatus and
265+
* npy_get_float_status during config tests. Defining CONFIG_TESTS makes this
266+
* independent of numpy.
267+
*/
268+
#define CONFIG_TESTS
269+
#include <fpstatus.c>
270+
242271
#define PREFIX
243272

244273
#define RETTYPE int
@@ -273,6 +302,25 @@
273302
} \
274303
while(0)
275304

305+
#define TEST_RAISES_FAILED(func, xr, xi, er, ei, rr, ri, efpe, rfpe) \
306+
do { \
307+
ret = 0; \
308+
printf("%d: " STRINGIZE(func) "(" FMT " + " FMT "j): expected: " FMT \
309+
" + " FMT "j: received: " FMT " + " FMT "j, required FPE: %d, " \
310+
"recieved: %d\n", __LINE__, xr, xi, er, ei, rr, ri, efpe, rfpe); \
311+
} \
312+
while(0)
313+
314+
#define TEST_RAISES_FAILED2(func, xr, xi, er1, ei1, er2, ei2, rr, ri, efpe, rfpe) \
315+
do { \
316+
ret = 0; \
317+
printf("%d: " STRINGIZE(func) "(" FMT " + " FMT "j): expected: " FMT \
318+
" + " FMT "j or " FMT " + " FMT "j: received: " FMT " + " FMT \
319+
"j, required FPE: %d, recieved: %d\n", __LINE__, xr, xi, er1, \
320+
ei1, er2, ei2, rr, ri, efpe, rfpe); \
321+
} \
322+
while(0)
323+
276324
#define TEST_CPOW_FAILED(func, xr, xi, yr, yi, er, ei, rr, ri) \
277325
do { \
278326
ret = 0; \
@@ -440,14 +488,14 @@
440488
CTYPE r; \
441489
CTYPE x = FUNC(cpack)(xr, xi); \
442490
TYPE rr, ri; \
443-
feclearexcept(FE_ALL_EXCEPT); \
491+
npy_clear_floatstatus(); \
444492
r = FUNC(func)(x); \
445-
except = fetestexcept(fpe); \
493+
except = npy_get_floatstatus(); \
446494
rr = FUNC(creal)(r); \
447495
ri = FUNC(cimag)(r); \
448496
if (!(except & fpe && ADDSUFFIX(isequal)(rr, der) \
449497
&& ADDSUFFIX(isequal)(ri, dei))) { \
450-
TEST_FAILED(FUNC(func), dxr, dxi, der, dei, rr, ri); \
498+
TEST_RAISES_FAILED(FUNC(func), dxr, dxi, der, dei, rr, ri, fpe, except); \
451499
} \
452500
} \
453501
while(0)
@@ -464,15 +512,15 @@
464512
CTYPE r; \
465513
CTYPE x = FUNC(cpack)(xr, xi); \
466514
TYPE rr, ri; \
467-
feclearexcept(FE_ALL_EXCEPT); \
515+
npy_clear_floatstatus(); \
468516
r = FUNC(func)(x); \
469-
except = fetestexcept(fpe); \
517+
except = npy_get_floatstatus(); \
470518
rr = FUNC(creal)(r); \
471519
ri = FUNC(cimag)(r); \
472520
if (!(except & fpe && \
473521
((ADDSUFFIX(isequal)(rr, der1) && ADDSUFFIX(isequal)(ri, dei1)) || \
474522
(ADDSUFFIX(isequal)(rr, der2) && ADDSUFFIX(isequal)(ri, dei2))))) {\
475-
TEST_FAILED2(FUNC(func), dxr, dxi, der1, dei1, der2, dei2, rr, ri);\
523+
TEST_RAISES_FAILED2(FUNC(func), dxr, dxi, der1, dei1, der2, dei2, rr, ri, fpe, except);\
476524
} \
477525
} \
478526
while(0)
@@ -828,10 +876,10 @@ RETTYPE ADDSUFFIX(test_catan)(void)
828876
TEST_EE(catan, NAN, 0, NAN, 0);
829877
TEST_EE(catan, NAN, NZERO, NAN, NZERO);
830878

831-
TEST_RAISES(catan, NZERO, 1, NZERO, INFINITY, FE_DIVBYZERO);
832-
TEST_RAISES(catan, 0, 1, 0, INFINITY, FE_DIVBYZERO);
833-
TEST_RAISES(catan, NZERO, -1, NZERO, -INFINITY, FE_DIVBYZERO);
834-
TEST_RAISES(catan, 0, -1, 0, -INFINITY, FE_DIVBYZERO);
879+
TEST_RAISES(catan, NZERO, 1, NZERO, INFINITY, NPY_FPE_DIVIDEBYZERO);
880+
TEST_RAISES(catan, 0, 1, 0, INFINITY, NPY_FPE_DIVIDEBYZERO);
881+
TEST_RAISES(catan, NZERO, -1, NZERO, -INFINITY, NPY_FPE_DIVIDEBYZERO);
882+
TEST_RAISES(catan, 0, -1, 0, -INFINITY, NPY_FPE_DIVIDEBYZERO);
835883

836884
TEST_CE(catan, -INFINITY, 2.0, -ADDSUFFIX(NPY_PI_2), 0);
837885
TEST_CE(catan, INFINITY, 2.0, ADDSUFFIX(NPY_PI_2), 0);
@@ -1006,10 +1054,10 @@ RETTYPE ADDSUFFIX(test_catanh)(void)
10061054
TEST_EE(catanh, 0, NAN, 0, NAN);
10071055
TEST_EE(catanh, NZERO, NAN, NZERO, NAN);
10081056

1009-
TEST_RAISES(catanh, 1, 0, INFINITY, 0, FE_DIVBYZERO);
1010-
TEST_RAISES(catanh, 1, NZERO, INFINITY, NZERO, FE_DIVBYZERO);
1011-
TEST_RAISES(catanh, -1, 0, -INFINITY, 0, FE_DIVBYZERO);
1012-
TEST_RAISES(catanh, -1, NZERO, -INFINITY, NZERO, FE_DIVBYZERO);
1057+
TEST_RAISES(catanh, 1, 0, INFINITY, 0, NPY_FPE_DIVIDEBYZERO);
1058+
TEST_RAISES(catanh, 1, NZERO, INFINITY, NZERO, NPY_FPE_DIVIDEBYZERO);
1059+
TEST_RAISES(catanh, -1, 0, -INFINITY, 0, NPY_FPE_DIVIDEBYZERO);
1060+
TEST_RAISES(catanh, -1, NZERO, -INFINITY, NZERO, NPY_FPE_DIVIDEBYZERO);
10131061

10141062
TEST_EC(catanh, 2.0, INFINITY, 0, ADDSUFFIX(NPY_PI_2));
10151063
TEST_EC(catanh, 2.0, -INFINITY, 0, -ADDSUFFIX(NPY_PI_2));
@@ -1071,16 +1119,16 @@ RETTYPE ADDSUFFIX(test_ccos)(void)
10711119

10721120
/* sign of imaginary part is unspecified */
10731121
TEST_RAISES_UNSPECIFIED2(ccos, -INFINITY, 0, NAN, 0, \
1074-
NAN, NZERO, FE_INVALID);
1122+
NAN, NZERO, NPY_FPE_INVALID);
10751123

10761124
/* sign of imaginary part is unspecified */
10771125
TEST_UNSPECIFIED2(ccos, NAN, 0, NAN, 0, NAN, NZERO);
10781126
TEST_UNSPECIFIED2(ccos, NAN, NZERO, NAN, 0, NAN, NZERO);
10791127

1080-
TEST_RAISES(ccos, -INFINITY, 2.0, NAN, NAN, FE_INVALID);
1081-
TEST_RAISES(ccos, INFINITY, 2.0, NAN, NAN, FE_INVALID);
1082-
TEST_RAISES(ccos, -INFINITY, -2.0, NAN, NAN, FE_INVALID);
1083-
TEST_RAISES(ccos, INFINITY, -2.0, NAN, NAN, FE_INVALID);
1128+
TEST_RAISES(ccos, -INFINITY, 2.0, NAN, NAN, NPY_FPE_INVALID);
1129+
TEST_RAISES(ccos, INFINITY, 2.0, NAN, NAN, NPY_FPE_INVALID);
1130+
TEST_RAISES(ccos, -INFINITY, -2.0, NAN, NAN, NPY_FPE_INVALID);
1131+
TEST_RAISES(ccos, INFINITY, -2.0, NAN, NAN, NPY_FPE_INVALID);
10841132

10851133
/* can raise FE_INVALID or not */
10861134
TEST_EE(ccos, NAN, 2.0, NAN, NAN);
@@ -1110,7 +1158,7 @@ RETTYPE ADDSUFFIX(test_ccos)(void)
11101158

11111159
/* sign of real part is unspecified */
11121160
TEST_RAISES_UNSPECIFIED2(ccos, -INFINITY, INFINITY, INFINITY, NAN, \
1113-
-INFINITY, NAN, FE_INVALID);
1161+
-INFINITY, NAN, NPY_FPE_INVALID);
11141162

11151163
TEST_EE(ccos, NAN, INFINITY, INFINITY, NAN);
11161164
TEST_EE(ccos, NAN, -INFINITY, INFINITY, NAN);
@@ -1143,16 +1191,16 @@ RETTYPE ADDSUFFIX(test_csin)(void)
11431191

11441192
/* sign of imaginary part is unspecified */
11451193
TEST_RAISES_UNSPECIFIED2(csin, -INFINITY, 0, NAN, 0, \
1146-
NAN, NZERO, FE_INVALID);
1194+
NAN, NZERO, NPY_FPE_INVALID);
11471195

11481196
/* sign of imaginary part is unspecified */
11491197
TEST_UNSPECIFIED2(csin, NAN, 0, NAN, 0, NAN, NZERO);
11501198
TEST_UNSPECIFIED2(csin, NAN, NZERO, NAN, 0, NAN, NZERO);
11511199

1152-
TEST_RAISES(csin, -INFINITY, 2.0, NAN, NAN, FE_INVALID);
1153-
TEST_RAISES(csin, INFINITY, 2.0, NAN, NAN, FE_INVALID);
1154-
TEST_RAISES(csin, -INFINITY, -2.0, NAN, NAN, FE_INVALID);
1155-
TEST_RAISES(csin, INFINITY, -2.0, NAN, NAN, FE_INVALID);
1200+
TEST_RAISES(csin, -INFINITY, 2.0, NAN, NAN, NPY_FPE_INVALID);
1201+
TEST_RAISES(csin, INFINITY, 2.0, NAN, NAN, NPY_FPE_INVALID);
1202+
TEST_RAISES(csin, -INFINITY, -2.0, NAN, NAN, NPY_FPE_INVALID);
1203+
TEST_RAISES(csin, INFINITY, -2.0, NAN, NAN, NPY_FPE_INVALID);
11561204

11571205
/* can raise FE_INVALID or not */
11581206
TEST_EE(csin, NAN, 2.0, NAN, NAN);
@@ -1182,7 +1230,7 @@ RETTYPE ADDSUFFIX(test_csin)(void)
11821230

11831231
/* sign of imaginary part is unspecified */
11841232
TEST_RAISES_UNSPECIFIED2(csin, -INFINITY, INFINITY, NAN, INFINITY, \
1185-
NAN, -INFINITY, FE_INVALID);
1233+
NAN, -INFINITY, NPY_FPE_INVALID);
11861234

11871235
/* sign of imaginary part is unspecified */
11881236
TEST_UNSPECIFIED2(csin, NAN, INFINITY, NAN, INFINITY, NAN, -INFINITY);
@@ -1213,8 +1261,8 @@ RETTYPE ADDSUFFIX(test_ctan)(void)
12131261
TEST_EE(ctan, NZERO, 0, NZERO, 0);
12141262
TEST_EE(ctan, NZERO, NZERO, NZERO, NZERO);
12151263

1216-
TEST_RAISES(ctan, -INFINITY, 2.0, NAN, NAN, FE_INVALID);
1217-
TEST_RAISES(ctan, -INFINITY, -2.0, NAN, NAN, FE_INVALID);
1264+
TEST_RAISES(ctan, -INFINITY, 2.0, NAN, NAN, NPY_FPE_INVALID);
1265+
TEST_RAISES(ctan, -INFINITY, -2.0, NAN, NAN, NPY_FPE_INVALID);
12181266

12191267
/* can raise FE_INVALID or not */
12201268
TEST_EE(ctan, NAN, 2.0, NAN, NAN);
@@ -1269,16 +1317,16 @@ RETTYPE ADDSUFFIX(test_ccosh)(void)
12691317

12701318
/* sign of imaginary part is unspecified */
12711319
TEST_RAISES_UNSPECIFIED2(ccosh, 0, INFINITY, NAN, 0, \
1272-
NAN, NZERO, FE_INVALID);
1320+
NAN, NZERO, NPY_FPE_INVALID);
12731321

12741322
/* sign of imaginary part is unspecified */
12751323
TEST_UNSPECIFIED2(ccosh, 0, NAN, NAN, 0, NAN, NZERO);
12761324
TEST_UNSPECIFIED2(ccosh, NZERO, NAN, NAN, 0, NAN, NZERO);
12771325

1278-
TEST_RAISES(ccosh, 2.0, INFINITY, NAN, NAN, FE_INVALID);
1279-
TEST_RAISES(ccosh, 2.0, -INFINITY, NAN, NAN, FE_INVALID);
1280-
TEST_RAISES(ccosh, -2.0, INFINITY, NAN, NAN, FE_INVALID);
1281-
TEST_RAISES(ccosh, -2.0, -INFINITY, NAN, NAN, FE_INVALID);
1326+
TEST_RAISES(ccosh, 2.0, INFINITY, NAN, NAN, NPY_FPE_INVALID);
1327+
TEST_RAISES(ccosh, 2.0, -INFINITY, NAN, NAN, NPY_FPE_INVALID);
1328+
TEST_RAISES(ccosh, -2.0, INFINITY, NAN, NAN, NPY_FPE_INVALID);
1329+
TEST_RAISES(ccosh, -2.0, -INFINITY, NAN, NAN, NPY_FPE_INVALID);
12821330

12831331
/* can raise FE_INVALID or not */
12841332
TEST_EE(ccosh, 2.0, NAN, NAN, NAN);
@@ -1308,7 +1356,7 @@ RETTYPE ADDSUFFIX(test_ccosh)(void)
13081356

13091357
/* sign of real part is unspecified */
13101358
TEST_RAISES_UNSPECIFIED2(ccosh, INFINITY, INFINITY, INFINITY, NAN, \
1311-
-INFINITY, NAN, FE_INVALID);
1359+
-INFINITY, NAN, NPY_FPE_INVALID);
13121360

13131361
TEST_EE(ccosh, INFINITY, NAN, INFINITY, NAN);
13141362
TEST_EE(ccosh, -INFINITY, NAN, INFINITY, NAN);
@@ -1341,16 +1389,16 @@ RETTYPE ADDSUFFIX(test_csinh)(void)
13411389

13421390
/* sign of real part is unspecified */
13431391
TEST_RAISES_UNSPECIFIED2(csinh, 0, INFINITY, 0, NAN, \
1344-
NZERO, NAN, FE_INVALID);
1392+
NZERO, NAN, NPY_FPE_INVALID);
13451393

13461394
/* sign of real part is unspecified */
13471395
TEST_UNSPECIFIED2(csinh, 0, NAN, 0, NAN, NZERO, NAN);
13481396
TEST_UNSPECIFIED2(csinh, NZERO, NAN, 0, NAN, NZERO, NAN);
13491397

1350-
TEST_RAISES(csinh, 2.0, INFINITY, NAN, NAN, FE_INVALID);
1351-
TEST_RAISES(csinh, 2.0, -INFINITY, NAN, NAN, FE_INVALID);
1352-
TEST_RAISES(csinh, -2.0, INFINITY, NAN, NAN, FE_INVALID);
1353-
TEST_RAISES(csinh, -2.0, -INFINITY, NAN, NAN, FE_INVALID);
1398+
TEST_RAISES(csinh, 2.0, INFINITY, NAN, NAN, NPY_FPE_INVALID);
1399+
TEST_RAISES(csinh, 2.0, -INFINITY, NAN, NAN, NPY_FPE_INVALID);
1400+
TEST_RAISES(csinh, -2.0, INFINITY, NAN, NAN, NPY_FPE_INVALID);
1401+
TEST_RAISES(csinh, -2.0, -INFINITY, NAN, NAN, NPY_FPE_INVALID);
13541402

13551403
/* can raise FE_INVALID or not */
13561404
TEST_EE(csinh, 2.0, NAN, NAN, NAN);
@@ -1380,7 +1428,7 @@ RETTYPE ADDSUFFIX(test_csinh)(void)
13801428

13811429
/* sign of real part is unspecified */
13821430
TEST_RAISES_UNSPECIFIED2(csinh, INFINITY, INFINITY, INFINITY, NAN, \
1383-
-INFINITY, NAN, FE_INVALID);
1431+
-INFINITY, NAN, NPY_FPE_INVALID);
13841432

13851433
/* sign of real part is unspecified */
13861434
TEST_UNSPECIFIED2(csinh, INFINITY, NAN, INFINITY, NAN, -INFINITY, NAN);
@@ -1411,8 +1459,8 @@ RETTYPE ADDSUFFIX(test_ctanh)(void)
14111459
TEST_EE(ctanh, NZERO, 0, NZERO, 0);
14121460
TEST_EE(ctanh, NZERO, NZERO, NZERO, NZERO);
14131461

1414-
TEST_RAISES(ctanh, 2.0, INFINITY, NAN, NAN, FE_INVALID);
1415-
TEST_RAISES(ctanh, -2.0, INFINITY, NAN, NAN, FE_INVALID);
1462+
TEST_RAISES(ctanh, 2.0, INFINITY, NAN, NAN, NPY_FPE_INVALID);
1463+
TEST_RAISES(ctanh, -2.0, INFINITY, NAN, NAN, NPY_FPE_INVALID);
14161464

14171465
/* can raise FE_INVALID or not */
14181466
TEST_EE(ctanh, 2.0, NAN, NAN, NAN);
@@ -1466,8 +1514,8 @@ RETTYPE ADDSUFFIX(test_cexp)(void)
14661514
TEST_EE(cexp, NZERO, 0, 1, 0);
14671515
TEST_EE(cexp, NZERO, NZERO, 1, NZERO);
14681516

1469-
TEST_RAISES(cexp, 2.0, INFINITY, NAN, NAN, FE_INVALID);
1470-
TEST_RAISES(cexp, 2.0, -INFINITY, NAN, NAN, FE_INVALID);
1517+
TEST_RAISES(cexp, 2.0, INFINITY, NAN, NAN, NPY_FPE_INVALID);
1518+
TEST_RAISES(cexp, 2.0, -INFINITY, NAN, NAN, NPY_FPE_INVALID);
14711519

14721520
/* can raise FE_INVALID or not */
14731521
TEST_EE(cexp, 42.0, NAN, NAN, NAN);
@@ -1501,7 +1549,7 @@ RETTYPE ADDSUFFIX(test_cexp)(void)
15011549

15021550
/* sign of real part is unspecifed */
15031551
TEST_RAISES_UNSPECIFIED2(cexp, INFINITY, INFINITY, INFINITY, \
1504-
NAN, -INFINITY, NAN, FE_INVALID);
1552+
NAN, -INFINITY, NAN, NPY_FPE_INVALID);
15051553

15061554
/* signs of both parts are unspecified */
15071555
TEST_UNSPECIFIED4(cexp, -INFINITY, NAN, 0, 0, NZERO, 0, \
@@ -1534,11 +1582,11 @@ RETTYPE ADDSUFFIX(test_clog)(void)
15341582
{
15351583
INIT_FUNC();
15361584
/* clog(conj(z)) = conj(clog(z)) */
1537-
TEST_RAISES(clog, NZERO, 0, -INFINITY, ADDSUFFIX(NPY_PI), FE_DIVBYZERO);
1538-
TEST_RAISES(clog, NZERO, NZERO, -INFINITY, -ADDSUFFIX(NPY_PI), FE_DIVBYZERO);
1585+
TEST_RAISES(clog, NZERO, 0, -INFINITY, ADDSUFFIX(NPY_PI), NPY_FPE_DIVIDEBYZERO);
1586+
TEST_RAISES(clog, NZERO, NZERO, -INFINITY, -ADDSUFFIX(NPY_PI), NPY_FPE_DIVIDEBYZERO);
15391587

1540-
TEST_RAISES(clog, 0, 0, -INFINITY, 0, FE_DIVBYZERO);
1541-
TEST_RAISES(clog, 0, NZERO, -INFINITY, NZERO, FE_DIVBYZERO);
1588+
TEST_RAISES(clog, 0, 0, -INFINITY, 0, NPY_FPE_DIVIDEBYZERO);
1589+
TEST_RAISES(clog, 0, NZERO, -INFINITY, NZERO, NPY_FPE_DIVIDEBYZERO);
15421590

15431591
TEST_EC(clog, 2.0, INFINITY, INFINITY, ADDSUFFIX(NPY_PI_2));
15441592
TEST_EC(clog, 2.0, -INFINITY, INFINITY, -ADDSUFFIX(NPY_PI_2));

0 commit comments

Comments
 (0)