Average Error: 0.0 → 0.0
Time: 5.1s
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 r3303121 = d1;
        double r3303122 = d2;
        double r3303123 = r3303121 * r3303122;
        double r3303124 = d3;
        double r3303125 = r3303121 * r3303124;
        double r3303126 = r3303123 - r3303125;
        double r3303127 = d4;
        double r3303128 = r3303127 * r3303121;
        double r3303129 = r3303126 + r3303128;
        double r3303130 = r3303121 * r3303121;
        double r3303131 = r3303129 - r3303130;
        return r3303131;
}

double f(double d1, double d2, double d3, double d4) {
        double r3303132 = d1;
        double r3303133 = d2;
        double r3303134 = r3303132 * r3303133;
        double r3303135 = d3;
        double r3303136 = r3303135 * r3303132;
        double r3303137 = r3303134 - r3303136;
        double r3303138 = d4;
        double r3303139 = r3303132 * r3303138;
        double r3303140 = r3303137 + r3303139;
        double r3303141 = r3303132 * r3303132;
        double r3303142 = r3303140 - r3303141;
        return r3303142;
}

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

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

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