Average Error: 0.0 → 0.0
Time: 14.0s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(d2 - \left(d3 - d4\right)\right) \cdot d1 - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(d2 - \left(d3 - d4\right)\right) \cdot d1 - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r7071592 = d1;
        double r7071593 = d2;
        double r7071594 = r7071592 * r7071593;
        double r7071595 = d3;
        double r7071596 = r7071592 * r7071595;
        double r7071597 = r7071594 - r7071596;
        double r7071598 = d4;
        double r7071599 = r7071598 * r7071592;
        double r7071600 = r7071597 + r7071599;
        double r7071601 = r7071592 * r7071592;
        double r7071602 = r7071600 - r7071601;
        return r7071602;
}

double f(double d1, double d2, double d3, double d4) {
        double r7071603 = d2;
        double r7071604 = d3;
        double r7071605 = d4;
        double r7071606 = r7071604 - r7071605;
        double r7071607 = r7071603 - r7071606;
        double r7071608 = d1;
        double r7071609 = r7071607 * r7071608;
        double r7071610 = r7071608 * r7071608;
        double r7071611 = r7071609 - r7071610;
        return r7071611;
}

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. Taylor expanded around inf 0.0

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

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

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

Reproduce

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

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

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