Average Error: 0.0 → 0.0
Time: 8.5s
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 r148748 = d1;
        double r148749 = d2;
        double r148750 = r148748 * r148749;
        double r148751 = d3;
        double r148752 = r148748 * r148751;
        double r148753 = r148750 - r148752;
        double r148754 = d4;
        double r148755 = r148754 * r148748;
        double r148756 = r148753 + r148755;
        double r148757 = r148748 * r148748;
        double r148758 = r148756 - r148757;
        return r148758;
}

double f(double d1, double d2, double d3, double d4) {
        double r148759 = d1;
        double r148760 = d2;
        double r148761 = r148759 * r148760;
        double r148762 = d3;
        double r148763 = r148759 * r148762;
        double r148764 = r148761 - r148763;
        double r148765 = d4;
        double r148766 = r148765 * r148759;
        double r148767 = r148764 + r148766;
        double r148768 = r148759 * r148759;
        double r148769 = r148767 - r148768;
        return r148769;
}

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

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

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