Average Error: 0.0 → 0.0
Time: 6.5s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(d1 \cdot d2 - \left(d3 - d4\right) \cdot d1\right) - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(d1 \cdot d2 - \left(d3 - d4\right) \cdot d1\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r10042342 = d1;
        double r10042343 = d2;
        double r10042344 = r10042342 * r10042343;
        double r10042345 = d3;
        double r10042346 = r10042342 * r10042345;
        double r10042347 = r10042344 - r10042346;
        double r10042348 = d4;
        double r10042349 = r10042348 * r10042342;
        double r10042350 = r10042347 + r10042349;
        double r10042351 = r10042342 * r10042342;
        double r10042352 = r10042350 - r10042351;
        return r10042352;
}

double f(double d1, double d2, double d3, double d4) {
        double r10042353 = d1;
        double r10042354 = d2;
        double r10042355 = r10042353 * r10042354;
        double r10042356 = d3;
        double r10042357 = d4;
        double r10042358 = r10042356 - r10042357;
        double r10042359 = r10042358 * r10042353;
        double r10042360 = r10042355 - r10042359;
        double r10042361 = r10042353 * r10042353;
        double r10042362 = r10042360 - r10042361;
        return r10042362;
}

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

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

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

Reproduce

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

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

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