\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}\;z \leq -6.92097034301726 \cdot 10^{-17}:\\
\;\;\;\;\left(\frac{\left(9 \cdot x\right) \cdot y + b}{z} + \left(t \cdot a\right) \cdot -4\right) \cdot \frac{1}{c}\\
\mathbf{elif}\;z \leq 2.538530585970842 \cdot 10^{-06}:\\
\;\;\;\;\frac{b + \left(\left(9 \cdot x\right) \cdot y - a \cdot \left(t \cdot \left(z \cdot 4\right)\right)\right)}{z \cdot c}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(t \cdot a\right) \cdot -4 + \frac{x \cdot \left(y \cdot -9\right) - b}{-z}}{c}\\
\end{array}(FPCore (x y z t a b c) :precision binary64 (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))
(FPCore (x y z t a b c)
:precision binary64
(if (<= z -6.92097034301726e-17)
(* (+ (/ (+ (* (* 9.0 x) y) b) z) (* (* t a) -4.0)) (/ 1.0 c))
(if (<= z 2.538530585970842e-06)
(/ (+ b (- (* (* 9.0 x) y) (* a (* t (* z 4.0))))) (* z c))
(/ (+ (* (* t a) -4.0) (/ (- (* x (* y -9.0)) b) (- z))) c))))double code(double x, double y, double z, double t, double a, double b, double c) {
return ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c);
}
double code(double x, double y, double z, double t, double a, double b, double c) {
double tmp;
if (z <= -6.92097034301726e-17) {
tmp = (((((9.0 * x) * y) + b) / z) + ((t * a) * -4.0)) * (1.0 / c);
} else if (z <= 2.538530585970842e-06) {
tmp = (b + (((9.0 * x) * y) - (a * (t * (z * 4.0))))) / (z * c);
} else {
tmp = (((t * a) * -4.0) + (((x * (y * -9.0)) - b) / -z)) / c;
}
return tmp;
}




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.1 |
|---|---|
| Target | 14.0 |
| Herbie | 7.8 |
if z < -6.92097034301726025e-17Initial program 28.1
Simplified8.8
rmApplied div-inv_binary64_208768.8
rmApplied *-un-lft-identity_binary64_208798.8
Applied associate-*r*_binary64_208198.8
Simplified8.8
if -6.92097034301726025e-17 < z < 2.5385305859708419e-6Initial program 6.1
if 2.5385305859708419e-6 < z Initial program 28.5
Simplified8.6
rmApplied frac-2neg_binary64_208908.6
Simplified8.6
Final simplification7.8
herbie shell --seed 2021076
(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.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -1.1001567408041051e-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)))