Average Error: 0.0 → 0.0
Time: 4.5s
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 r408114 = d1;
        double r408115 = d2;
        double r408116 = r408114 * r408115;
        double r408117 = d3;
        double r408118 = r408114 * r408117;
        double r408119 = r408116 - r408118;
        double r408120 = d4;
        double r408121 = r408120 * r408114;
        double r408122 = r408119 + r408121;
        double r408123 = r408114 * r408114;
        double r408124 = r408122 - r408123;
        return r408124;
}

double f(double d1, double d2, double d3, double d4) {
        double r408125 = d1;
        double r408126 = d2;
        double r408127 = d3;
        double r408128 = r408126 - r408127;
        double r408129 = d4;
        double r408130 = r408129 - r408125;
        double r408131 = r408128 + r408130;
        double r408132 = r408125 * r408131;
        return r408132;
}

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 2020035 
(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)))