Average Error: 0.1 → 0.1
Time: 1.9m
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 r3988806 = d1;
        double r3988807 = r3988806 * r3988806;
        double r3988808 = r3988807 * r3988806;
        double r3988809 = r3988808 * r3988806;
        return r3988809;
}

double f(double d1) {
        double r3988810 = d1;
        double r3988811 = r3988810 * r3988810;
        double r3988812 = r3988811 * r3988810;
        double r3988813 = r3988812 * r3988810;
        return r3988813;
}

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 2019162 +o rules:numerics
(FPCore (d1)
  :name "FastMath repmul"
  (*.p16 (*.p16 (*.p16 d1 d1) d1) d1))