Average Error: 0.0 → 0.0
Time: 14.6s
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 r162649 = d1;
        double r162650 = d2;
        double r162651 = r162649 * r162650;
        double r162652 = d3;
        double r162653 = r162649 * r162652;
        double r162654 = r162651 - r162653;
        double r162655 = d4;
        double r162656 = r162655 * r162649;
        double r162657 = r162654 + r162656;
        double r162658 = r162649 * r162649;
        double r162659 = r162657 - r162658;
        return r162659;
}

double f(double d1, double d2, double d3, double d4) {
        double r162660 = d1;
        double r162661 = d2;
        double r162662 = d3;
        double r162663 = r162661 - r162662;
        double r162664 = d4;
        double r162665 = r162664 - r162660;
        double r162666 = r162663 + r162665;
        double r162667 = r162660 * r162666;
        return r162667;
}

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