\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{y + \frac{x + z}{y} \cdot \left(x - z\right)}{2}double f(double x, double y, double z) {
double r495119 = x;
double r495120 = r495119 * r495119;
double r495121 = y;
double r495122 = r495121 * r495121;
double r495123 = r495120 + r495122;
double r495124 = z;
double r495125 = r495124 * r495124;
double r495126 = r495123 - r495125;
double r495127 = 2.0;
double r495128 = r495121 * r495127;
double r495129 = r495126 / r495128;
return r495129;
}
double f(double x, double y, double z) {
double r495130 = y;
double r495131 = x;
double r495132 = z;
double r495133 = r495131 + r495132;
double r495134 = r495133 / r495130;
double r495135 = r495131 - r495132;
double r495136 = r495134 * r495135;
double r495137 = r495130 + r495136;
double r495138 = 2.0;
double r495139 = r495137 / r495138;
return r495139;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 28.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
Initial program 28.6
Simplified12.7
rmApplied difference-of-squares12.7
Applied associate-/l*0.1
rmApplied associate-/r/0.1
Final simplification0.1
herbie shell --seed 2019198 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.TwoD.Apollonian:initialConfig from diagrams-contrib-1.3.0.5, A"
:herbie-target
(- (* y 0.5) (* (* (/ 0.5 y) (+ z x)) (- z x)))
(/ (- (+ (* x x) (* y y)) (* z z)) (* y 2.0)))