Average Error: 0.0 → 0.0
Time: 20.1s
Precision: 64
\[\left(\left(x \cdot y + z \cdot t\right) + a \cdot b\right) + c \cdot i\]
\[\mathsf{fma}\left(z, t, \mathsf{fma}\left(x, y, \mathsf{fma}\left(c, i, b \cdot a\right)\right)\right)\]
\left(\left(x \cdot y + z \cdot t\right) + a \cdot b\right) + c \cdot i
\mathsf{fma}\left(z, t, \mathsf{fma}\left(x, y, \mathsf{fma}\left(c, i, b \cdot a\right)\right)\right)
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r3712778 = x;
        double r3712779 = y;
        double r3712780 = r3712778 * r3712779;
        double r3712781 = z;
        double r3712782 = t;
        double r3712783 = r3712781 * r3712782;
        double r3712784 = r3712780 + r3712783;
        double r3712785 = a;
        double r3712786 = b;
        double r3712787 = r3712785 * r3712786;
        double r3712788 = r3712784 + r3712787;
        double r3712789 = c;
        double r3712790 = i;
        double r3712791 = r3712789 * r3712790;
        double r3712792 = r3712788 + r3712791;
        return r3712792;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r3712793 = z;
        double r3712794 = t;
        double r3712795 = x;
        double r3712796 = y;
        double r3712797 = c;
        double r3712798 = i;
        double r3712799 = b;
        double r3712800 = a;
        double r3712801 = r3712799 * r3712800;
        double r3712802 = fma(r3712797, r3712798, r3712801);
        double r3712803 = fma(r3712795, r3712796, r3712802);
        double r3712804 = fma(r3712793, r3712794, r3712803);
        return r3712804;
}

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}{\mathsf{fma}\left(z, t, \mathsf{fma}\left(x, y, \mathsf{fma}\left(c, i, a \cdot b\right)\right)\right)}\]
  3. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(z, t, \mathsf{fma}\left(x, y, \mathsf{fma}\left(c, i, b \cdot a\right)\right)\right)\]

Reproduce

herbie shell --seed 2019141 +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)))