\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;z \cdot 3 \le -2.315641800986653731087017149548046290874:\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + t \cdot \frac{\frac{1}{y}}{3 \cdot z}\\
\mathbf{elif}\;z \cdot 3 \le 2.181965382420920083950531709255992849268 \cdot 10^{-43}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{\frac{t}{y}}{z \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{1}{z} \cdot \frac{y}{3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\\
\end{array}double f(double x, double y, double z, double t) {
double r460677 = x;
double r460678 = y;
double r460679 = z;
double r460680 = 3.0;
double r460681 = r460679 * r460680;
double r460682 = r460678 / r460681;
double r460683 = r460677 - r460682;
double r460684 = t;
double r460685 = r460681 * r460678;
double r460686 = r460684 / r460685;
double r460687 = r460683 + r460686;
return r460687;
}
double f(double x, double y, double z, double t) {
double r460688 = z;
double r460689 = 3.0;
double r460690 = r460688 * r460689;
double r460691 = -2.3156418009866537;
bool r460692 = r460690 <= r460691;
double r460693 = x;
double r460694 = y;
double r460695 = r460694 / r460688;
double r460696 = r460695 / r460689;
double r460697 = r460693 - r460696;
double r460698 = t;
double r460699 = 1.0;
double r460700 = r460699 / r460694;
double r460701 = r460689 * r460688;
double r460702 = r460700 / r460701;
double r460703 = r460698 * r460702;
double r460704 = r460697 + r460703;
double r460705 = 2.18196538242092e-43;
bool r460706 = r460690 <= r460705;
double r460707 = r460694 / r460690;
double r460708 = r460693 - r460707;
double r460709 = r460698 / r460694;
double r460710 = r460709 / r460690;
double r460711 = r460708 + r460710;
double r460712 = r460699 / r460688;
double r460713 = r460694 / r460689;
double r460714 = r460712 * r460713;
double r460715 = r460693 - r460714;
double r460716 = r460690 * r460694;
double r460717 = r460698 / r460716;
double r460718 = r460715 + r460717;
double r460719 = r460706 ? r460711 : r460718;
double r460720 = r460692 ? r460704 : r460719;
return r460720;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.9 |
|---|---|
| Target | 1.9 |
| Herbie | 0.3 |
if (* z 3.0) < -2.3156418009866537Initial program 0.4
rmApplied add-cube-cbrt0.6
Applied times-frac2.0
rmApplied div-inv2.0
Applied associate-*r*1.4
Simplified1.2
rmApplied associate-/r*1.1
rmApplied div-inv1.1
Applied associate-*l*0.3
Simplified0.3
if -2.3156418009866537 < (* z 3.0) < 2.18196538242092e-43Initial program 12.1
rmApplied add-cube-cbrt12.3
Applied times-frac1.1
rmApplied associate-*l/0.6
Simplified0.3
if 2.18196538242092e-43 < (* z 3.0) Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.4
Final simplification0.3
herbie shell --seed 2019323
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:precision binary64
:herbie-target
(+ (- x (/ y (* z 3))) (/ (/ t (* z 3)) y))
(+ (- x (/ y (* z 3))) (/ t (* (* z 3) y))))