Average Error: 0.0 → 0.0
Time: 14.0s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(d4 + \left(d2 - d3\right)\right) \cdot d1 - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(d4 + \left(d2 - d3\right)\right) \cdot d1 - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r12034794 = d1;
        double r12034795 = d2;
        double r12034796 = r12034794 * r12034795;
        double r12034797 = d3;
        double r12034798 = r12034794 * r12034797;
        double r12034799 = r12034796 - r12034798;
        double r12034800 = d4;
        double r12034801 = r12034800 * r12034794;
        double r12034802 = r12034799 + r12034801;
        double r12034803 = r12034794 * r12034794;
        double r12034804 = r12034802 - r12034803;
        return r12034804;
}

double f(double d1, double d2, double d3, double d4) {
        double r12034805 = d4;
        double r12034806 = d2;
        double r12034807 = d3;
        double r12034808 = r12034806 - r12034807;
        double r12034809 = r12034805 + r12034808;
        double r12034810 = d1;
        double r12034811 = r12034809 * r12034810;
        double r12034812 = r12034810 * r12034810;
        double r12034813 = r12034811 - r12034812;
        return r12034813;
}

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. Taylor expanded around inf 0.0

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

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

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

Reproduce

herbie shell --seed 2019172 
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

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