22#error "This file must not be included by compiled programs."
25#include <plugins/include/clad/Differentiator/Differentiator.h>
38namespace custom_derivatives {
106#ifdef R__HAS_MATHMORE
128template <
typename T,
typename U>
165template <
typename T,
typename U>
185template <
typename T,
typename U>
204template <
typename T,
typename U>
208 *
d_x += t.pushforward *
p;
210 *
d_y += t.pushforward *
p;
255 return {3.1415926535897931, 0.};
260 return {2.3025850929940459, 0.};
274 static double p1[5] = {0.4259894875,-0.1249762550, 0.03984243700, -0.006298287635, 0.001511162253};
275 static double q1[5] = {1.0 ,-0.3388260629, 0.09594393323, -0.01608042283, 0.003778942063};
277 static double p2[5] = {0.1788541609, 0.1173957403, 0.01488850518, -0.001394989411, 0.0001283617211};
278 static double q2[5] = {1.0 , 0.7428795082, 0.3153932961, 0.06694219548, 0.008790609714};
280 static double p3[5] = {0.1788544503, 0.09359161662,0.006325387654, 0.00006611667319,-0.000002031049101};
281 static double q3[5] = {1.0 , 0.6097809921, 0.2560616665, 0.04746722384, 0.006957301675};
283 static double p4[5] = {0.9874054407, 118.6723273, 849.2794360, -743.7792444, 427.0262186};
284 static double q4[5] = {1.0 , 106.8615961, 337.6496214, 2016.712389, 1597.063511};
286 static double p5[5] = {1.003675074, 167.5702434, 4789.711289, 21217.86767, -22324.94910};
287 static double q5[5] = {1.0 , 156.9424537, 3745.310488, 9834.698876, 66924.28357};
289 static double p6[5] = {1.000827619, 664.9143136, 62972.92665, 475554.6998, -5743609.109};
290 static double q6[5] = {1.0 , 651.4101098, 56974.73333, 165917.4725, -2815759.939};
292 static double a1[3] = {0.04166666667,-0.01996527778, 0.02709538966};
294 static double a2[2] = {-1.845568670,-4.284640743};
296 const double _const0 = 0.3989422803;
297 double v = (
x - x0) / xi;
301 double u = ::std::exp(
v + 1.);
304 const double ue = ::std::exp(-1 /
u);
305 const double us = ::std::sqrt(
u);
324 _r4 +=
_r_d2 * clad::custom_derivatives::sqrt_pushforward(
u, 1.).pushforward;
340 double u = ::std::exp(-
v - 1);
343 double _t8 = ::std::exp(-
u);
344 double _t7 = ::std::sqrt(
u);
357 clad::custom_derivatives::sqrt_pushforward(
u, 1.).pushforward;
462 }
else if (
v < 300) {
492 double _t25 = ::std::log(
v);
493 double _t24 = (
v + 1);
522 double _r0 =
_d_v * -((
x - x0) / (xi * xi));
529 static double p1[5] = {0.2514091491e+0,-0.6250580444e-1, 0.1458381230e-1,-0.2108817737e-2, 0.7411247290e-3};
530 static double q1[5] = {1.0 ,-0.5571175625e-2, 0.6225310236e-1,-0.3137378427e-2, 0.1931496439e-2};
532 static double p2[4] = {0.2868328584e+0, 0.3564363231e+0, 0.1523518695e+0, 0.2251304883e-1};
533 static double q2[4] = {1.0 , 0.6191136137e+0, 0.1720721448e+0, 0.2278594771e-1};
535 static double p3[4] = {0.2868329066e+0, 0.3003828436e+0, 0.9950951941e-1, 0.8733827185e-2};
536 static double q3[4] = {1.0 , 0.4237190502e+0, 0.1095631512e+0, 0.8693851567e-2};
538 static double p4[4] = {0.1000351630e+1, 0.4503592498e+1, 0.1085883880e+2, 0.7536052269e+1};
539 static double q4[4] = {1.0 , 0.5539969678e+1, 0.1933581111e+2, 0.2721321508e+2};
541 static double p5[4] = {0.1000006517e+1, 0.4909414111e+2, 0.8505544753e+2, 0.1532153455e+3};
542 static double q5[4] = {1.0 , 0.5009928881e+2, 0.1399819104e+3, 0.4200002909e+3};
544 static double p6[4] = {0.1000000983e+1, 0.1329868456e+3, 0.9162149244e+3,-0.9605054274e+3};
545 static double q6[4] = {1.0 , 0.1339887843e+3, 0.1055990413e+4, 0.5532224619e+3};
547 static double a1[4] = {0 ,-0.4583333333e+0, 0.6675347222e+0,-0.1641741416e+1};
548 static double a2[4] = {0 , 1.0 ,-0.4227843351e+0,-0.2043403138e+1};
551 const double v = (
x - x0) / xi;
555 const double _const0 = 0.3989422803;
556 double u = ::std::exp(
v + 1);
557 double _t3 = ::std::exp(-1. /
u);
558 double _t2 = ::std::sqrt(
u);
561 double _r3 =
_r2 * -(-1. / (
u *
u));
565 clad::custom_derivatives::sqrt_pushforward(
u, 1.).pushforward;
573 double u = ::std::exp(-
v - 1);
574 double _t8 = ::std::exp(-
u);
575 double _t7 = ::std::sqrt(
u);
582 _r8 +=
_r7 * clad::custom_derivatives::sqrt_pushforward(
u, 1.).pushforward;
638 }
else if (
v < 300) {
653 double _t25 = ::std::log(
v);
654 double _t24 = (
v + 1);
656 double u = 1. /
_t23;
676#ifdef R__HAS_MATHMORE
683 constexpr double kMACHEP = 1.11022302462515654042363166809e-16;
684 constexpr double kMAXLOG = 709.782712893383973096206318587;
685 constexpr double kMINLOG = -708.396418532264078748994506896;
686 constexpr double kMAXSTIR = 108.116855767857671821730036754;
687 constexpr double kMAXLGM = 2.556348e305;
688 constexpr double kBig = 4.503599627370496e15;
689 constexpr double kBiginv = 2.22044604925031308085e-16;
697 clad::tape<double>
_t7 = {};
698 clad::tape<double>
_t8 = {};
699 clad::tape<double>
_t9 = {};
705 if ((
x > 1.) && (
x >
a)) {
714 ax =
a *
_t1 -
x - ::std::lgamma(
a);
731 unsigned long _t6 = 0;
806 constexpr double kMACHEP = 1.11022302462515654042363166809e-16;
807 constexpr double kMAXLOG = 709.782712893383973096206318587;
808 constexpr double kMINLOG = -708.396418532264078748994506896;
809 constexpr double kMAXSTIR = 108.116855767857671821730036754;
810 constexpr double kMAXLGM = 2.556348e305;
811 constexpr double kBig = 4.503599627370496e15;
812 constexpr double kBiginv = 2.22044604925031308085e-16;
827 clad::tape<double>
_t12 = {};
828 clad::tape<double>
_t13 = {};
829 clad::tape<double>
_t14 = {};
830 clad::tape<double>
_t15 = {};
831 clad::tape<double>
_t16 = {};
832 clad::tape<double>
_t17 = {};
833 clad::tape<double>
_t19 = {};
834 clad::tape<double>
_t20 = {};
835 clad::tape<double>
_t21 = {};
836 clad::tape<double>
_t22 = {};
837 clad::tape<double>
_t23 = {};
838 clad::tape<double>
_t24 = {};
839 clad::tape<double>
_t25 = {};
840 clad::tape<double>
_t26 = {};
841 clad::tape<double>
_t27 = {};
842 clad::tape<bool>
_t29 = {};
843 clad::tape<double>
_t30 = {};
844 clad::tape<double>
_t31 = {};
845 clad::tape<double>
_t32 = {};
846 clad::tape<double>
_t33 = {};
853 if ((
x < 1.) || (
x <
a)) {
862 ax =
a *
_t1 -
x - ::std::lgamma(
a);
910 t = ::std::abs((
ans -
r) /
r);
927 bool _t28 = ::std::abs(
pk) > kBig;
948 if (clad::pop(
_t29)) {
998 if (clad::pop(
_t19)) {
1006 t = clad::pop(
_t21);
1010 _r7 +=
_r_d17 * clad::custom_derivatives::std::abs_pushforward((
ans -
r) /
r, 1.).pushforward;
1017 r = clad::pop(
_t20);
1025 t = clad::pop(
_t23);
1055 z = clad::pop(
_t14);
1059 y = clad::pop(
_t13);
1063 c = clad::pop(
_t12);
1145 const float *alpha,
const float *A,
const int *
lda,
const float *B,
const int *
ldb,
1146 const float *beta,
float *C,
const int *
ldc);
1153 const float *A,
const float *B,
float beta,
const float *C,
float *
_d_output,
bool *,
1172 ::sgemm_(&cn, &
ct, &
m, &k, &
n, &alpha,
_d_output, &
m, B, &k, &
one,
_d_A, &
m);
1173 ::sgemm_(&
ct, &cn, &k, &
n, &
m, &alpha, A, &
m,
_d_output, &
m, &
one,
_d_B, &k);
1177 for (
int i = 0; i <
sizeC; ++i) {
void sgemm_(const char *transa, const char *transb, const int *m, const int *n, const int *k, const float *alpha, const float *A, const int *lda, const float *B, const int *ldb, const float *beta, float *C, const int *ldc)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Namespace for new Math classes and functions.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Double_t CosH(Double_t)
Returns the hyperbolic cosine of x.
Double_t ACos(Double_t)
Returns the principal value of the arc cosine of x, expressed in radians.
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t ASin(Double_t)
Returns the principal value of the arc sine of x, expressed in radians.
Double_t Log2(Double_t x)
Returns the binary (base-2) logarithm of x.
Double_t Exp(Double_t x)
Returns the base-e exponential function of x, which is e raised to the power x.
Double_t Erf(Double_t x)
Computation of the error function erf(x).
Double_t ATan(Double_t)
Returns the principal value of the arc tangent of x, expressed in radians.
Double_t ASinH(Double_t)
Returns the area hyperbolic sine of x.
Double_t TanH(Double_t)
Returns the hyperbolic tangent of x.
Double_t ACosH(Double_t)
Returns the nonnegative area hyperbolic cosine of x.
Double_t Log(Double_t x)
Returns the natural logarithm of x.
Double_t Erfc(Double_t x)
Computes the complementary error function erfc(x).
Double_t Sq(Double_t x)
Returns x*x.
Double_t Sqrt(Double_t x)
Returns the square root of x.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
constexpr Double_t Ln10()
Natural log of 10 (to convert log to ln)
Double_t Hypot(Double_t x, Double_t y)
Returns sqrt(x*x + y*y)
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
Double_t LnGamma(Double_t z)
Computation of ln[gamma(z)] for all z.
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
Double_t Tan(Double_t)
Returns the tangent of an angle of x radians.
Double_t ATanH(Double_t)
Returns the area hyperbolic tangent of x.
Double_t Log10(Double_t x)
Returns the common (base-10) logarithm of x.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
Double_t SinH(Double_t)
Returns the hyperbolic sine of `x.
void landau_pdf_pullback(double x, double xi, double x0, double d_out, double *d_x, double *d_xi, double *d_x0)
void landau_cdf_pullback(double x, double xi, double x0, double d_out, double *d_x, double *d_xi, double *d_x0)
void Gemm_Call_pullback(float *output, bool transa, bool transb, int m, int n, int k, float alpha, const float *A, const float *B, float beta, const float *C, float *_d_output, bool *, bool *, int *, int *, int *, float *_d_alpha, float *_d_A, float *_d_B, float *_d_beta, float *_d_C)
ValueAndPushforward< T, T > CosH_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Abs_pushforward(T x, T d_x)
void Min_pullback(T a, T b, U p, clad::array_ref< T > d_a, clad::array_ref< T > d_b)
ValueAndPushforward< T, T > Sq_pushforward(T x, T d_x)
void Max_pullback(T a, T b, U p, clad::array_ref< T > d_a, clad::array_ref< T > d_b)
ValueAndPushforward< T, T > Erf_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Erfc_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Sin_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Max_pushforward(T x, T y, T d_x, T d_y)
ValueAndPushforward< T, T > Hypot_pushforward(T x, T y, T d_x, T d_y)
ValueAndPushforward< T, T > ASinH_pushforward(T x, T d_x)
ValueAndPushforward< T, T > ACosH_pushforward(T x, T d_x)
ValueAndPushforward< T, T > ASin_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Cos_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Sqrt_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Tan_pushforward(T x, T d_x)
void Hypot_pullback(T x, T y, U p, clad::array_ref< T > d_x, clad::array_ref< T > d_y)
ValueAndPushforward< T, T > Power_pushforward(T x, T y, T d_x, T d_y)
void Power_pullback(T x, T y, U p, clad::array_ref< T > d_x, clad::array_ref< T > d_y)
ValueAndPushforward< T, T > Min_pushforward(T x, T y, T d_x, T d_y)
ValueAndPushforward< T, T > Log_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Log10_pushforward(T x, T d_x)
ValueAndPushforward< T, T > TanH_pushforward(T x, T d_x)
ValueAndPushforward< T, T > ACos_pushforward(T x, T d_x)
ValueAndPushforward< T, T > SinH_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Exp_pushforward(T x, T d_x)
ValueAndPushforward< T, T > Log2_pushforward(T x, T d_x)
ValueAndPushforward< T, T > ATanH_pushforward(T x, T d_x)
ValueAndPushforward< T, T > ATan_pushforward(T x, T d_x)