\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}0.5 \cdot \left(\left(y + \frac{{x}^{1}}{\frac{y}{x}}\right) - \frac{z}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{z}{\sqrt[3]{y}}\right)double f(double x, double y, double z) {
double r598460 = x;
double r598461 = r598460 * r598460;
double r598462 = y;
double r598463 = r598462 * r598462;
double r598464 = r598461 + r598463;
double r598465 = z;
double r598466 = r598465 * r598465;
double r598467 = r598464 - r598466;
double r598468 = 2.0;
double r598469 = r598462 * r598468;
double r598470 = r598467 / r598469;
return r598470;
}
double f(double x, double y, double z) {
double r598471 = 0.5;
double r598472 = y;
double r598473 = x;
double r598474 = 1.0;
double r598475 = pow(r598473, r598474);
double r598476 = r598472 / r598473;
double r598477 = r598475 / r598476;
double r598478 = r598472 + r598477;
double r598479 = z;
double r598480 = cbrt(r598472);
double r598481 = r598480 * r598480;
double r598482 = r598479 / r598481;
double r598483 = r598479 / r598480;
double r598484 = r598482 * r598483;
double r598485 = r598478 - r598484;
double r598486 = r598471 * r598485;
return r598486;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 29.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.4 |
Initial program 29.0
Taylor expanded around 0 12.9
Simplified12.9
rmApplied sqr-pow12.9
Applied associate-/l*7.1
Simplified7.1
rmApplied add-cube-cbrt7.3
Applied add-sqr-sqrt35.9
Applied unpow-prod-down35.9
Applied times-frac32.5
Simplified32.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2020039 +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)))