Average Error: 0.0 → 0.0
Time: 12.5s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d2 - \left(d1 + d3\right)\right) + d4\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d2 - \left(d1 + d3\right)\right) + d4\right)
double f(double d1, double d2, double d3, double d4) {
        double r7395179 = d1;
        double r7395180 = d2;
        double r7395181 = r7395179 * r7395180;
        double r7395182 = d3;
        double r7395183 = r7395179 * r7395182;
        double r7395184 = r7395181 - r7395183;
        double r7395185 = d4;
        double r7395186 = r7395185 * r7395179;
        double r7395187 = r7395184 + r7395186;
        double r7395188 = r7395179 * r7395179;
        double r7395189 = r7395187 - r7395188;
        return r7395189;
}

double f(double d1, double d2, double d3, double d4) {
        double r7395190 = d1;
        double r7395191 = d2;
        double r7395192 = d3;
        double r7395193 = r7395190 + r7395192;
        double r7395194 = r7395191 - r7395193;
        double r7395195 = d4;
        double r7395196 = r7395194 + r7395195;
        double r7395197 = r7395190 * r7395196;
        return r7395197;
}

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. Simplified0.0

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

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

Reproduce

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

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

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