Average Error: 0.0 → 0.0
Time: 6.1s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(\left(d2 + d4\right) - d3\right) - d1\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(\left(d2 + d4\right) - d3\right) - d1\right)
double f(double d1, double d2, double d3, double d4) {
        double r3874857 = d1;
        double r3874858 = d2;
        double r3874859 = r3874857 * r3874858;
        double r3874860 = d3;
        double r3874861 = r3874857 * r3874860;
        double r3874862 = r3874859 - r3874861;
        double r3874863 = d4;
        double r3874864 = r3874863 * r3874857;
        double r3874865 = r3874862 + r3874864;
        double r3874866 = r3874857 * r3874857;
        double r3874867 = r3874865 - r3874866;
        return r3874867;
}

double f(double d1, double d2, double d3, double d4) {
        double r3874868 = d1;
        double r3874869 = d2;
        double r3874870 = d4;
        double r3874871 = r3874869 + r3874870;
        double r3874872 = d3;
        double r3874873 = r3874871 - r3874872;
        double r3874874 = r3874873 - r3874868;
        double r3874875 = r3874868 * r3874874;
        return r3874875;
}

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}{d1 \cdot \left(\left(\left(d2 + d4\right) - d3\right) - d1\right)}\]
  3. Final simplification0.0

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

Reproduce

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

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

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