\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}\;a \le -1.5470563667015197 \cdot 10^{+72}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{\frac{c \cdot z}{x}}, 9.0, \frac{b}{c \cdot z} - \left(4.0 \cdot a\right) \cdot \frac{t}{c}\right)\\
\mathbf{elif}\;a \le -1.7576912804984347 \cdot 10^{-185}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{\frac{z}{\sqrt[3]{x}}} \cdot \frac{1}{\frac{c}{\sqrt[3]{x} \cdot \sqrt[3]{x}}}, 9.0, \frac{\frac{b}{c}}{z} - \frac{t \cdot \left(4.0 \cdot a\right)}{c}\right)\\
\mathbf{elif}\;a \le 2.1986561765626434 \cdot 10^{-240}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{\frac{c}{\frac{x}{z}}}, 9.0, \frac{b}{c \cdot z} - \frac{t \cdot \left(4.0 \cdot a\right)}{c}\right)\\
\mathbf{elif}\;a \le 3.1796022958011577 \cdot 10^{+31}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{\frac{z}{\sqrt[3]{x}}} \cdot \frac{1}{\frac{c}{\sqrt[3]{x} \cdot \sqrt[3]{x}}}, 9.0, \frac{\frac{b}{c}}{z} - \frac{t \cdot \left(4.0 \cdot a\right)}{c}\right)\\
\mathbf{elif}\;a \le 3.719977460054025 \cdot 10^{+243}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{\frac{c \cdot z}{x}}, 9.0, \frac{b}{c \cdot z} - \left(4.0 \cdot a\right) \cdot \frac{t}{c}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{\frac{c \cdot z}{x}}, 9.0, b \cdot \frac{1}{c \cdot z} - \frac{t \cdot \left(4.0 \cdot a\right)}{c}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r13545497 = x;
double r13545498 = 9.0;
double r13545499 = r13545497 * r13545498;
double r13545500 = y;
double r13545501 = r13545499 * r13545500;
double r13545502 = z;
double r13545503 = 4.0;
double r13545504 = r13545502 * r13545503;
double r13545505 = t;
double r13545506 = r13545504 * r13545505;
double r13545507 = a;
double r13545508 = r13545506 * r13545507;
double r13545509 = r13545501 - r13545508;
double r13545510 = b;
double r13545511 = r13545509 + r13545510;
double r13545512 = c;
double r13545513 = r13545502 * r13545512;
double r13545514 = r13545511 / r13545513;
return r13545514;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r13545515 = a;
double r13545516 = -1.5470563667015197e+72;
bool r13545517 = r13545515 <= r13545516;
double r13545518 = y;
double r13545519 = c;
double r13545520 = z;
double r13545521 = r13545519 * r13545520;
double r13545522 = x;
double r13545523 = r13545521 / r13545522;
double r13545524 = r13545518 / r13545523;
double r13545525 = 9.0;
double r13545526 = b;
double r13545527 = r13545526 / r13545521;
double r13545528 = 4.0;
double r13545529 = r13545528 * r13545515;
double r13545530 = t;
double r13545531 = r13545530 / r13545519;
double r13545532 = r13545529 * r13545531;
double r13545533 = r13545527 - r13545532;
double r13545534 = fma(r13545524, r13545525, r13545533);
double r13545535 = -1.7576912804984347e-185;
bool r13545536 = r13545515 <= r13545535;
double r13545537 = cbrt(r13545522);
double r13545538 = r13545520 / r13545537;
double r13545539 = r13545518 / r13545538;
double r13545540 = 1.0;
double r13545541 = r13545537 * r13545537;
double r13545542 = r13545519 / r13545541;
double r13545543 = r13545540 / r13545542;
double r13545544 = r13545539 * r13545543;
double r13545545 = r13545526 / r13545519;
double r13545546 = r13545545 / r13545520;
double r13545547 = r13545530 * r13545529;
double r13545548 = r13545547 / r13545519;
double r13545549 = r13545546 - r13545548;
double r13545550 = fma(r13545544, r13545525, r13545549);
double r13545551 = 2.1986561765626434e-240;
bool r13545552 = r13545515 <= r13545551;
double r13545553 = r13545522 / r13545520;
double r13545554 = r13545519 / r13545553;
double r13545555 = r13545518 / r13545554;
double r13545556 = r13545527 - r13545548;
double r13545557 = fma(r13545555, r13545525, r13545556);
double r13545558 = 3.1796022958011577e+31;
bool r13545559 = r13545515 <= r13545558;
double r13545560 = 3.719977460054025e+243;
bool r13545561 = r13545515 <= r13545560;
double r13545562 = r13545540 / r13545521;
double r13545563 = r13545526 * r13545562;
double r13545564 = r13545563 - r13545548;
double r13545565 = fma(r13545524, r13545525, r13545564);
double r13545566 = r13545561 ? r13545534 : r13545565;
double r13545567 = r13545559 ? r13545550 : r13545566;
double r13545568 = r13545552 ? r13545557 : r13545567;
double r13545569 = r13545536 ? r13545550 : r13545568;
double r13545570 = r13545517 ? r13545534 : r13545569;
return r13545570;
}




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 | 19.0 |
|---|---|
| Target | 13.6 |
| Herbie | 8.8 |
if a < -1.5470563667015197e+72 or 3.1796022958011577e+31 < a < 3.719977460054025e+243Initial program 22.6
Simplified22.6
Taylor expanded around 0 15.0
Simplified15.0
rmApplied associate-/l*14.1
rmApplied *-un-lft-identity14.1
Applied times-frac7.8
Simplified7.8
if -1.5470563667015197e+72 < a < -1.7576912804984347e-185 or 2.1986561765626434e-240 < a < 3.1796022958011577e+31Initial program 16.6
Simplified16.6
Taylor expanded around 0 8.3
Simplified8.3
rmApplied associate-/l*7.8
rmApplied add-cube-cbrt8.0
Applied times-frac7.9
Applied *-un-lft-identity7.9
Applied times-frac8.4
rmApplied associate-/r*8.7
if -1.7576912804984347e-185 < a < 2.1986561765626434e-240Initial program 17.1
Simplified17.1
Taylor expanded around 0 8.9
Simplified8.9
rmApplied associate-/l*8.7
rmApplied associate-/l*9.6
if 3.719977460054025e+243 < a Initial program 27.8
Simplified27.8
Taylor expanded around 0 17.7
Simplified18.2
rmApplied associate-/l*16.4
rmApplied div-inv16.4
Final simplification8.8
herbie shell --seed 2019156 +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)))