Average Error: 0.0 → 0.0
Time: 12.7s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot d2 - d1 \cdot \left(d3 - \left(d4 - d1\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot d2 - d1 \cdot \left(d3 - \left(d4 - d1\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r128898 = d1;
        double r128899 = d2;
        double r128900 = r128898 * r128899;
        double r128901 = d3;
        double r128902 = r128898 * r128901;
        double r128903 = r128900 - r128902;
        double r128904 = d4;
        double r128905 = r128904 * r128898;
        double r128906 = r128903 + r128905;
        double r128907 = r128898 * r128898;
        double r128908 = r128906 - r128907;
        return r128908;
}

double f(double d1, double d2, double d3, double d4) {
        double r128909 = d1;
        double r128910 = d2;
        double r128911 = r128909 * r128910;
        double r128912 = d3;
        double r128913 = d4;
        double r128914 = r128913 - r128909;
        double r128915 = r128912 - r128914;
        double r128916 = r128909 * r128915;
        double r128917 = r128911 - r128916;
        return r128917;
}

Error

Bits error versus d1

Bits error versus d2

Bits error versus d3

Bits error versus d4

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.0
Target0.0
Herbie0.0
\[d1 \cdot \left(\left(\left(d2 - d3\right) + d4\right) - d1\right)\]

Derivation

  1. Initial program 0.0

    \[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
  2. Using strategy rm
  3. Applied associate-+l-0.0

    \[\leadsto \color{blue}{\left(d1 \cdot d2 - \left(d1 \cdot d3 - d4 \cdot d1\right)\right)} - d1 \cdot d1\]
  4. Applied associate--l-0.0

    \[\leadsto \color{blue}{d1 \cdot d2 - \left(\left(d1 \cdot d3 - d4 \cdot d1\right) + d1 \cdot d1\right)}\]
  5. Simplified0.0

    \[\leadsto d1 \cdot d2 - \color{blue}{d1 \cdot \left(d3 - \left(d4 - d1\right)\right)}\]
  6. Final simplification0.0

    \[\leadsto d1 \cdot d2 - d1 \cdot \left(d3 - \left(d4 - d1\right)\right)\]

Reproduce

herbie shell --seed 2019326 
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"
  :precision binary64

  :herbie-target
  (* d1 (- (+ (- d2 d3) d4) d1))

  (- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))