\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2}\frac{y - \frac{z + x}{\frac{y}{z - x}}}{2}double f(double x, double y, double z) {
double r190688044 = x;
double r190688045 = r190688044 * r190688044;
double r190688046 = y;
double r190688047 = r190688046 * r190688046;
double r190688048 = r190688045 + r190688047;
double r190688049 = z;
double r190688050 = r190688049 * r190688049;
double r190688051 = r190688048 - r190688050;
double r190688052 = 2.0;
double r190688053 = r190688046 * r190688052;
double r190688054 = r190688051 / r190688053;
return r190688054;
}
double f(double x, double y, double z) {
double r190688055 = y;
double r190688056 = z;
double r190688057 = x;
double r190688058 = r190688056 + r190688057;
double r190688059 = r190688056 - r190688057;
double r190688060 = r190688055 / r190688059;
double r190688061 = r190688058 / r190688060;
double r190688062 = r190688055 - r190688061;
double r190688063 = 2.0;
double r190688064 = r190688062 / r190688063;
return r190688064;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 27.9 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 27.9
Simplified12.3
rmApplied difference-of-squares12.3
Applied associate-/l*0.2
Final simplification0.2
herbie shell --seed 2019173
(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)))