Average Error: 0.0 → 0.0
Time: 3.4s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(d1 \cdot \left(d2 - 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(d1 \cdot \left(d2 - d3\right) + d4 \cdot d1\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r232805 = d1;
        double r232806 = d2;
        double r232807 = r232805 * r232806;
        double r232808 = d3;
        double r232809 = r232805 * r232808;
        double r232810 = r232807 - r232809;
        double r232811 = d4;
        double r232812 = r232811 * r232805;
        double r232813 = r232810 + r232812;
        double r232814 = r232805 * r232805;
        double r232815 = r232813 - r232814;
        return r232815;
}

double f(double d1, double d2, double d3, double d4) {
        double r232816 = d1;
        double r232817 = d2;
        double r232818 = d3;
        double r232819 = r232817 - r232818;
        double r232820 = r232816 * r232819;
        double r232821 = d4;
        double r232822 = r232821 * r232816;
        double r232823 = r232820 + r232822;
        double r232824 = r232816 * r232816;
        double r232825 = r232823 - r232824;
        return r232825;
}

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. Using strategy rm
  3. Applied distribute-lft-out--0.0

    \[\leadsto \left(\color{blue}{d1 \cdot \left(d2 - d3\right)} + d4 \cdot d1\right) - d1 \cdot d1\]
  4. Final simplification0.0

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

Reproduce

herbie shell --seed 2020034 
(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)))