Average Error: 0.2 → 0.2
Time: 2.8s
Precision: 64
\[\left(\left(d1 \cdot d1\right) \cdot d1\right) \cdot d1\]
\[\left(\left(d1 \cdot d1\right) \cdot d1\right) \cdot d1\]
double f(double d1) {
        double r530425 = d1;
        double r530426 = r530425 * r530425;
        double r530427 = r530426 * r530425;
        double r530428 = r530427 * r530425;
        return r530428;
}

double f(double d1) {
        double r530429 = d1;
        double r530430 = r530429 * r530429;
        double r530431 = r530430 * r530429;
        double r530432 = r530431 * r530429;
        return r530432;
}

\left(\left(d1 \cdot d1\right) \cdot d1\right) \cdot d1
\left(\left(d1 \cdot d1\right) \cdot d1\right) \cdot d1

Error

Bits error versus d1

Derivation

  1. Initial program 0.2

    \[\left(\left(d1 \cdot d1\right) \cdot d1\right) \cdot d1\]
  2. Final simplification0.2

    \[\leadsto \left(\left(d1 \cdot d1\right) \cdot d1\right) \cdot d1\]

Reproduce

herbie shell --seed 2019102 +o rules:numerics
(FPCore (d1)
  :name "FastMath repmul"
  (*.p16 (*.p16 (*.p16 d1 d1) d1) d1))