\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}{\left(\sqrt{\frac{1}{a}}\right)}^{1} \cdot \frac{x}{\frac{y}{\frac{{\left(\sqrt{\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 r460575 = x;
double r460576 = y;
double r460577 = z;
double r460578 = log(r460577);
double r460579 = r460576 * r460578;
double r460580 = t;
double r460581 = 1.0;
double r460582 = r460580 - r460581;
double r460583 = a;
double r460584 = log(r460583);
double r460585 = r460582 * r460584;
double r460586 = r460579 + r460585;
double r460587 = b;
double r460588 = r460586 - r460587;
double r460589 = exp(r460588);
double r460590 = r460575 * r460589;
double r460591 = r460590 / r460576;
return r460591;
}
double f(double x, double y, double z, double t, double a, double b) {
double r460592 = 1.0;
double r460593 = a;
double r460594 = r460592 / r460593;
double r460595 = sqrt(r460594);
double r460596 = 1.0;
double r460597 = pow(r460595, r460596);
double r460598 = x;
double r460599 = y;
double r460600 = z;
double r460601 = r460592 / r460600;
double r460602 = log(r460601);
double r460603 = log(r460594);
double r460604 = t;
double r460605 = b;
double r460606 = fma(r460603, r460604, r460605);
double r460607 = fma(r460599, r460602, r460606);
double r460608 = exp(r460607);
double r460609 = r460597 / r460608;
double r460610 = r460599 / r460609;
double r460611 = r460598 / r460610;
double r460612 = r460597 * r460611;
return r460612;
}




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 | 11.0 |
| Herbie | 1.0 |
Initial program 1.9
Taylor expanded around inf 1.9
Simplified1.2
rmApplied associate-/l*1.2
rmApplied *-un-lft-identity1.2
Applied add-sqr-sqrt1.3
Applied unpow-prod-down1.3
Applied times-frac1.3
Applied *-un-lft-identity1.3
Applied times-frac1.3
Applied *-un-lft-identity1.3
Applied times-frac1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2020002 +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))