\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 -3.196973635547550878216446115156055318506 \cdot 10^{-78}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{\left(\frac{\sqrt{a + t}}{\log \left(e^{\sqrt[3]{t}}\right)} \cdot \frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(\frac{5}{6} + a\right) - \frac{2}{3 \cdot t}\right)\right) \cdot 2}}\\
\mathbf{elif}\;t \le 1.173812833066756579069591227745209838589 \cdot 10^{-103}:\\
\;\;\;\;\frac{x}{y \cdot e^{2 \cdot \frac{\left(\sqrt{a + t} \cdot z\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \sqrt[3]{3 \cdot t}\right) - \left(\left(b - c\right) \cdot \left(\sqrt[3]{3 \cdot t} \cdot \left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) - \left(a - \frac{5}{6}\right) \cdot \sqrt[3]{\left(\frac{2}{3 \cdot t} \cdot 2\right) \cdot \frac{2}{3 \cdot t}}\right)\right) \cdot t}{\left(\left(a - \frac{5}{6}\right) \cdot \sqrt[3]{3 \cdot t}\right) \cdot t}} + x}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{\sqrt{a + t} \cdot z}{t} - \left(\left(\frac{5}{6} + a\right) - {\left(\frac{2}{3 \cdot t} \cdot \left(\frac{2}{3 \cdot t} \cdot \frac{2}{3 \cdot t}\right)\right)}^{\frac{1}{3}}\right) \cdot \left(b - c\right)\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r22343413 = x;
double r22343414 = y;
double r22343415 = 2.0;
double r22343416 = z;
double r22343417 = t;
double r22343418 = a;
double r22343419 = r22343417 + r22343418;
double r22343420 = sqrt(r22343419);
double r22343421 = r22343416 * r22343420;
double r22343422 = r22343421 / r22343417;
double r22343423 = b;
double r22343424 = c;
double r22343425 = r22343423 - r22343424;
double r22343426 = 5.0;
double r22343427 = 6.0;
double r22343428 = r22343426 / r22343427;
double r22343429 = r22343418 + r22343428;
double r22343430 = 3.0;
double r22343431 = r22343417 * r22343430;
double r22343432 = r22343415 / r22343431;
double r22343433 = r22343429 - r22343432;
double r22343434 = r22343425 * r22343433;
double r22343435 = r22343422 - r22343434;
double r22343436 = r22343415 * r22343435;
double r22343437 = exp(r22343436);
double r22343438 = r22343414 * r22343437;
double r22343439 = r22343413 + r22343438;
double r22343440 = r22343413 / r22343439;
return r22343440;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r22343441 = t;
double r22343442 = -3.196973635547551e-78;
bool r22343443 = r22343441 <= r22343442;
double r22343444 = x;
double r22343445 = y;
double r22343446 = a;
double r22343447 = r22343446 + r22343441;
double r22343448 = sqrt(r22343447);
double r22343449 = cbrt(r22343441);
double r22343450 = exp(r22343449);
double r22343451 = log(r22343450);
double r22343452 = r22343448 / r22343451;
double r22343453 = z;
double r22343454 = r22343449 * r22343449;
double r22343455 = r22343453 / r22343454;
double r22343456 = r22343452 * r22343455;
double r22343457 = b;
double r22343458 = c;
double r22343459 = r22343457 - r22343458;
double r22343460 = 5.0;
double r22343461 = 6.0;
double r22343462 = r22343460 / r22343461;
double r22343463 = r22343462 + r22343446;
double r22343464 = 2.0;
double r22343465 = 3.0;
double r22343466 = r22343465 * r22343441;
double r22343467 = r22343464 / r22343466;
double r22343468 = r22343463 - r22343467;
double r22343469 = r22343459 * r22343468;
double r22343470 = r22343456 - r22343469;
double r22343471 = r22343470 * r22343464;
double r22343472 = exp(r22343471);
double r22343473 = r22343445 * r22343472;
double r22343474 = r22343444 + r22343473;
double r22343475 = r22343444 / r22343474;
double r22343476 = 1.1738128330667566e-103;
bool r22343477 = r22343441 <= r22343476;
double r22343478 = r22343448 * r22343453;
double r22343479 = r22343446 - r22343462;
double r22343480 = cbrt(r22343466);
double r22343481 = r22343479 * r22343480;
double r22343482 = r22343478 * r22343481;
double r22343483 = r22343446 * r22343446;
double r22343484 = r22343462 * r22343462;
double r22343485 = r22343483 - r22343484;
double r22343486 = r22343480 * r22343485;
double r22343487 = r22343467 * r22343464;
double r22343488 = r22343487 * r22343467;
double r22343489 = cbrt(r22343488);
double r22343490 = r22343479 * r22343489;
double r22343491 = r22343486 - r22343490;
double r22343492 = r22343459 * r22343491;
double r22343493 = r22343492 * r22343441;
double r22343494 = r22343482 - r22343493;
double r22343495 = r22343481 * r22343441;
double r22343496 = r22343494 / r22343495;
double r22343497 = r22343464 * r22343496;
double r22343498 = exp(r22343497);
double r22343499 = r22343445 * r22343498;
double r22343500 = r22343499 + r22343444;
double r22343501 = r22343444 / r22343500;
double r22343502 = r22343478 / r22343441;
double r22343503 = r22343467 * r22343467;
double r22343504 = r22343467 * r22343503;
double r22343505 = 0.3333333333333333;
double r22343506 = pow(r22343504, r22343505);
double r22343507 = r22343463 - r22343506;
double r22343508 = r22343507 * r22343459;
double r22343509 = r22343502 - r22343508;
double r22343510 = r22343464 * r22343509;
double r22343511 = exp(r22343510);
double r22343512 = r22343445 * r22343511;
double r22343513 = r22343444 + r22343512;
double r22343514 = r22343444 / r22343513;
double r22343515 = r22343477 ? r22343501 : r22343514;
double r22343516 = r22343443 ? r22343475 : r22343515;
return r22343516;
}




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.1 |
|---|---|
| Target | 3.1 |
| Herbie | 7.5 |
if t < -3.196973635547551e-78Initial program 3.9
rmApplied add-cube-cbrt3.9
Applied times-frac1.8
rmApplied add-log-exp7.8
if -3.196973635547551e-78 < t < 1.1738128330667566e-103Initial program 6.6
rmApplied add-cbrt-cube16.4
rmApplied associate-*l/16.4
Applied associate-*l/16.4
Applied cbrt-div12.8
Applied flip-+16.0
Applied frac-sub17.1
Applied associate-*r/17.2
Applied frac-sub14.9
if 1.1738128330667566e-103 < t Initial program 2.5
rmApplied add-cbrt-cube2.5
rmApplied pow1/32.5
Final simplification7.5
herbie shell --seed 2019200
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2.0 (/ (- (* (* z (sqrt (+ t a))) (* (* 3.0 t) (- a (/ 5.0 6.0)))) (* (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0) (* (- a (/ 5.0 6.0)) (* (- b c) t)))) (* (* (* t t) 3.0) (- a (/ 5.0 6.0))))))))) (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))
(/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))