Average Error: 0.0 → 0.0
Time: 2.7s
Precision: 64
\[\left(x + y\right) \cdot \left(z + 1\right)\]
\[z \cdot \left(x + y\right) + 1 \cdot \left(x + y\right)\]
\left(x + y\right) \cdot \left(z + 1\right)
z \cdot \left(x + y\right) + 1 \cdot \left(x + y\right)
double f(double x, double y, double z) {
        double r49898 = x;
        double r49899 = y;
        double r49900 = r49898 + r49899;
        double r49901 = z;
        double r49902 = 1.0;
        double r49903 = r49901 + r49902;
        double r49904 = r49900 * r49903;
        return r49904;
}

double f(double x, double y, double z) {
        double r49905 = z;
        double r49906 = x;
        double r49907 = y;
        double r49908 = r49906 + r49907;
        double r49909 = r49905 * r49908;
        double r49910 = 1.0;
        double r49911 = r49910 * r49908;
        double r49912 = r49909 + r49911;
        return r49912;
}

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

Derivation

  1. Initial program 0.0

    \[\left(x + y\right) \cdot \left(z + 1\right)\]
  2. Using strategy rm
  3. Applied distribute-lft-in0.0

    \[\leadsto \color{blue}{\left(x + y\right) \cdot z + \left(x + y\right) \cdot 1}\]
  4. Simplified0.0

    \[\leadsto \color{blue}{z \cdot \left(x + y\right)} + \left(x + y\right) \cdot 1\]
  5. Simplified0.0

    \[\leadsto z \cdot \left(x + y\right) + \color{blue}{1 \cdot \left(x + y\right)}\]
  6. Final simplification0.0

    \[\leadsto z \cdot \left(x + y\right) + 1 \cdot \left(x + y\right)\]

Reproduce

herbie shell --seed 2020065 
(FPCore (x y z)
  :name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, G"
  :precision binary64
  (* (+ x y) (+ z 1)))