Average Error: 0.0 → 0.0
Time: 6.2s
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 r1022 = d1;
        double r1023 = d2;
        double r1024 = r1022 * r1023;
        double r1025 = d3;
        double r1026 = r1022 * r1025;
        double r1027 = r1024 - r1026;
        double r1028 = d4;
        double r1029 = r1028 * r1022;
        double r1030 = r1027 + r1029;
        double r1031 = r1022 * r1022;
        double r1032 = r1030 - r1031;
        return r1032;
}

double f(double d1, double d2, double d3, double d4) {
        double r1033 = d1;
        double r1034 = d2;
        double r1035 = d3;
        double r1036 = r1034 - r1035;
        double r1037 = d4;
        double r1038 = r1037 - r1033;
        double r1039 = r1036 + r1038;
        double r1040 = r1033 * r1039;
        return r1040;
}

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