\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\begin{array}{l}
\mathbf{if}\;y \le 1.142862718542397604994653604881790849452 \cdot 10^{-311}:\\
\;\;\;\;0.5 \cdot \left(\left(y + \frac{x}{\frac{y}{x}}\right) - {\left(\sqrt[3]{z}\right)}^{4} \cdot \frac{{\left(\sqrt[3]{z}\right)}^{2}}{y}\right)\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\left(y + \frac{x}{\frac{y}{x}}\right) - \frac{\left|z\right|}{\sqrt{y}} \cdot \frac{\left|z\right|}{\sqrt{y}}\right)\\
\end{array}double f(double x, double y, double z) {
double r741670 = x;
double r741671 = r741670 * r741670;
double r741672 = y;
double r741673 = r741672 * r741672;
double r741674 = r741671 + r741673;
double r741675 = z;
double r741676 = r741675 * r741675;
double r741677 = r741674 - r741676;
double r741678 = 2.0;
double r741679 = r741672 * r741678;
double r741680 = r741677 / r741679;
return r741680;
}
double f(double x, double y, double z) {
double r741681 = y;
double r741682 = 1.1428627185424e-311;
bool r741683 = r741681 <= r741682;
double r741684 = 0.5;
double r741685 = x;
double r741686 = r741681 / r741685;
double r741687 = r741685 / r741686;
double r741688 = r741681 + r741687;
double r741689 = z;
double r741690 = cbrt(r741689);
double r741691 = 4.0;
double r741692 = pow(r741690, r741691);
double r741693 = 2.0;
double r741694 = pow(r741690, r741693);
double r741695 = r741694 / r741681;
double r741696 = r741692 * r741695;
double r741697 = r741688 - r741696;
double r741698 = r741684 * r741697;
double r741699 = fabs(r741689);
double r741700 = sqrt(r741681);
double r741701 = r741699 / r741700;
double r741702 = r741701 * r741701;
double r741703 = r741688 - r741702;
double r741704 = r741684 * r741703;
double r741705 = r741683 ? r741698 : r741704;
return r741705;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.1 |
|---|---|
| Target | 0.2 |
| Herbie | 1.1 |
if y < 1.1428627185424e-311Initial program 28.3
Taylor expanded around 0 12.4
Simplified12.4
rmApplied unpow212.4
Applied associate-/l*6.8
rmApplied *-un-lft-identity6.8
Applied add-cube-cbrt7.1
Applied unpow-prod-down7.1
Applied times-frac2.0
Simplified2.0
if 1.1428627185424e-311 < y Initial program 28.0
Taylor expanded around 0 12.2
Simplified12.2
rmApplied unpow212.2
Applied associate-/l*6.7
rmApplied add-sqr-sqrt6.7
Applied add-sqr-sqrt6.7
Applied times-frac6.7
Simplified6.7
Simplified0.2
Final simplification1.1
herbie shell --seed 2019356
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:initialConfig from diagrams-contrib-1.3.0.5, A"
:precision binary64
:herbie-target
(- (* y 0.5) (* (* (/ 0.5 y) (+ z x)) (- z x)))
(/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)))