Average Error: 0.0 → 0.0
Time: 15.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 r5967988 = d1;
        double r5967989 = d2;
        double r5967990 = r5967988 * r5967989;
        double r5967991 = d3;
        double r5967992 = r5967988 * r5967991;
        double r5967993 = r5967990 - r5967992;
        double r5967994 = d4;
        double r5967995 = r5967994 * r5967988;
        double r5967996 = r5967993 + r5967995;
        double r5967997 = r5967988 * r5967988;
        double r5967998 = r5967996 - r5967997;
        return r5967998;
}

double f(double d1, double d2, double d3, double d4) {
        double r5967999 = d1;
        double r5968000 = d2;
        double r5968001 = r5967999 * r5968000;
        double r5968002 = d3;
        double r5968003 = r5968002 * r5967999;
        double r5968004 = r5968001 - r5968003;
        double r5968005 = d4;
        double r5968006 = r5967999 * r5968005;
        double r5968007 = r5968004 + r5968006;
        double r5968008 = r5967999 * r5967999;
        double r5968009 = r5968007 - r5968008;
        return r5968009;
}

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 2019146 
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

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