\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\left(b - \log z \cdot y\right) - \log a \cdot t}} \cdot x}{y}double f(double x, double y, double z, double t, double a, double b) {
double r523473 = x;
double r523474 = y;
double r523475 = z;
double r523476 = log(r523475);
double r523477 = r523474 * r523476;
double r523478 = t;
double r523479 = 1.0;
double r523480 = r523478 - r523479;
double r523481 = a;
double r523482 = log(r523481);
double r523483 = r523480 * r523482;
double r523484 = r523477 + r523483;
double r523485 = b;
double r523486 = r523484 - r523485;
double r523487 = exp(r523486);
double r523488 = r523473 * r523487;
double r523489 = r523488 / r523474;
return r523489;
}
double f(double x, double y, double z, double t, double a, double b) {
double r523490 = 1.0;
double r523491 = a;
double r523492 = r523490 / r523491;
double r523493 = 1.0;
double r523494 = pow(r523492, r523493);
double r523495 = b;
double r523496 = z;
double r523497 = log(r523496);
double r523498 = y;
double r523499 = r523497 * r523498;
double r523500 = r523495 - r523499;
double r523501 = log(r523491);
double r523502 = t;
double r523503 = r523501 * r523502;
double r523504 = r523500 - r523503;
double r523505 = exp(r523504);
double r523506 = r523494 / r523505;
double r523507 = x;
double r523508 = r523506 * r523507;
double r523509 = r523508 / r523498;
return r523509;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 2.0 |
|---|---|
| Target | 11.2 |
| Herbie | 1.3 |
Initial program 2.0
Taylor expanded around inf 2.0
Simplified1.3
Taylor expanded around inf 1.3
Simplified1.3
Final simplification1.3
herbie shell --seed 2020047
(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))