Average Error: 0.3 → 0.3
Time: 9.2s
Precision: 64
\[\left(d1 \cdot d2 + \left(d3 + 5\right) \cdot d1\right) + d1 \cdot 32\]
\[\left(d1 \cdot d2 + \left(d3 + 5\right) \cdot d1\right) + d1 \cdot 32\]
double f(double d1, double d2, double d3) {
        double r2246095 = d1;
        double r2246096 = d2;
        double r2246097 = r2246095 * r2246096;
        double r2246098 = d3;
        double r2246099 = 5.0;
        double r2246100 = r2246098 + r2246099;
        double r2246101 = r2246100 * r2246095;
        double r2246102 = r2246097 + r2246101;
        double r2246103 = 32.0;
        double r2246104 = r2246095 * r2246103;
        double r2246105 = r2246102 + r2246104;
        return r2246105;
}

double f(double d1, double d2, double d3) {
        double r2246106 = d1;
        double r2246107 = d2;
        double r2246108 = r2246106 * r2246107;
        double r2246109 = d3;
        double r2246110 = 5.0;
        double r2246111 = r2246109 + r2246110;
        double r2246112 = r2246111 * r2246106;
        double r2246113 = r2246108 + r2246112;
        double r2246114 = 32.0;
        double r2246115 = r2246106 * r2246114;
        double r2246116 = r2246113 + r2246115;
        return r2246116;
}

\left(d1 \cdot d2 + \left(d3 + 5\right) \cdot d1\right) + d1 \cdot 32
\left(d1 \cdot d2 + \left(d3 + 5\right) \cdot d1\right) + d1 \cdot 32

Error

Bits error versus d1

Bits error versus d2

Bits error versus d3

Derivation

  1. Initial program 0.3

    \[\frac{\left(\frac{\left(d1 \cdot d2\right)}{\left(\left(\frac{d3}{\left(5\right)}\right) \cdot d1\right)}\right)}{\left(d1 \cdot \left(32\right)\right)}\]
  2. Final simplification0.3

    \[\leadsto \left(d1 \cdot d2 + \left(d3 + 5\right) \cdot d1\right) + d1 \cdot 32\]

Reproduce

herbie shell --seed 2019102 
(FPCore (d1 d2 d3)
  :name "FastMath dist3"
  (+.p16 (+.p16 (*.p16 d1 d2) (*.p16 (+.p16 d3 (real->posit16 5)) d1)) (*.p16 d1 (real->posit16 32))))