Average Error: 0.0 → 0.0
Time: 16.2s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(d4 \cdot d1 + \left(d2 - d3\right) \cdot d1\right) - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(d4 \cdot d1 + \left(d2 - d3\right) \cdot d1\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r10871024 = d1;
        double r10871025 = d2;
        double r10871026 = r10871024 * r10871025;
        double r10871027 = d3;
        double r10871028 = r10871024 * r10871027;
        double r10871029 = r10871026 - r10871028;
        double r10871030 = d4;
        double r10871031 = r10871030 * r10871024;
        double r10871032 = r10871029 + r10871031;
        double r10871033 = r10871024 * r10871024;
        double r10871034 = r10871032 - r10871033;
        return r10871034;
}

double f(double d1, double d2, double d3, double d4) {
        double r10871035 = d4;
        double r10871036 = d1;
        double r10871037 = r10871035 * r10871036;
        double r10871038 = d2;
        double r10871039 = d3;
        double r10871040 = r10871038 - r10871039;
        double r10871041 = r10871040 * r10871036;
        double r10871042 = r10871037 + r10871041;
        double r10871043 = r10871036 * r10871036;
        double r10871044 = r10871042 - r10871043;
        return r10871044;
}

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 distribute-lft-out--0.0

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

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

Reproduce

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

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

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