Average Error: 0.2 → 0
Time: 1.6s
Precision: 64
\[\left(d \cdot 10\right) + \left(d \cdot 20\right)\]
\[\left(20 + 10\right) \cdot d\]
\left(d \cdot 10\right) + \left(d \cdot 20\right)
\left(20 + 10\right) \cdot d
double f(double d) {
        double r7120393 = d;
        double r7120394 = /* ERROR: no support for value #<cpointer:posit16> in C */;
        double r7120395 = r7120393 * r7120394;
        double r7120396 = /* ERROR: no support for value #<cpointer:posit16> in C */;
        double r7120397 = r7120393 * r7120396;
        double r7120398 = r7120395 + r7120397;
        return r7120398;
}

double f(double d) {
        double r7120399 = /* ERROR: no support for value #<cpointer:posit16> in C */;
        double r7120400 = /* ERROR: no support for value #<cpointer:posit16> in C */;
        double r7120401 = r7120399 + r7120400;
        double r7120402 = d;
        double r7120403 = r7120401 * r7120402;
        return r7120403;
}

Error

Bits error versus d

Derivation

  1. Initial program 0.2

    \[\left(d \cdot 10\right) + \left(d \cdot 20\right)\]
  2. Simplified0

    \[\leadsto \color{blue}{\left(20 + 10\right) \cdot d}\]
  3. Final simplification0

    \[\leadsto \left(20 + 10\right) \cdot d\]

Reproduce

herbie shell --seed 0 
(FPCore (d)
  :name "FastMath test1"
  (+.p16 (*.p16 d #<cpointer:posit16>) (*.p16 d #<cpointer:posit16>)))