Average Error: 0.2 → 0.2
Time: 2.9s
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 r5210069 = d1;
        double r5210070 = r5210069 * r5210069;
        double r5210071 = r5210070 * r5210069;
        double r5210072 = r5210071 * r5210069;
        return r5210072;
}

double f(double d1) {
        double r5210073 = d1;
        double r5210074 = r5210073 * r5210073;
        double r5210075 = r5210074 * r5210073;
        double r5210076 = r5210075 * r5210073;
        return r5210076;
}

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