Average Error: 11.7 → 11.9
Time: 47.3s
Precision: 64
\[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
\[\mathsf{fma}\left(j, \left(\mathsf{fma}\left(t, c, \left(\left(-i\right) \cdot y\right)\right)\right), \left(\left(\sqrt[3]{x \cdot \left(z \cdot y - a \cdot t\right)} \cdot \sqrt[3]{x \cdot \left(z \cdot y - a \cdot t\right)}\right) \cdot \left(\sqrt[3]{z \cdot y - a \cdot t} \cdot \sqrt[3]{x}\right) - \left(c \cdot z - i \cdot a\right) \cdot b\right)\right)\]
\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)
\mathsf{fma}\left(j, \left(\mathsf{fma}\left(t, c, \left(\left(-i\right) \cdot y\right)\right)\right), \left(\left(\sqrt[3]{x \cdot \left(z \cdot y - a \cdot t\right)} \cdot \sqrt[3]{x \cdot \left(z \cdot y - a \cdot t\right)}\right) \cdot \left(\sqrt[3]{z \cdot y - a \cdot t} \cdot \sqrt[3]{x}\right) - \left(c \cdot z - i \cdot a\right) \cdot b\right)\right)
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r12397318 = x;
        double r12397319 = y;
        double r12397320 = z;
        double r12397321 = r12397319 * r12397320;
        double r12397322 = t;
        double r12397323 = a;
        double r12397324 = r12397322 * r12397323;
        double r12397325 = r12397321 - r12397324;
        double r12397326 = r12397318 * r12397325;
        double r12397327 = b;
        double r12397328 = c;
        double r12397329 = r12397328 * r12397320;
        double r12397330 = i;
        double r12397331 = r12397330 * r12397323;
        double r12397332 = r12397329 - r12397331;
        double r12397333 = r12397327 * r12397332;
        double r12397334 = r12397326 - r12397333;
        double r12397335 = j;
        double r12397336 = r12397328 * r12397322;
        double r12397337 = r12397330 * r12397319;
        double r12397338 = r12397336 - r12397337;
        double r12397339 = r12397335 * r12397338;
        double r12397340 = r12397334 + r12397339;
        return r12397340;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r12397341 = j;
        double r12397342 = t;
        double r12397343 = c;
        double r12397344 = i;
        double r12397345 = -r12397344;
        double r12397346 = y;
        double r12397347 = r12397345 * r12397346;
        double r12397348 = fma(r12397342, r12397343, r12397347);
        double r12397349 = x;
        double r12397350 = z;
        double r12397351 = r12397350 * r12397346;
        double r12397352 = a;
        double r12397353 = r12397352 * r12397342;
        double r12397354 = r12397351 - r12397353;
        double r12397355 = r12397349 * r12397354;
        double r12397356 = cbrt(r12397355);
        double r12397357 = r12397356 * r12397356;
        double r12397358 = cbrt(r12397354);
        double r12397359 = cbrt(r12397349);
        double r12397360 = r12397358 * r12397359;
        double r12397361 = r12397357 * r12397360;
        double r12397362 = r12397343 * r12397350;
        double r12397363 = r12397344 * r12397352;
        double r12397364 = r12397362 - r12397363;
        double r12397365 = b;
        double r12397366 = r12397364 * r12397365;
        double r12397367 = r12397361 - r12397366;
        double r12397368 = fma(r12397341, r12397348, r12397367);
        return r12397368;
}

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

Bits error versus j

Derivation

  1. Initial program 11.7

    \[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
  2. Simplified11.7

    \[\leadsto \color{blue}{\mathsf{fma}\left(j, \left(t \cdot c - y \cdot i\right), \left(\left(z \cdot y - t \cdot a\right) \cdot x - \left(z \cdot c - i \cdot a\right) \cdot b\right)\right)}\]
  3. Using strategy rm
  4. Applied fma-neg11.7

    \[\leadsto \mathsf{fma}\left(j, \color{blue}{\left(\mathsf{fma}\left(t, c, \left(-y \cdot i\right)\right)\right)}, \left(\left(z \cdot y - t \cdot a\right) \cdot x - \left(z \cdot c - i \cdot a\right) \cdot b\right)\right)\]
  5. Using strategy rm
  6. Applied add-cube-cbrt11.9

    \[\leadsto \mathsf{fma}\left(j, \left(\mathsf{fma}\left(t, c, \left(-y \cdot i\right)\right)\right), \left(\color{blue}{\left(\sqrt[3]{\left(z \cdot y - t \cdot a\right) \cdot x} \cdot \sqrt[3]{\left(z \cdot y - t \cdot a\right) \cdot x}\right) \cdot \sqrt[3]{\left(z \cdot y - t \cdot a\right) \cdot x}} - \left(z \cdot c - i \cdot a\right) \cdot b\right)\right)\]
  7. Using strategy rm
  8. Applied cbrt-prod11.9

    \[\leadsto \mathsf{fma}\left(j, \left(\mathsf{fma}\left(t, c, \left(-y \cdot i\right)\right)\right), \left(\left(\sqrt[3]{\left(z \cdot y - t \cdot a\right) \cdot x} \cdot \sqrt[3]{\left(z \cdot y - t \cdot a\right) \cdot x}\right) \cdot \color{blue}{\left(\sqrt[3]{z \cdot y - t \cdot a} \cdot \sqrt[3]{x}\right)} - \left(z \cdot c - i \cdot a\right) \cdot b\right)\right)\]
  9. Using strategy rm
  10. Applied *-un-lft-identity11.9

    \[\leadsto \mathsf{fma}\left(j, \left(\mathsf{fma}\left(t, c, \left(-y \cdot i\right)\right)\right), \left(\left(\sqrt[3]{\left(z \cdot y - t \cdot a\right) \cdot x} \cdot \color{blue}{\left(1 \cdot \sqrt[3]{\left(z \cdot y - t \cdot a\right) \cdot x}\right)}\right) \cdot \left(\sqrt[3]{z \cdot y - t \cdot a} \cdot \sqrt[3]{x}\right) - \left(z \cdot c - i \cdot a\right) \cdot b\right)\right)\]
  11. Final simplification11.9

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

Reproduce

herbie shell --seed 2019107 +o rules:numerics
(FPCore (x y z t a b c i j)
  :name "Linear.Matrix:det33 from linear-1.19.1.3"
  (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))