\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}0.5 \cdot \left(y + x \cdot \frac{x}{y}\right) - z \cdot \left(\frac{z}{y} \cdot 0.5\right)double f(double x, double y, double z) {
double r470187 = x;
double r470188 = r470187 * r470187;
double r470189 = y;
double r470190 = r470189 * r470189;
double r470191 = r470188 + r470190;
double r470192 = z;
double r470193 = r470192 * r470192;
double r470194 = r470191 - r470193;
double r470195 = 2.0;
double r470196 = r470189 * r470195;
double r470197 = r470194 / r470196;
return r470197;
}
double f(double x, double y, double z) {
double r470198 = 0.5;
double r470199 = y;
double r470200 = x;
double r470201 = r470200 / r470199;
double r470202 = r470200 * r470201;
double r470203 = r470199 + r470202;
double r470204 = r470198 * r470203;
double r470205 = z;
double r470206 = r470205 / r470199;
double r470207 = r470206 * r470198;
double r470208 = r470205 * r470207;
double r470209 = r470204 - r470208;
return r470209;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 29.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
Initial program 29.0
Taylor expanded around 0 12.9
Simplified12.9
rmApplied *-un-lft-identity12.9
Applied add-sqr-sqrt38.5
Applied unpow-prod-down38.5
Applied times-frac35.8
Simplified35.8
Simplified7.3
rmApplied *-un-lft-identity7.3
Applied add-sqr-sqrt34.8
Applied unpow-prod-down34.8
Applied times-frac31.3
Simplified31.3
Simplified0.2
rmApplied add-cube-cbrt0.4
Applied associate-*l*0.4
Final simplification0.1
herbie shell --seed 2019291
(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)))