\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 \frac{t}{\frac{c}{a}}\\
\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 -4.8105757363233579 \cdot 10^{-275}:\\
\;\;\;\;\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 0.0:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y + b\right) \cdot \frac{1}{z} - \left(a \cdot 4\right) \cdot t}{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 4.18129635218716863 \cdot 10^{304}:\\
\;\;\;\;\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} + \left(\left(9 \cdot \frac{x}{z}\right) \cdot \left(\sqrt[3]{\frac{y}{c}} \cdot \sqrt[3]{\frac{y}{c}}\right)\right) \cdot \sqrt[3]{\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 r539188 = x;
double r539189 = 9.0;
double r539190 = r539188 * r539189;
double r539191 = y;
double r539192 = r539190 * r539191;
double r539193 = z;
double r539194 = 4.0;
double r539195 = r539193 * r539194;
double r539196 = t;
double r539197 = r539195 * r539196;
double r539198 = a;
double r539199 = r539197 * r539198;
double r539200 = r539192 - r539199;
double r539201 = b;
double r539202 = r539200 + r539201;
double r539203 = c;
double r539204 = r539193 * r539203;
double r539205 = r539202 / r539204;
return r539205;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r539206 = x;
double r539207 = 9.0;
double r539208 = r539206 * r539207;
double r539209 = y;
double r539210 = r539208 * r539209;
double r539211 = z;
double r539212 = 4.0;
double r539213 = r539211 * r539212;
double r539214 = t;
double r539215 = r539213 * r539214;
double r539216 = a;
double r539217 = r539215 * r539216;
double r539218 = r539210 - r539217;
double r539219 = b;
double r539220 = r539218 + r539219;
double r539221 = c;
double r539222 = r539211 * r539221;
double r539223 = r539220 / r539222;
double r539224 = -inf.0;
bool r539225 = r539223 <= r539224;
double r539226 = r539219 / r539222;
double r539227 = r539222 / r539209;
double r539228 = r539206 / r539227;
double r539229 = r539207 * r539228;
double r539230 = r539226 + r539229;
double r539231 = r539221 / r539216;
double r539232 = r539214 / r539231;
double r539233 = r539212 * r539232;
double r539234 = r539230 - r539233;
double r539235 = -4.810575736323358e-275;
bool r539236 = r539223 <= r539235;
double r539237 = 0.0;
bool r539238 = r539223 <= r539237;
double r539239 = r539210 + r539219;
double r539240 = 1.0;
double r539241 = r539240 / r539211;
double r539242 = r539239 * r539241;
double r539243 = r539216 * r539212;
double r539244 = r539243 * r539214;
double r539245 = r539242 - r539244;
double r539246 = r539245 / r539221;
double r539247 = 4.1812963521871686e+304;
bool r539248 = r539223 <= r539247;
double r539249 = r539206 / r539211;
double r539250 = r539207 * r539249;
double r539251 = r539209 / r539221;
double r539252 = cbrt(r539251);
double r539253 = r539252 * r539252;
double r539254 = r539250 * r539253;
double r539255 = r539254 * r539252;
double r539256 = r539226 + r539255;
double r539257 = r539256 - r539233;
double r539258 = r539248 ? r539223 : r539257;
double r539259 = r539238 ? r539246 : r539258;
double r539260 = r539236 ? r539223 : r539259;
double r539261 = r539225 ? r539234 : r539260;
return r539261;
}




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 | 15.0 |
| Herbie | 3.5 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -inf.0Initial program 64.0
Simplified25.5
Taylor expanded around 0 32.3
rmApplied associate-/l*27.2
rmApplied associate-/l*10.0
if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -4.810575736323358e-275 or 0.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 4.1812963521871686e+304Initial program 3.6
if -4.810575736323358e-275 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 0.0Initial program 35.6
Simplified0.8
rmApplied div-inv0.8
if 4.1812963521871686e+304 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 63.4
Simplified27.4
Taylor expanded around 0 31.1
rmApplied associate-/l*25.9
rmApplied times-frac12.3
Applied associate-*r*12.3
rmApplied add-cube-cbrt12.5
Applied associate-*r*12.5
Final simplification3.5
herbie shell --seed 2019199
(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)))