Average Error: 0.0 → 0.0
Time: 3.7s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d2 - d3\right) + \left(d4 - d1\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d2 - d3\right) + \left(d4 - d1\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r342840 = d1;
        double r342841 = d2;
        double r342842 = r342840 * r342841;
        double r342843 = d3;
        double r342844 = r342840 * r342843;
        double r342845 = r342842 - r342844;
        double r342846 = d4;
        double r342847 = r342846 * r342840;
        double r342848 = r342845 + r342847;
        double r342849 = r342840 * r342840;
        double r342850 = r342848 - r342849;
        return r342850;
}

double f(double d1, double d2, double d3, double d4) {
        double r342851 = d1;
        double r342852 = d2;
        double r342853 = d3;
        double r342854 = r342852 - r342853;
        double r342855 = d4;
        double r342856 = r342855 - r342851;
        double r342857 = r342854 + r342856;
        double r342858 = r342851 * r342857;
        return r342858;
}

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

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

Reproduce

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

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

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