\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} \le -5.714617762619817600956632832341409108159 \cdot 10^{-177}:\\
\;\;\;\;\mathsf{fma}\left(9, \frac{x}{\frac{z \cdot c}{y}}, \frac{b}{z \cdot c}\right) - 4 \cdot \left(\left(a \cdot \left(\frac{\sqrt[3]{t}}{\sqrt[3]{c}} \cdot \frac{\sqrt[3]{t}}{\sqrt[3]{c}}\right)\right) \cdot \frac{\sqrt[3]{t}}{\sqrt[3]{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 2.987851345915281325406976623905108051725 \cdot 10^{-28}:\\
\;\;\;\;\frac{1}{\frac{c}{\frac{\mathsf{fma}\left(x \cdot 9, y, b\right)}{z} - \left(4 \cdot t\right) \cdot a}}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(9, \frac{x}{\frac{z \cdot c}{y}}, \frac{b}{z \cdot c}\right) - 4 \cdot \left(\left(a \cdot \left(\frac{\sqrt[3]{t}}{\sqrt[3]{c}} \cdot \frac{\sqrt[3]{t}}{\sqrt[3]{c}}\right)\right) \cdot \frac{\sqrt[3]{t}}{\sqrt[3]{c}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r46374069 = x;
double r46374070 = 9.0;
double r46374071 = r46374069 * r46374070;
double r46374072 = y;
double r46374073 = r46374071 * r46374072;
double r46374074 = z;
double r46374075 = 4.0;
double r46374076 = r46374074 * r46374075;
double r46374077 = t;
double r46374078 = r46374076 * r46374077;
double r46374079 = a;
double r46374080 = r46374078 * r46374079;
double r46374081 = r46374073 - r46374080;
double r46374082 = b;
double r46374083 = r46374081 + r46374082;
double r46374084 = c;
double r46374085 = r46374074 * r46374084;
double r46374086 = r46374083 / r46374085;
return r46374086;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r46374087 = x;
double r46374088 = 9.0;
double r46374089 = r46374087 * r46374088;
double r46374090 = y;
double r46374091 = r46374089 * r46374090;
double r46374092 = z;
double r46374093 = 4.0;
double r46374094 = r46374092 * r46374093;
double r46374095 = t;
double r46374096 = r46374094 * r46374095;
double r46374097 = a;
double r46374098 = r46374096 * r46374097;
double r46374099 = r46374091 - r46374098;
double r46374100 = b;
double r46374101 = r46374099 + r46374100;
double r46374102 = c;
double r46374103 = r46374092 * r46374102;
double r46374104 = r46374101 / r46374103;
double r46374105 = -5.714617762619818e-177;
bool r46374106 = r46374104 <= r46374105;
double r46374107 = r46374103 / r46374090;
double r46374108 = r46374087 / r46374107;
double r46374109 = r46374100 / r46374103;
double r46374110 = fma(r46374088, r46374108, r46374109);
double r46374111 = cbrt(r46374095);
double r46374112 = cbrt(r46374102);
double r46374113 = r46374111 / r46374112;
double r46374114 = r46374113 * r46374113;
double r46374115 = r46374097 * r46374114;
double r46374116 = r46374115 * r46374113;
double r46374117 = r46374093 * r46374116;
double r46374118 = r46374110 - r46374117;
double r46374119 = 2.9878513459152813e-28;
bool r46374120 = r46374104 <= r46374119;
double r46374121 = 1.0;
double r46374122 = fma(r46374089, r46374090, r46374100);
double r46374123 = r46374122 / r46374092;
double r46374124 = r46374093 * r46374095;
double r46374125 = r46374124 * r46374097;
double r46374126 = r46374123 - r46374125;
double r46374127 = r46374102 / r46374126;
double r46374128 = r46374121 / r46374127;
double r46374129 = r46374120 ? r46374128 : r46374118;
double r46374130 = r46374106 ? r46374118 : r46374129;
return r46374130;
}




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.7 |
|---|---|
| Target | 14.5 |
| Herbie | 5.3 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -5.714617762619818e-177 or 2.9878513459152813e-28 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 20.9
Simplified16.9
Taylor expanded around 0 12.1
Simplified12.1
rmApplied associate-/l*10.3
rmApplied *-un-lft-identity10.3
Applied times-frac8.1
Simplified8.1
rmApplied add-cube-cbrt8.5
Applied add-cube-cbrt8.6
Applied times-frac8.6
Applied associate-*r*6.1
Simplified6.1
if -5.714617762619818e-177 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 2.9878513459152813e-28Initial program 19.7
Simplified0.8
rmApplied clear-num1.9
Final simplification5.3
herbie shell --seed 2019174 +o rules:numerics
(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)))