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

Skip to content

Commit d62c590

Browse files
committed
ENH: Check for, and use all C99 complex functions if available
Previously, a number of functions operating on complex numbers from C99 were checked for during the configuration stage. If they existed, they were used. This commit extends this to all of the C99 complex functions. All of our local implementations are now in npymath, instead of being spread between npymath and umath/funcs.inc.src. Functions that numpy has but C99 does not are still in funcs.inc.src.
1 parent f442ead commit d62c590

4 files changed

Lines changed: 391 additions & 331 deletions

File tree

numpy/core/include/numpy/npy_math.h

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ float npy_nextafterf(float x, float y);
257257
float npy_spacingf(float x);
258258

259259
/*
260-
* float C99 math functions
260+
* long double C99 math functions
261261
*/
262262

263263
npy_longdouble npy_sinl(npy_longdouble x);
@@ -422,8 +422,18 @@ npy_cdouble npy_ccos(npy_cdouble z);
422422
npy_cdouble npy_csin(npy_cdouble z);
423423
npy_cdouble npy_ctan(npy_cdouble z);
424424

425+
npy_cdouble npy_ccosh(npy_cdouble z);
426+
npy_cdouble npy_csinh(npy_cdouble z);
425427
npy_cdouble npy_ctanh(npy_cdouble z);
426428

429+
npy_cdouble npy_cacos(npy_cdouble z);
430+
npy_cdouble npy_casin(npy_cdouble z);
431+
npy_cdouble npy_catan(npy_cdouble z);
432+
433+
npy_cdouble npy_cacosh(npy_cdouble z);
434+
npy_cdouble npy_casinh(npy_cdouble z);
435+
npy_cdouble npy_catanh(npy_cdouble z);
436+
427437
/*
428438
* Single precision complex functions
429439
*/
@@ -440,8 +450,19 @@ npy_cfloat npy_ccosf(npy_cfloat z);
440450
npy_cfloat npy_csinf(npy_cfloat z);
441451
npy_cfloat npy_ctanf(npy_cfloat z);
442452

453+
npy_cfloat npy_ccoshf(npy_cfloat z);
454+
npy_cfloat npy_csinhf(npy_cfloat z);
443455
npy_cfloat npy_ctanhf(npy_cfloat z);
444456

457+
npy_cfloat npy_cacosf(npy_cfloat z);
458+
npy_cfloat npy_casinf(npy_cfloat z);
459+
npy_cfloat npy_catanf(npy_cfloat z);
460+
461+
npy_cfloat npy_cacoshf(npy_cfloat z);
462+
npy_cfloat npy_casinhf(npy_cfloat z);
463+
npy_cfloat npy_catanhf(npy_cfloat z);
464+
465+
445466
/*
446467
* Extended precision complex functions
447468
*/
@@ -458,8 +479,19 @@ npy_clongdouble npy_ccosl(npy_clongdouble z);
458479
npy_clongdouble npy_csinl(npy_clongdouble z);
459480
npy_clongdouble npy_ctanl(npy_clongdouble z);
460481

482+
npy_clongdouble npy_ccoshl(npy_clongdouble z);
483+
npy_clongdouble npy_csinhl(npy_clongdouble z);
461484
npy_clongdouble npy_ctanhl(npy_clongdouble z);
462485

486+
npy_clongdouble npy_cacosl(npy_clongdouble z);
487+
npy_clongdouble npy_casinl(npy_clongdouble z);
488+
npy_clongdouble npy_catanl(npy_clongdouble z);
489+
490+
npy_clongdouble npy_cacoshl(npy_clongdouble z);
491+
npy_clongdouble npy_casinhl(npy_clongdouble z);
492+
npy_clongdouble npy_catanhl(npy_clongdouble z);
493+
494+
463495
/*
464496
* Functions that set the floating point error
465497
* status word.

numpy/core/setup_common.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,9 @@ def check_api_version(apiversion, codegen_dir):
143143

144144
C99_COMPLEX_TYPES = ['complex double', 'complex float', 'complex long double']
145145

146-
C99_COMPLEX_FUNCS = ['creal', 'cimag', 'cabs', 'carg', 'cexp', 'csqrt', 'clog',
147-
'ccos', 'csin', 'cpow', 'ctan', 'ctanh']
146+
C99_COMPLEX_FUNCS = ['creal', 'cimag', 'cabs', 'carg', 'cexp', 'clog', 'csqrt',
147+
'cpow', 'ccos', 'csin', 'ctan', 'ccosh', 'csinh', 'ctanh',
148+
'cacos', 'casin', 'catan', 'cacosh', 'casinh', 'catanh']
148149

149150
def fname2def(name):
150151
return "HAVE_%s" % name.upper()

0 commit comments

Comments
 (0)