Average Error: 0.0 → 0.0
Time: 6.6s
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))_*\]
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r8191056 = x;
        double r8191057 = y;
        double r8191058 = r8191056 * r8191057;
        double r8191059 = z;
        double r8191060 = t;
        double r8191061 = r8191059 * r8191060;
        double r8191062 = r8191058 + r8191061;
        double r8191063 = a;
        double r8191064 = b;
        double r8191065 = r8191063 * r8191064;
        double r8191066 = r8191062 + r8191065;
        double r8191067 = c;
        double r8191068 = i;
        double r8191069 = r8191067 * r8191068;
        double r8191070 = r8191066 + r8191069;
        return r8191070;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r8191071 = i;
        double r8191072 = c;
        double r8191073 = a;
        double r8191074 = b;
        double r8191075 = t;
        double r8191076 = z;
        double r8191077 = y;
        double r8191078 = x;
        double r8191079 = r8191077 * r8191078;
        double r8191080 = fma(r8191075, r8191076, r8191079);
        double r8191081 = fma(r8191073, r8191074, r8191080);
        double r8191082 = fma(r8191071, r8191072, r8191081);
        return r8191082;
}

\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))_*

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 2019101 +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)))