Average Error: 0.1 → 0.1
Time: 3.1s
Precision: 64
\[\left(\left(d1 \cdot d1\right) \cdot d1\right) \cdot d1\]
\[\left(\left(d1 \cdot d1\right) \cdot d1\right) \cdot d1\]
\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 r5114560 = d1;
        double r5114561 = r5114560 * r5114560;
        double r5114562 = r5114561 * r5114560;
        double r5114563 = r5114562 * r5114560;
        return r5114563;
}

double f(double d1) {
        double r5114564 = d1;
        double r5114565 = r5114564 * r5114564;
        double r5114566 = r5114565 * r5114564;
        double r5114567 = r5114566 * r5114564;
        return r5114567;
}

Error

Bits error versus d1

Derivation

  1. Initial program 0.1

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

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

Reproduce

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