\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}\;c \le -7.53266542740102839 \cdot 10^{36}:\\
\;\;\;\;\mathsf{fma}\left(-4, \frac{t}{\frac{c}{a}}, \mathsf{fma}\left(9, \frac{1}{z} \cdot \frac{x}{\frac{c}{y}}, \frac{b}{z \cdot c}\right)\right)\\
\mathbf{elif}\;c \le 7.6018475258011594 \cdot 10^{-51}:\\
\;\;\;\;\mathsf{fma}\left(-4, \frac{t \cdot a}{c}, \frac{\frac{\mathsf{fma}\left(9 \cdot x, y, b\right)}{z}}{c}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-4, \frac{t}{\frac{c}{a}}, \mathsf{fma}\left(9, \frac{x}{z} \cdot \frac{y}{c}, \frac{b}{z \cdot c}\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r745777 = x;
double r745778 = 9.0;
double r745779 = r745777 * r745778;
double r745780 = y;
double r745781 = r745779 * r745780;
double r745782 = z;
double r745783 = 4.0;
double r745784 = r745782 * r745783;
double r745785 = t;
double r745786 = r745784 * r745785;
double r745787 = a;
double r745788 = r745786 * r745787;
double r745789 = r745781 - r745788;
double r745790 = b;
double r745791 = r745789 + r745790;
double r745792 = c;
double r745793 = r745782 * r745792;
double r745794 = r745791 / r745793;
return r745794;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r745795 = c;
double r745796 = -7.532665427401028e+36;
bool r745797 = r745795 <= r745796;
double r745798 = 4.0;
double r745799 = -r745798;
double r745800 = t;
double r745801 = a;
double r745802 = r745795 / r745801;
double r745803 = r745800 / r745802;
double r745804 = 9.0;
double r745805 = 1.0;
double r745806 = z;
double r745807 = r745805 / r745806;
double r745808 = x;
double r745809 = y;
double r745810 = r745795 / r745809;
double r745811 = r745808 / r745810;
double r745812 = r745807 * r745811;
double r745813 = b;
double r745814 = r745806 * r745795;
double r745815 = r745813 / r745814;
double r745816 = fma(r745804, r745812, r745815);
double r745817 = fma(r745799, r745803, r745816);
double r745818 = 7.601847525801159e-51;
bool r745819 = r745795 <= r745818;
double r745820 = r745800 * r745801;
double r745821 = r745820 / r745795;
double r745822 = r745804 * r745808;
double r745823 = fma(r745822, r745809, r745813);
double r745824 = r745823 / r745806;
double r745825 = r745824 / r745795;
double r745826 = fma(r745799, r745821, r745825);
double r745827 = r745808 / r745806;
double r745828 = r745809 / r745795;
double r745829 = r745827 * r745828;
double r745830 = fma(r745804, r745829, r745815);
double r745831 = fma(r745799, r745803, r745830);
double r745832 = r745819 ? r745826 : r745831;
double r745833 = r745797 ? r745817 : r745832;
return r745833;
}




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
| Original | 20.3 |
|---|---|
| Target | 14.4 |
| Herbie | 7.2 |
if c < -7.532665427401028e+36Initial program 23.6
Simplified14.6
rmApplied associate-/l*11.9
Taylor expanded around 0 11.9
Simplified11.9
rmApplied associate-/l*9.7
rmApplied *-un-lft-identity9.7
Applied times-frac8.5
Applied *-un-lft-identity8.5
Applied times-frac8.1
Simplified8.1
if -7.532665427401028e+36 < c < 7.601847525801159e-51Initial program 14.7
Simplified5.8
rmApplied associate-/r*3.6
Simplified3.7
if 7.601847525801159e-51 < c Initial program 22.3
Simplified14.0
rmApplied associate-/l*11.2
Taylor expanded around 0 11.0
Simplified11.0
rmApplied times-frac9.3
Final simplification7.2
herbie shell --seed 2020064 +o rules:numerics
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:precision binary64
:herbie-target
(if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -1.1001567408041051e-171) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9 (/ y c)) (/ x z)) (/ b (* c z))) (* 4 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (- (+ (* 9 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)))