\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\begin{array}{l}
\mathbf{if}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} = -\infty:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{\frac{z \cdot c}{y}}\right) - 4 \cdot \left(t \cdot \frac{a}{c}\right)\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le -6.90465323720438512 \cdot 10^{-167}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le 1.36472542145393839 \cdot 10^{-307}:\\
\;\;\;\;\left(\frac{\left(x \cdot 9\right) \cdot y + b}{z} - \left(a \cdot 4\right) \cdot t\right) \cdot \frac{1}{c}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le 3.0692962784690775 \cdot 10^{299}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{\frac{z}{\frac{y}{c}}}\right) - 4 \cdot \frac{t}{\frac{c}{a}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r474659 = x;
double r474660 = 9.0;
double r474661 = r474659 * r474660;
double r474662 = y;
double r474663 = r474661 * r474662;
double r474664 = z;
double r474665 = 4.0;
double r474666 = r474664 * r474665;
double r474667 = t;
double r474668 = r474666 * r474667;
double r474669 = a;
double r474670 = r474668 * r474669;
double r474671 = r474663 - r474670;
double r474672 = b;
double r474673 = r474671 + r474672;
double r474674 = c;
double r474675 = r474664 * r474674;
double r474676 = r474673 / r474675;
return r474676;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r474677 = x;
double r474678 = 9.0;
double r474679 = r474677 * r474678;
double r474680 = y;
double r474681 = r474679 * r474680;
double r474682 = z;
double r474683 = 4.0;
double r474684 = r474682 * r474683;
double r474685 = t;
double r474686 = r474684 * r474685;
double r474687 = a;
double r474688 = r474686 * r474687;
double r474689 = r474681 - r474688;
double r474690 = b;
double r474691 = r474689 + r474690;
double r474692 = c;
double r474693 = r474682 * r474692;
double r474694 = r474691 / r474693;
double r474695 = -inf.0;
bool r474696 = r474694 <= r474695;
double r474697 = r474690 / r474693;
double r474698 = r474693 / r474680;
double r474699 = r474677 / r474698;
double r474700 = r474678 * r474699;
double r474701 = r474697 + r474700;
double r474702 = r474687 / r474692;
double r474703 = r474685 * r474702;
double r474704 = r474683 * r474703;
double r474705 = r474701 - r474704;
double r474706 = -6.904653237204385e-167;
bool r474707 = r474694 <= r474706;
double r474708 = 1.3647254214539384e-307;
bool r474709 = r474694 <= r474708;
double r474710 = r474681 + r474690;
double r474711 = r474710 / r474682;
double r474712 = r474687 * r474683;
double r474713 = r474712 * r474685;
double r474714 = r474711 - r474713;
double r474715 = 1.0;
double r474716 = r474715 / r474692;
double r474717 = r474714 * r474716;
double r474718 = 3.0692962784690775e+299;
bool r474719 = r474694 <= r474718;
double r474720 = r474680 / r474692;
double r474721 = r474682 / r474720;
double r474722 = r474677 / r474721;
double r474723 = r474678 * r474722;
double r474724 = r474697 + r474723;
double r474725 = r474692 / r474687;
double r474726 = r474685 / r474725;
double r474727 = r474683 * r474726;
double r474728 = r474724 - r474727;
double r474729 = r474719 ? r474694 : r474728;
double r474730 = r474709 ? r474717 : r474729;
double r474731 = r474707 ? r474694 : r474730;
double r474732 = r474696 ? r474705 : r474731;
return r474732;
}




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 | 20.7 |
|---|---|
| Target | 14.9 |
| Herbie | 3.2 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -inf.0Initial program 64.0
Simplified26.1
Taylor expanded around 0 31.7
rmApplied associate-/l*14.9
rmApplied *-un-lft-identity14.9
Applied times-frac8.6
Simplified8.6
if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -6.904653237204385e-167 or 1.3647254214539384e-307 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 3.0692962784690775e+299Initial program 0.6
if -6.904653237204385e-167 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.3647254214539384e-307Initial program 32.4
Simplified0.7
rmApplied div-inv0.7
if 3.0692962784690775e+299 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 62.1
Simplified27.4
Taylor expanded around 0 30.3
rmApplied associate-/l*23.0
rmApplied associate-/l*15.8
rmApplied associate-/l*11.2
Final simplification3.2
herbie shell --seed 2019198
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:herbie-target
(if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -1.100156740804105e-171) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9.0 (/ y c)) (/ x z)) (/ b (* c z))) (* 4.0 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (- (+ (* 9.0 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4.0 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))