npy_cdouble cbesj_wrap_e( double v, npy_cdouble z) { int n = 1; int kode = 2; int nz, ierr; int sign = 1; npy_cdouble cy_j, cy_y, cwork; cy_j.real = NPY_NAN; cy_j.imag = NPY_NAN; cy_y.real = NPY_NAN; cy_y.imag = NPY_NAN; if (npy_isnan(v) || npy_isnan(z.real) || npy_isnan(z.imag)) { return cy_j; } if (v < 0) { v = -v; sign = -1; } F_FUNC(zbesj,ZBESJ)(CADDR(z), &v, &kode, &n, CADDR(cy_j), &nz, &ierr); DO_SFERR("jve:", &cy_j); if (sign == -1) { if (!reflect_jy(&cy_j, v)) { F_FUNC(zbesy,ZBESY)(CADDR(z), &v, &kode, &n, CADDR(cy_y), &nz, CADDR(cwork), &ierr); DO_SFERR("jve(yve):", &cy_y); cy_j = rotate_jy(cy_j, cy_y, v); } } return cy_j; }
npy_cdouble cbesj_wrap( double v, npy_cdouble z) { int n = 1; int kode = 1; int nz, ierr; int sign = 1; npy_cdouble cy_j, cy_y, cwork; cy_j.real = NPY_NAN; cy_j.imag = NPY_NAN; cy_y.real = NPY_NAN; cy_y.imag = NPY_NAN; if (v < 0) { v = -v; sign = -1; } F_FUNC(zbesj,ZBESJ)(CADDR(z), &v, &kode, &n, CADDR(cy_j), &nz, &ierr); DO_SFERR("jv:", &cy_j); if (ierr == 2) { /* overflow */ cy_j = cbesj_wrap_e(v, z); cy_j.real *= NPY_INFINITY; cy_j.imag *= NPY_INFINITY; } if (sign == -1) { if (!reflect_jy(&cy_j, v)) { F_FUNC(zbesy,ZBESY)(CADDR(z), &v, &kode, &n, CADDR(cy_y), &nz, CADDR(cwork), &ierr); DO_SFERR("jv(yv):", &cy_y); cy_j = rotate_jy(cy_j, cy_y, v); } } return cy_j; }
npy_cdouble cbesy_wrap_e( double v, npy_cdouble z) { int n = 1; int kode = 2; int nz, ierr; int sign = 1; npy_cdouble cy_y, cy_j, cwork; cy_j.real = NPY_NAN; cy_j.imag = NPY_NAN; cy_y.real = NPY_NAN; cy_y.imag = NPY_NAN; if (v < 0) { v = -v; sign = -1; } F_FUNC(zbesy,ZBESY)(CADDR(z), &v, &kode, &n, CADDR(cy_y), &nz, CADDR(cwork), &ierr); DO_SFERR("yve:", &cy_y); if (ierr == 2) { if (z.real >= 0 && z.imag == 0) { /* overflow */ cy_y.real = NPY_INFINITY; cy_y.imag = 0; } } if (sign == -1) { if (!reflect_jy(&cy_y, v)) { F_FUNC(zbesj,ZBESJ)(CADDR(z), &v, &kode, &n, CADDR(cy_j), &nz, &ierr); DO_SFERR("yv(jv):", &cy_j); cy_y = rotate_jy(cy_y, cy_j, -v); } } return cy_y; }
npy_cdouble cbesy_wrap( double v, npy_cdouble z) { int n = 1; int kode = 1; int nz, ierr; int sign = 1; npy_cdouble cy_y, cy_j, cwork; cy_j.real = NPY_NAN; cy_j.imag = NPY_NAN; cy_y.real = NPY_NAN; cy_y.imag = NPY_NAN; if (npy_isnan(v) || npy_isnan(z.real) || npy_isnan(z.imag)) { return cy_y; } if (v < 0) { v = -v; sign = -1; } if (z.real == 0 && z.imag == 0) { /* overflow */ cy_y.real = -NPY_INFINITY; cy_y.imag = 0; sf_error("yv", SF_ERROR_OVERFLOW, NULL); } else { F_FUNC(zbesy,ZBESY)(CADDR(z), &v, &kode, &n, CADDR(cy_y), &nz, CADDR(cwork), &ierr); DO_SFERR("yv:", &cy_y); if (ierr == 2) { if (z.real >= 0 && z.imag == 0) { /* overflow */ cy_y.real = -NPY_INFINITY; cy_y.imag = 0; } } } if (sign == -1) { if (!reflect_jy(&cy_y, v)) { F_FUNC(zbesj,ZBESJ)(CADDR(z), &v, &kode, &n, CADDR(cy_j), &nz, &ierr); DO_SFERR("yv(jv):", &cy_j); cy_y = rotate_jy(cy_y, cy_j, -v); } } return cy_y; }
Py_complex cbesj_wrap_e( double v, Py_complex z) { int n = 1; int kode = 2; int nz, ierr; int sign = 1; Py_complex cy_j, cy_y, cwork; if (v < 0) { v = -v; sign = -1; } F_FUNC(zbesj,ZBESJ)(CADDR(z), &v, &kode, &n, CADDR(cy_j), &nz, &ierr); DO_MTHERR("jve:", &cy_j); if (sign == -1) { if (!reflect_jy(&cy_j, v)) { F_FUNC(zbesy,ZBESY)(CADDR(z), &v, &kode, &n, CADDR(cy_y), &nz, CADDR(cwork), &ierr); DO_MTHERR("jve(yve):", &cy_y); cy_j = rotate_jy(cy_j, cy_y, v); } } return cy_j; }