Average Error: 0.0 → 0.0
Time: 5.4s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\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 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r412005 = d1;
        double r412006 = d2;
        double r412007 = r412005 * r412006;
        double r412008 = d3;
        double r412009 = r412005 * r412008;
        double r412010 = r412007 - r412009;
        double r412011 = d4;
        double r412012 = r412011 * r412005;
        double r412013 = r412010 + r412012;
        double r412014 = r412005 * r412005;
        double r412015 = r412013 - r412014;
        return r412015;
}

double f(double d1, double d2, double d3, double d4) {
        double r412016 = d1;
        double r412017 = d2;
        double r412018 = r412016 * r412017;
        double r412019 = d3;
        double r412020 = r412016 * r412019;
        double r412021 = r412018 - r412020;
        double r412022 = d4;
        double r412023 = r412022 * r412016;
        double r412024 = r412021 + r412023;
        double r412025 = r412016 * r412016;
        double r412026 = r412024 - r412025;
        return r412026;
}

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 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]

Reproduce

herbie shell --seed 2020100 
(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)))