\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\sqrt{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\mathsf{fma}\left(y, \log \left(\frac{1}{z}\right), \mathsf{fma}\left(\log \left(\frac{1}{a}\right), t, b\right)\right)}}} \cdot \frac{x}{\frac{y}{\sqrt{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\mathsf{fma}\left(y, \log \left(\frac{1}{z}\right), \mathsf{fma}\left(\log \left(\frac{1}{a}\right), t, b\right)\right)}}}}}double f(double x, double y, double z, double t, double a, double b) {
double r413562 = x;
double r413563 = y;
double r413564 = z;
double r413565 = log(r413564);
double r413566 = r413563 * r413565;
double r413567 = t;
double r413568 = 1.0;
double r413569 = r413567 - r413568;
double r413570 = a;
double r413571 = log(r413570);
double r413572 = r413569 * r413571;
double r413573 = r413566 + r413572;
double r413574 = b;
double r413575 = r413573 - r413574;
double r413576 = exp(r413575);
double r413577 = r413562 * r413576;
double r413578 = r413577 / r413563;
return r413578;
}
double f(double x, double y, double z, double t, double a, double b) {
double r413579 = 1.0;
double r413580 = a;
double r413581 = r413579 / r413580;
double r413582 = 1.0;
double r413583 = pow(r413581, r413582);
double r413584 = y;
double r413585 = z;
double r413586 = r413579 / r413585;
double r413587 = log(r413586);
double r413588 = log(r413581);
double r413589 = t;
double r413590 = b;
double r413591 = fma(r413588, r413589, r413590);
double r413592 = fma(r413584, r413587, r413591);
double r413593 = exp(r413592);
double r413594 = r413583 / r413593;
double r413595 = sqrt(r413594);
double r413596 = x;
double r413597 = r413584 / r413595;
double r413598 = r413596 / r413597;
double r413599 = r413595 * r413598;
return r413599;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 1.9 |
|---|---|
| Target | 10.8 |
| Herbie | 0.9 |
Initial program 1.9
Taylor expanded around inf 1.9
Simplified1.2
rmApplied associate-/l*1.3
rmApplied add-sqr-sqrt1.3
Applied *-un-lft-identity1.3
Applied times-frac1.3
Applied *-un-lft-identity1.3
Applied times-frac0.9
Simplified0.9
Final simplification0.9
herbie shell --seed 2019354 +o rules:numerics
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1) (log a))) b))) y))