Average Error: 0.0 → 0.0
Time: 13.6s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d4 - d3\right) + \left(d2 - d1\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d4 - d3\right) + \left(d2 - d1\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r7539123 = d1;
        double r7539124 = d2;
        double r7539125 = r7539123 * r7539124;
        double r7539126 = d3;
        double r7539127 = r7539123 * r7539126;
        double r7539128 = r7539125 - r7539127;
        double r7539129 = d4;
        double r7539130 = r7539129 * r7539123;
        double r7539131 = r7539128 + r7539130;
        double r7539132 = r7539123 * r7539123;
        double r7539133 = r7539131 - r7539132;
        return r7539133;
}

double f(double d1, double d2, double d3, double d4) {
        double r7539134 = d1;
        double r7539135 = d4;
        double r7539136 = d3;
        double r7539137 = r7539135 - r7539136;
        double r7539138 = d2;
        double r7539139 = r7539138 - r7539134;
        double r7539140 = r7539137 + r7539139;
        double r7539141 = r7539134 * r7539140;
        return r7539141;
}

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

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

Reproduce

herbie shell --seed 2019162 +o rules:numerics
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

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