\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}0.5 \cdot \left(\left(y + \frac{1}{\frac{\frac{y}{x}}{x}}\right) - \left|z\right| \cdot \frac{\left|z\right|}{y}\right)double f(double x, double y, double z) {
double r650597 = x;
double r650598 = r650597 * r650597;
double r650599 = y;
double r650600 = r650599 * r650599;
double r650601 = r650598 + r650600;
double r650602 = z;
double r650603 = r650602 * r650602;
double r650604 = r650601 - r650603;
double r650605 = 2.0;
double r650606 = r650599 * r650605;
double r650607 = r650604 / r650606;
return r650607;
}
double f(double x, double y, double z) {
double r650608 = 0.5;
double r650609 = y;
double r650610 = 1.0;
double r650611 = x;
double r650612 = r650609 / r650611;
double r650613 = r650612 / r650611;
double r650614 = r650610 / r650613;
double r650615 = r650609 + r650614;
double r650616 = z;
double r650617 = fabs(r650616);
double r650618 = r650617 / r650609;
double r650619 = r650617 * r650618;
double r650620 = r650615 - r650619;
double r650621 = r650608 * r650620;
return r650621;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 28.4
Taylor expanded around 0 12.5
Simplified12.5
rmApplied sqr-pow12.5
Applied associate-/l*6.9
Simplified6.9
rmApplied *-un-lft-identity6.9
Applied add-sqr-sqrt6.9
Applied times-frac6.9
Simplified6.9
Simplified0.2
rmApplied clear-num0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019354 +o rules:numerics
(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)))