\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\begin{array}{l}
\mathbf{if}\;t \le -9.8445712940939801 \cdot 10^{-106} \lor \neg \left(t \le 1.1526597656514836 \cdot 10^{-304}\right):\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \left(\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)\right)}{\left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) \cdot \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r545427 = x;
double r545428 = y;
double r545429 = 2.0;
double r545430 = z;
double r545431 = t;
double r545432 = a;
double r545433 = r545431 + r545432;
double r545434 = sqrt(r545433);
double r545435 = r545430 * r545434;
double r545436 = r545435 / r545431;
double r545437 = b;
double r545438 = c;
double r545439 = r545437 - r545438;
double r545440 = 5.0;
double r545441 = 6.0;
double r545442 = r545440 / r545441;
double r545443 = r545432 + r545442;
double r545444 = 3.0;
double r545445 = r545431 * r545444;
double r545446 = r545429 / r545445;
double r545447 = r545443 - r545446;
double r545448 = r545439 * r545447;
double r545449 = r545436 - r545448;
double r545450 = r545429 * r545449;
double r545451 = exp(r545450);
double r545452 = r545428 * r545451;
double r545453 = r545427 + r545452;
double r545454 = r545427 / r545453;
return r545454;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r545455 = t;
double r545456 = -9.84457129409398e-106;
bool r545457 = r545455 <= r545456;
double r545458 = 1.1526597656514836e-304;
bool r545459 = r545455 <= r545458;
double r545460 = !r545459;
bool r545461 = r545457 || r545460;
double r545462 = x;
double r545463 = y;
double r545464 = 2.0;
double r545465 = z;
double r545466 = cbrt(r545455);
double r545467 = r545466 * r545466;
double r545468 = r545465 / r545467;
double r545469 = a;
double r545470 = r545455 + r545469;
double r545471 = sqrt(r545470);
double r545472 = r545471 / r545466;
double r545473 = r545468 * r545472;
double r545474 = b;
double r545475 = c;
double r545476 = r545474 - r545475;
double r545477 = 5.0;
double r545478 = 6.0;
double r545479 = r545477 / r545478;
double r545480 = r545469 + r545479;
double r545481 = 3.0;
double r545482 = r545455 * r545481;
double r545483 = r545464 / r545482;
double r545484 = r545480 - r545483;
double r545485 = r545476 * r545484;
double r545486 = r545473 - r545485;
double r545487 = r545464 * r545486;
double r545488 = exp(r545487);
double r545489 = r545463 * r545488;
double r545490 = r545462 + r545489;
double r545491 = r545462 / r545490;
double r545492 = r545465 * r545472;
double r545493 = r545469 - r545479;
double r545494 = r545493 * r545482;
double r545495 = r545492 * r545494;
double r545496 = r545469 * r545469;
double r545497 = r545479 * r545479;
double r545498 = r545496 - r545497;
double r545499 = r545498 * r545482;
double r545500 = r545493 * r545464;
double r545501 = r545499 - r545500;
double r545502 = r545476 * r545501;
double r545503 = r545467 * r545502;
double r545504 = r545495 - r545503;
double r545505 = r545494 * r545467;
double r545506 = r545504 / r545505;
double r545507 = r545464 * r545506;
double r545508 = exp(r545507);
double r545509 = r545463 * r545508;
double r545510 = r545462 + r545509;
double r545511 = r545462 / r545510;
double r545512 = r545461 ? r545491 : r545511;
return r545512;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 4.0 |
|---|---|
| Target | 3.1 |
| Herbie | 2.5 |
if t < -9.84457129409398e-106 or 1.1526597656514836e-304 < t Initial program 3.3
rmApplied add-cube-cbrt3.3
Applied times-frac2.1
if -9.84457129409398e-106 < t < 1.1526597656514836e-304Initial program 8.4
rmApplied add-cube-cbrt8.4
Applied times-frac8.5
rmApplied add-log-exp41.2
rmApplied flip-+41.5
Applied frac-sub41.5
Applied associate-*r/41.5
Applied associate-*l/41.5
Applied frac-sub54.0
Simplified59.9
Simplified5.7
Final simplification2.5
herbie shell --seed 2020046
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:precision binary64
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2 (/ (- (* (* z (sqrt (+ t a))) (* (* 3 t) (- a (/ 5 6)))) (* (- (* (+ (/ 5 6) a) (* 3 t)) 2) (* (- a (/ 5 6)) (* (- b c) t)))) (* (* (* t t) 3) (- a (/ 5 6))))))))) (/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3))))))))))))
(/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3)))))))))))