\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}0.5 \cdot \left(\left(y + \frac{\frac{x}{y}}{\frac{1}{x}}\right) - \left|z\right| \cdot \frac{\left|z\right|}{y}\right)double f(double x, double y, double z) {
double r699434 = x;
double r699435 = r699434 * r699434;
double r699436 = y;
double r699437 = r699436 * r699436;
double r699438 = r699435 + r699437;
double r699439 = z;
double r699440 = r699439 * r699439;
double r699441 = r699438 - r699440;
double r699442 = 2.0;
double r699443 = r699436 * r699442;
double r699444 = r699441 / r699443;
return r699444;
}
double f(double x, double y, double z) {
double r699445 = 0.5;
double r699446 = y;
double r699447 = x;
double r699448 = r699447 / r699446;
double r699449 = 1.0;
double r699450 = r699449 / r699447;
double r699451 = r699448 / r699450;
double r699452 = r699446 + r699451;
double r699453 = z;
double r699454 = fabs(r699453);
double r699455 = r699454 / r699446;
double r699456 = r699454 * r699455;
double r699457 = r699452 - r699456;
double r699458 = r699445 * r699457;
return r699458;
}




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.2
Simplified12.2
rmApplied *-un-lft-identity12.2
Applied add-sqr-sqrt12.2
Applied times-frac12.2
Simplified12.2
Simplified6.6
rmApplied unpow26.6
Applied associate-/l*0.1
rmApplied div-inv0.2
Applied associate-/r*0.2
Final simplification0.2
herbie shell --seed 2020064
(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)))