\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}0.5 \cdot \left(\left(y + \left|x\right| \cdot \frac{\left|x\right|}{y}\right) - \left|z\right| \cdot \frac{\left|z\right|}{y}\right)double f(double x, double y, double z) {
double r732653 = x;
double r732654 = r732653 * r732653;
double r732655 = y;
double r732656 = r732655 * r732655;
double r732657 = r732654 + r732656;
double r732658 = z;
double r732659 = r732658 * r732658;
double r732660 = r732657 - r732659;
double r732661 = 2.0;
double r732662 = r732655 * r732661;
double r732663 = r732660 / r732662;
return r732663;
}
double f(double x, double y, double z) {
double r732664 = 0.5;
double r732665 = y;
double r732666 = x;
double r732667 = fabs(r732666);
double r732668 = r732667 / r732665;
double r732669 = r732667 * r732668;
double r732670 = r732665 + r732669;
double r732671 = z;
double r732672 = fabs(r732671);
double r732673 = r732672 / r732665;
double r732674 = r732672 * r732673;
double r732675 = r732670 - r732674;
double r732676 = r732664 * r732675;
return r732676;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.1 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 28.1
Taylor expanded around 0 12.6
Simplified12.6
rmApplied *-un-lft-identity12.6
Applied add-sqr-sqrt12.6
Applied times-frac12.6
Simplified12.6
Simplified7.0
rmApplied *-un-lft-identity7.0
Applied add-sqr-sqrt7.0
Applied times-frac7.0
Simplified7.0
Simplified0.2
Final simplification0.2
herbie shell --seed 2020056
(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)))