Average Error: 0.0 → 0.0
Time: 9.6s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r8201486 = d1;
        double r8201487 = d2;
        double r8201488 = r8201486 * r8201487;
        double r8201489 = d3;
        double r8201490 = r8201486 * r8201489;
        double r8201491 = r8201488 - r8201490;
        double r8201492 = d4;
        double r8201493 = r8201492 * r8201486;
        double r8201494 = r8201491 + r8201493;
        double r8201495 = r8201486 * r8201486;
        double r8201496 = r8201494 - r8201495;
        return r8201496;
}

double f(double d1, double d2, double d3, double d4) {
        double r8201497 = d1;
        double r8201498 = d2;
        double r8201499 = r8201497 * r8201498;
        double r8201500 = d3;
        double r8201501 = r8201500 * r8201497;
        double r8201502 = r8201499 - r8201501;
        double r8201503 = d4;
        double r8201504 = r8201497 * r8201503;
        double r8201505 = r8201502 + r8201504;
        double r8201506 = r8201497 * r8201497;
        double r8201507 = r8201505 - r8201506;
        return r8201507;
}

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. Final simplification0.0

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

Reproduce

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

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

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