\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\begin{array}{l}
\mathbf{if}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -1.2458730547416133 \cdot 10^{+293}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + \frac{x}{\frac{c \cdot z}{y}} \cdot 9.0\right) - 4.0 \cdot \left(t \cdot \frac{a}{c}\right)\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -7.19657682972917 \cdot 10^{+72}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 1.0275879372618488 \cdot 10^{+308}:\\
\;\;\;\;\left(\frac{\frac{y \cdot x}{z}}{c} \cdot 9.0 + \frac{b}{c \cdot z}\right) - \frac{t \cdot a}{c} \cdot 4.0\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{x}{z} \cdot \frac{y}{c}\right) \cdot 9.0 + \frac{b}{c \cdot z}\right) - 4.0 \cdot \left(\frac{t}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{a}{\sqrt[3]{c}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r38935060 = x;
double r38935061 = 9.0;
double r38935062 = r38935060 * r38935061;
double r38935063 = y;
double r38935064 = r38935062 * r38935063;
double r38935065 = z;
double r38935066 = 4.0;
double r38935067 = r38935065 * r38935066;
double r38935068 = t;
double r38935069 = r38935067 * r38935068;
double r38935070 = a;
double r38935071 = r38935069 * r38935070;
double r38935072 = r38935064 - r38935071;
double r38935073 = b;
double r38935074 = r38935072 + r38935073;
double r38935075 = c;
double r38935076 = r38935065 * r38935075;
double r38935077 = r38935074 / r38935076;
return r38935077;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r38935078 = x;
double r38935079 = 9.0;
double r38935080 = r38935078 * r38935079;
double r38935081 = y;
double r38935082 = r38935080 * r38935081;
double r38935083 = z;
double r38935084 = 4.0;
double r38935085 = r38935083 * r38935084;
double r38935086 = t;
double r38935087 = r38935085 * r38935086;
double r38935088 = a;
double r38935089 = r38935087 * r38935088;
double r38935090 = r38935082 - r38935089;
double r38935091 = b;
double r38935092 = r38935090 + r38935091;
double r38935093 = c;
double r38935094 = r38935093 * r38935083;
double r38935095 = r38935092 / r38935094;
double r38935096 = -1.2458730547416133e+293;
bool r38935097 = r38935095 <= r38935096;
double r38935098 = r38935091 / r38935094;
double r38935099 = r38935094 / r38935081;
double r38935100 = r38935078 / r38935099;
double r38935101 = r38935100 * r38935079;
double r38935102 = r38935098 + r38935101;
double r38935103 = r38935088 / r38935093;
double r38935104 = r38935086 * r38935103;
double r38935105 = r38935084 * r38935104;
double r38935106 = r38935102 - r38935105;
double r38935107 = -7.19657682972917e+72;
bool r38935108 = r38935095 <= r38935107;
double r38935109 = 1.0275879372618488e+308;
bool r38935110 = r38935095 <= r38935109;
double r38935111 = r38935081 * r38935078;
double r38935112 = r38935111 / r38935083;
double r38935113 = r38935112 / r38935093;
double r38935114 = r38935113 * r38935079;
double r38935115 = r38935114 + r38935098;
double r38935116 = r38935086 * r38935088;
double r38935117 = r38935116 / r38935093;
double r38935118 = r38935117 * r38935084;
double r38935119 = r38935115 - r38935118;
double r38935120 = r38935078 / r38935083;
double r38935121 = r38935081 / r38935093;
double r38935122 = r38935120 * r38935121;
double r38935123 = r38935122 * r38935079;
double r38935124 = r38935123 + r38935098;
double r38935125 = cbrt(r38935093);
double r38935126 = r38935125 * r38935125;
double r38935127 = r38935086 / r38935126;
double r38935128 = r38935088 / r38935125;
double r38935129 = r38935127 * r38935128;
double r38935130 = r38935084 * r38935129;
double r38935131 = r38935124 - r38935130;
double r38935132 = r38935110 ? r38935119 : r38935131;
double r38935133 = r38935108 ? r38935095 : r38935132;
double r38935134 = r38935097 ? r38935106 : r38935133;
return r38935134;
}




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.3 |
|---|---|
| Target | 14.5 |
| Herbie | 6.0 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -1.2458730547416133e+293Initial program 54.3
Simplified24.4
Taylor expanded around 0 26.4
rmApplied associate-/l*14.5
rmApplied *-un-lft-identity14.5
Applied times-frac9.2
Simplified9.2
if -1.2458730547416133e+293 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -7.19657682972917e+72Initial program 0.7
if -7.19657682972917e+72 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.0275879372618488e+308Initial program 7.8
Simplified5.6
Taylor expanded around 0 5.8
rmApplied associate-/r*5.9
if 1.0275879372618488e+308 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 61.6
Simplified27.5
Taylor expanded around 0 31.4
rmApplied add-cube-cbrt31.9
Applied times-frac26.0
rmApplied times-frac9.4
Final simplification6.0
herbie shell --seed 2019165
(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)))