x \cdot \left(\frac{y}{z} - \frac{t}{1 - z}\right)\begin{array}{l}
\mathbf{if}\;x \cdot \left(\frac{y}{z} - \frac{t}{1 - z}\right) \le -1.7824657187101655 \cdot 10^{283}:\\
\;\;\;\;\frac{x \cdot \left(y \cdot \left(1 - z\right) - z \cdot t\right)}{z \cdot \left(1 - z\right)}\\
\mathbf{elif}\;x \cdot \left(\frac{y}{z} - \frac{t}{1 - z}\right) \le -3.4079334438846939 \cdot 10^{-303}:\\
\;\;\;\;x \cdot \frac{y}{z} + x \cdot \left(-t \cdot \frac{1}{1 - z}\right)\\
\mathbf{elif}\;x \cdot \left(\frac{y}{z} - \frac{t}{1 - z}\right) \le 1.34256702140432422 \cdot 10^{120}:\\
\;\;\;\;\left(x \cdot \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{z}} + \frac{x \cdot \left(-t\right)}{1 - z}\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}\right) \cdot \frac{\sqrt[3]{y}}{\left(\sqrt[3]{\sqrt[3]{z}} \cdot \sqrt[3]{\sqrt[3]{z}}\right) \cdot \sqrt[3]{\sqrt[3]{z}}} + x \cdot \left(-\frac{t}{1 - z}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r386564 = x;
double r386565 = y;
double r386566 = z;
double r386567 = r386565 / r386566;
double r386568 = t;
double r386569 = 1.0;
double r386570 = r386569 - r386566;
double r386571 = r386568 / r386570;
double r386572 = r386567 - r386571;
double r386573 = r386564 * r386572;
return r386573;
}
double f(double x, double y, double z, double t) {
double r386574 = x;
double r386575 = y;
double r386576 = z;
double r386577 = r386575 / r386576;
double r386578 = t;
double r386579 = 1.0;
double r386580 = r386579 - r386576;
double r386581 = r386578 / r386580;
double r386582 = r386577 - r386581;
double r386583 = r386574 * r386582;
double r386584 = -1.7824657187101655e+283;
bool r386585 = r386583 <= r386584;
double r386586 = r386575 * r386580;
double r386587 = r386576 * r386578;
double r386588 = r386586 - r386587;
double r386589 = r386574 * r386588;
double r386590 = r386576 * r386580;
double r386591 = r386589 / r386590;
double r386592 = -3.407933443884694e-303;
bool r386593 = r386583 <= r386592;
double r386594 = r386574 * r386577;
double r386595 = 1.0;
double r386596 = r386595 / r386580;
double r386597 = r386578 * r386596;
double r386598 = -r386597;
double r386599 = r386574 * r386598;
double r386600 = r386594 + r386599;
double r386601 = 1.3425670214043242e+120;
bool r386602 = r386583 <= r386601;
double r386603 = cbrt(r386575);
double r386604 = r386603 * r386603;
double r386605 = cbrt(r386576);
double r386606 = r386605 * r386605;
double r386607 = r386604 / r386606;
double r386608 = r386574 * r386607;
double r386609 = r386603 / r386605;
double r386610 = r386608 * r386609;
double r386611 = -r386578;
double r386612 = r386574 * r386611;
double r386613 = r386612 / r386580;
double r386614 = r386610 + r386613;
double r386615 = cbrt(r386605);
double r386616 = r386615 * r386615;
double r386617 = r386616 * r386615;
double r386618 = r386603 / r386617;
double r386619 = r386608 * r386618;
double r386620 = -r386581;
double r386621 = r386574 * r386620;
double r386622 = r386619 + r386621;
double r386623 = r386602 ? r386614 : r386622;
double r386624 = r386593 ? r386600 : r386623;
double r386625 = r386585 ? r386591 : r386624;
return r386625;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 4.2 |
|---|---|
| Target | 4.1 |
| Herbie | 1.5 |
if (* x (- (/ y z) (/ t (- 1.0 z)))) < -1.7824657187101655e+283Initial program 42.8
rmApplied frac-sub46.6
Applied associate-*r/7.3
if -1.7824657187101655e+283 < (* x (- (/ y z) (/ t (- 1.0 z)))) < -3.407933443884694e-303Initial program 0.3
rmApplied sub-neg0.3
Applied distribute-lft-in0.3
rmApplied div-inv0.3
if -3.407933443884694e-303 < (* x (- (/ y z) (/ t (- 1.0 z)))) < 1.3425670214043242e+120Initial program 2.4
rmApplied sub-neg2.4
Applied distribute-lft-in2.4
rmApplied add-cube-cbrt2.8
Applied add-cube-cbrt2.9
Applied times-frac2.9
Applied associate-*r*2.1
rmApplied distribute-neg-frac2.1
Applied associate-*r/1.6
if 1.3425670214043242e+120 < (* x (- (/ y z) (/ t (- 1.0 z)))) Initial program 10.5
rmApplied sub-neg10.5
Applied distribute-lft-in10.5
rmApplied add-cube-cbrt11.1
Applied add-cube-cbrt11.2
Applied times-frac11.2
Applied associate-*r*2.6
rmApplied add-cube-cbrt2.8
Final simplification1.5
herbie shell --seed 2020100
(FPCore (x y z t)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, C"
:precision binary64
:herbie-target
(if (< (* x (- (/ y z) (/ t (- 1 z)))) -7.623226303312042e-196) (* x (- (/ y z) (* t (/ 1 (- 1 z))))) (if (< (* x (- (/ y z) (/ t (- 1 z)))) 1.4133944927702302e-211) (+ (/ (* y x) z) (- (/ (* t x) (- 1 z)))) (* x (- (/ y z) (* t (/ 1 (- 1 z)))))))
(* x (- (/ y z) (/ t (- 1 z)))))