Average Error: 0.0 → 0.0
Time: 25.3s
Precision: 64
\[\left(\left(x \cdot y + z \cdot t\right) + a \cdot b\right) + c \cdot i\]
\[(i \cdot c + \left((a \cdot b + \left((t \cdot z + \left(y \cdot x\right))_*\right))_*\right))_*\]
\left(\left(x \cdot y + z \cdot t\right) + a \cdot b\right) + c \cdot i
(i \cdot c + \left((a \cdot b + \left((t \cdot z + \left(y \cdot x\right))_*\right))_*\right))_*
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r13409194 = x;
        double r13409195 = y;
        double r13409196 = r13409194 * r13409195;
        double r13409197 = z;
        double r13409198 = t;
        double r13409199 = r13409197 * r13409198;
        double r13409200 = r13409196 + r13409199;
        double r13409201 = a;
        double r13409202 = b;
        double r13409203 = r13409201 * r13409202;
        double r13409204 = r13409200 + r13409203;
        double r13409205 = c;
        double r13409206 = i;
        double r13409207 = r13409205 * r13409206;
        double r13409208 = r13409204 + r13409207;
        return r13409208;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r13409209 = i;
        double r13409210 = c;
        double r13409211 = a;
        double r13409212 = b;
        double r13409213 = t;
        double r13409214 = z;
        double r13409215 = y;
        double r13409216 = x;
        double r13409217 = r13409215 * r13409216;
        double r13409218 = fma(r13409213, r13409214, r13409217);
        double r13409219 = fma(r13409211, r13409212, r13409218);
        double r13409220 = fma(r13409209, r13409210, r13409219);
        return r13409220;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus i

Derivation

  1. Initial program 0.0

    \[\left(\left(x \cdot y + z \cdot t\right) + a \cdot b\right) + c \cdot i\]
  2. Simplified0.0

    \[\leadsto \color{blue}{(i \cdot c + \left((a \cdot b + \left((x \cdot y + \left(z \cdot t\right))_*\right))_*\right))_*}\]
  3. Taylor expanded around -inf 0.0

    \[\leadsto (i \cdot c + \left((a \cdot b + \color{blue}{\left(t \cdot z + x \cdot y\right)})_*\right))_*\]
  4. Simplified0.0

    \[\leadsto (i \cdot c + \left((a \cdot b + \color{blue}{\left((t \cdot z + \left(x \cdot y\right))_*\right)})_*\right))_*\]
  5. Final simplification0.0

    \[\leadsto (i \cdot c + \left((a \cdot b + \left((t \cdot z + \left(y \cdot x\right))_*\right))_*\right))_*\]

Reproduce

herbie shell --seed 2019119 +o rules:numerics
(FPCore (x y z t a b c i)
  :name "Linear.V4:$cdot from linear-1.19.1.3"
  (+ (+ (+ (* x y) (* z t)) (* a b)) (* c i)))