inline T asymptotic_bessel_j_large_x_2(T v, T x) { // See A&S 9.2.19. BOOST_MATH_STD_USING // Get the phase and amplitude: T ampl = asymptotic_bessel_amplitude(v, x); T phase = asymptotic_bessel_phase_mx(v, x); BOOST_MATH_INSTRUMENT_VARIABLE(ampl); BOOST_MATH_INSTRUMENT_VARIABLE(phase); // // Calculate the sine of the phase, using // sine/cosine addition rules to factor in // the x - PI(v/2 + 1/4) term not added to the // phase when we calculated it. // BOOST_MATH_INSTRUMENT_CODE(cos(phase)); BOOST_MATH_INSTRUMENT_CODE(cos(x)); BOOST_MATH_INSTRUMENT_CODE(sin(phase)); BOOST_MATH_INSTRUMENT_CODE(sin(x)); T cx = cos(x); T sx = sin(x); T ci = cos_pi(v / 2 + 0.25f); T si = sin_pi(v / 2 + 0.25f); T sin_phase = cos(phase) * (cx * ci + sx * si) - sin(phase) * (sx * ci - cx * si); BOOST_MATH_INSTRUMENT_VARIABLE(sin_phase); return sin_phase * ampl; }
static npy_cdouble rotate_jy(npy_cdouble j, npy_cdouble y, double v) { npy_cdouble w; double c = cos_pi(v); double s = sin_pi(v); w.real = j.real * c - y.real * s; w.imag = j.imag * c - y.imag * s; return w; }
static npy_cdouble rotate(npy_cdouble z, double v) { npy_cdouble w; double c = cos_pi(v); double s = sin_pi(v); w.real = z.real*c - z.imag*s; w.imag = z.real*s + z.imag*c; return w; }
int test_main(int, char* []) { int i; TEST_POLICY_SF(tgamma(3.0)); TEST_POLICY_SF(tgamma1pm1(0.25)); TEST_POLICY_SF(lgamma(50.0)); TEST_POLICY_SF(lgamma(50.0, &i)); TEST_POLICY_SF(digamma(12.0)); TEST_POLICY_SF(tgamma_ratio(12.0, 13.5)); TEST_POLICY_SF(tgamma_delta_ratio(100.0, 0.25)); TEST_POLICY_SF(factorial<double>(8)); TEST_POLICY_SF(unchecked_factorial<double>(3)); TEST_POLICY_SF(double_factorial<double>(5)); TEST_POLICY_SF(rising_factorial(20.5, 5)); TEST_POLICY_SF(falling_factorial(10.2, 7)); TEST_POLICY_SF(tgamma(12.0, 13.0)); TEST_POLICY_SF(tgamma_lower(12.0, 13.0)); TEST_POLICY_SF(gamma_p(12.0, 13.0)); TEST_POLICY_SF(gamma_q(12.0, 15.0)); TEST_POLICY_SF(gamma_p_inv(12.0, 0.25)); TEST_POLICY_SF(gamma_q_inv(15.0, 0.25)); TEST_POLICY_SF(gamma_p_inva(12.0, 0.25)); TEST_POLICY_SF(gamma_q_inva(12.0, 0.25)); TEST_POLICY_SF(erf(2.5)); TEST_POLICY_SF(erfc(2.5)); TEST_POLICY_SF(erf_inv(0.25)); TEST_POLICY_SF(erfc_inv(0.25)); TEST_POLICY_SF(beta(12.0, 15.0)); TEST_POLICY_SF(beta(12.0, 15.0, 0.25)); TEST_POLICY_SF(betac(12.0, 15.0, 0.25)); TEST_POLICY_SF(ibeta(12.0, 15.0, 0.25)); TEST_POLICY_SF(ibetac(12.0, 15.0, 0.25)); TEST_POLICY_SF(ibeta_inv(12.0, 15.0, 0.25)); TEST_POLICY_SF(ibetac_inv(12.0, 15.0, 0.25)); TEST_POLICY_SF(ibeta_inva(12.0, 0.75, 0.25)); TEST_POLICY_SF(ibetac_inva(12.0, 0.75, 0.25)); TEST_POLICY_SF(ibeta_invb(12.0, 0.75, 0.25)); TEST_POLICY_SF(ibetac_invb(12.0, 0.75, 0.25)); TEST_POLICY_SF(gamma_p_derivative(12.0, 15.0)); TEST_POLICY_SF(ibeta_derivative(12.0, 15.75, 0.25)); TEST_POLICY_SF(fpclassify(12.0)); TEST_POLICY_SF(isfinite(12.0)); TEST_POLICY_SF(isnormal(12.0)); TEST_POLICY_SF(isnan(12.0)); TEST_POLICY_SF(isinf(12.0)); TEST_POLICY_SF(log1p(0.0025)); TEST_POLICY_SF(expm1(0.0025)); TEST_POLICY_SF(cbrt(30.0)); TEST_POLICY_SF(sqrt1pm1(0.0025)); TEST_POLICY_SF(powm1(1.0025, 12.0)); TEST_POLICY_SF(legendre_p(5, 0.75)); TEST_POLICY_SF(legendre_p(7, 3, 0.75)); TEST_POLICY_SF(legendre_q(5, 0.75)); TEST_POLICY_SF(legendre_next(2, 0.25, 12.0, 5.0)); TEST_POLICY_SF(legendre_next(2, 2, 0.25, 12.0, 5.0)); TEST_POLICY_SF(laguerre(5, 12.2)); TEST_POLICY_SF(laguerre(7, 3, 5.0)); TEST_POLICY_SF(laguerre_next(2, 5.0, 12.0, 5.0)); TEST_POLICY_SF(laguerre_next(5, 3, 5.0, 20.0, 10.0)); TEST_POLICY_SF(hermite(1, 2.0)); TEST_POLICY_SF(hermite_next(2, 2.0, 3.0, 2.0)); TEST_POLICY_SF(spherical_harmonic_r(5, 4, 0.75, 0.25)); TEST_POLICY_SF(spherical_harmonic_i(5, 4, 0.75, 0.25)); TEST_POLICY_SF(ellint_1(0.25)); TEST_POLICY_SF(ellint_1(0.25, 0.75)); TEST_POLICY_SF(ellint_2(0.25)); TEST_POLICY_SF(ellint_2(0.25, 0.75)); TEST_POLICY_SF(ellint_3(0.25, 0.75)); TEST_POLICY_SF(ellint_3(0.25, 0.125, 0.75)); TEST_POLICY_SF(ellint_rc(3.0, 5.0)); TEST_POLICY_SF(ellint_rd(2.0, 3.0, 4.0)); TEST_POLICY_SF(ellint_rf(2.0, 3.0, 4.0)); TEST_POLICY_SF(ellint_rj(2.0, 3.0, 5.0, 0.25)); TEST_POLICY_SF(hypot(5.0, 3.0)); TEST_POLICY_SF(sinc_pi(3.0)); TEST_POLICY_SF(sinhc_pi(2.0)); TEST_POLICY_SF(asinh(12.0)); TEST_POLICY_SF(acosh(5.0)); TEST_POLICY_SF(atanh(0.75)); TEST_POLICY_SF(sin_pi(5.0)); TEST_POLICY_SF(cos_pi(6.0)); TEST_POLICY_SF(cyl_neumann(2.0, 5.0)); TEST_POLICY_SF(cyl_neumann(2, 5.0)); TEST_POLICY_SF(cyl_bessel_j(2.0, 5.0)); TEST_POLICY_SF(cyl_bessel_j(2, 5.0)); TEST_POLICY_SF(cyl_bessel_i(3.0, 5.0)); TEST_POLICY_SF(cyl_bessel_i(3, 5.0)); TEST_POLICY_SF(cyl_bessel_k(3.0, 5.0)); TEST_POLICY_SF(cyl_bessel_k(3, 5.0)); TEST_POLICY_SF(sph_bessel(3, 5.0)); TEST_POLICY_SF(sph_bessel(3, 5)); TEST_POLICY_SF(sph_neumann(3, 5.0)); TEST_POLICY_SF(sph_neumann(3, 5)); return 0; }