bool a_fcn(T& obj, const T x[12]) { static T matr[9], f; static T g; f = x[1] + x[0]; matr[0] = x[1] - x[0]; matr[1] = (2.0*x[2] - f)*sqrt3; matr[2] = (3.0*x[3] - x[2] - f)*sqrt6; f = x[5] + x[4]; matr[3] = x[5] - x[4]; matr[4] = (2.0*x[6] - f)*sqrt3; matr[5] = (3.0*x[7] - x[6] - f)*sqrt6; f = x[9] + x[8]; matr[6] = x[9] - x[8]; matr[7] = (2.0*x[10] - f)*sqrt3; matr[8] = (3.0*x[11] - x[10] - f)*sqrt6; g = matr[0]*(matr[4]*matr[8] - matr[5]*matr[7]) + matr[1]*(matr[5]*matr[6] - matr[3]*matr[8]) + matr[2]*(matr[3]*matr[7] - matr[4]*matr[6]); // This line is a problem for libtaylor, remove it because in valid inputs // this line never get invoked. //if (g <= epsilonf) { obj = g; return true; } f = matr[0]*matr[0] + matr[1]*matr[1] + matr[2]*matr[2] + matr[3]*matr[3] + matr[4]*matr[4] + matr[5]*matr[5] + matr[6]*matr[6] + matr[7]*matr[7] + matr[8]*matr[8]; obj = a * f * rcbrt(g*g); return false; }
__device__ void double_precision_math_functions() { int iX; double fX, fY; acos(1.0); acosh(1.0); asin(0.0); asinh(0.0); atan(0.0); atan2(0.0, 1.0); atanh(0.0); cbrt(0.0); ceil(0.0); copysign(1.0, -2.0); cos(0.0); cosh(0.0); cospi(0.0); cyl_bessel_i0(0.0); cyl_bessel_i1(0.0); erf(0.0); erfc(0.0); erfcinv(2.0); erfcx(0.0); erfinv(1.0); exp(0.0); exp10(0.0); exp2(0.0); expm1(0.0); fabs(1.0); fdim(1.0, 0.0); floor(0.0); fma(1.0, 2.0, 3.0); fmax(0.0, 0.0); fmin(0.0, 0.0); fmod(0.0, 1.0); frexp(0.0, &iX); hypot(1.0, 0.0); ilogb(1.0); isfinite(0.0); isinf(0.0); isnan(0.0); j0(0.0); j1(0.0); jn(-1.0, 1.0); ldexp(0.0, 0); lgamma(1.0); llrint(0.0); llround(0.0); log(1.0); log10(1.0); log1p(-1.0); log2(1.0); logb(1.0); lrint(0.0); lround(0.0); modf(0.0, &fX); nan("1"); nearbyint(0.0); nextafter(0.0, 0.0); fX = 1.0; norm(1, &fX); norm3d(1.0, 0.0, 0.0); norm4d(1.0, 0.0, 0.0, 0.0); normcdf(0.0); normcdfinv(1.0); pow(1.0, 0.0); rcbrt(1.0); remainder(2.0, 1.0); remquo(1.0, 2.0, &iX); rhypot(0.0, 1.0); rint(1.0); fX = 1.0; rnorm(1, &fX); rnorm3d(0.0, 0.0, 1.0); rnorm4d(0.0, 0.0, 0.0, 1.0); round(0.0); rsqrt(1.0); scalbln(0.0, 1); scalbn(0.0, 1); signbit(1.0); sin(0.0); sincos(0.0, &fX, &fY); sincospi(0.0, &fX, &fY); sinh(0.0); sinpi(0.0); sqrt(0.0); tan(0.0); tanh(0.0); tgamma(2.0); trunc(0.0); y0(1.0); y1(1.0); yn(1, 1.0); }