Average Error: 26.4 → 0.2
Time: 29.4s
Precision: 64
\[\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2.0}\]
\[\frac{y + \frac{x - z}{\frac{y}{x + z}}}{2.0}\]
\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2.0}
\frac{y + \frac{x - z}{\frac{y}{x + z}}}{2.0}
double f(double x, double y, double z) {
        double r34108870 = x;
        double r34108871 = r34108870 * r34108870;
        double r34108872 = y;
        double r34108873 = r34108872 * r34108872;
        double r34108874 = r34108871 + r34108873;
        double r34108875 = z;
        double r34108876 = r34108875 * r34108875;
        double r34108877 = r34108874 - r34108876;
        double r34108878 = 2.0;
        double r34108879 = r34108872 * r34108878;
        double r34108880 = r34108877 / r34108879;
        return r34108880;
}

double f(double x, double y, double z) {
        double r34108881 = y;
        double r34108882 = x;
        double r34108883 = z;
        double r34108884 = r34108882 - r34108883;
        double r34108885 = r34108882 + r34108883;
        double r34108886 = r34108881 / r34108885;
        double r34108887 = r34108884 / r34108886;
        double r34108888 = r34108881 + r34108887;
        double r34108889 = 2.0;
        double r34108890 = r34108888 / r34108889;
        return r34108890;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original26.4
Target0.2
Herbie0.2
\[y \cdot 0.5 - \left(\frac{0.5}{y} \cdot \left(z + x\right)\right) \cdot \left(z - x\right)\]

Derivation

  1. Initial program 26.4

    \[\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2.0}\]
  2. Simplified0.2

    \[\leadsto \color{blue}{\frac{y + \frac{x - z}{\frac{y}{z + x}}}{2.0}}\]
  3. Final simplification0.2

    \[\leadsto \frac{y + \frac{x - z}{\frac{y}{x + z}}}{2.0}\]

Reproduce

herbie shell --seed 2019164 
(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)))