Average Error: 12.3 → 11.1
Time: 11.8s
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)\]
\[\begin{array}{l} \mathbf{if}\;x \le -24461250474772234537684702372140140199940 \lor \neg \left(x \le 3.642905557903934794457798624709007377005 \cdot 10^{61}\right):\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \left(y \cdot z\right) + \left(x \cdot \left(\sqrt[3]{-t \cdot a} \cdot \sqrt[3]{-t \cdot a}\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{-t \cdot a}} \cdot \sqrt[3]{\sqrt[3]{-t \cdot a}}\right) \cdot \sqrt[3]{\sqrt[3]{-t \cdot a}}\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(\left(x \cdot y\right) \cdot z + x \cdot \left(-t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\ \end{array}\]
\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)
\begin{array}{l}
\mathbf{if}\;x \le -24461250474772234537684702372140140199940 \lor \neg \left(x \le 3.642905557903934794457798624709007377005 \cdot 10^{61}\right):\\
\;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \left(y \cdot z\right) + \left(x \cdot \left(\sqrt[3]{-t \cdot a} \cdot \sqrt[3]{-t \cdot a}\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{-t \cdot a}} \cdot \sqrt[3]{\sqrt[3]{-t \cdot a}}\right) \cdot \sqrt[3]{\sqrt[3]{-t \cdot a}}\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(\left(x \cdot y\right) \cdot z + x \cdot \left(-t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r150247 = x;
        double r150248 = y;
        double r150249 = z;
        double r150250 = r150248 * r150249;
        double r150251 = t;
        double r150252 = a;
        double r150253 = r150251 * r150252;
        double r150254 = r150250 - r150253;
        double r150255 = r150247 * r150254;
        double r150256 = b;
        double r150257 = c;
        double r150258 = r150257 * r150249;
        double r150259 = i;
        double r150260 = r150259 * r150252;
        double r150261 = r150258 - r150260;
        double r150262 = r150256 * r150261;
        double r150263 = r150255 - r150262;
        double r150264 = j;
        double r150265 = r150257 * r150251;
        double r150266 = r150259 * r150248;
        double r150267 = r150265 - r150266;
        double r150268 = r150264 * r150267;
        double r150269 = r150263 + r150268;
        return r150269;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r150270 = x;
        double r150271 = -2.4461250474772235e+40;
        bool r150272 = r150270 <= r150271;
        double r150273 = 3.642905557903935e+61;
        bool r150274 = r150270 <= r150273;
        double r150275 = !r150274;
        bool r150276 = r150272 || r150275;
        double r150277 = c;
        double r150278 = t;
        double r150279 = r150277 * r150278;
        double r150280 = i;
        double r150281 = y;
        double r150282 = r150280 * r150281;
        double r150283 = r150279 - r150282;
        double r150284 = j;
        double r150285 = z;
        double r150286 = r150281 * r150285;
        double r150287 = r150270 * r150286;
        double r150288 = a;
        double r150289 = r150278 * r150288;
        double r150290 = -r150289;
        double r150291 = cbrt(r150290);
        double r150292 = r150291 * r150291;
        double r150293 = r150270 * r150292;
        double r150294 = cbrt(r150291);
        double r150295 = r150294 * r150294;
        double r150296 = r150295 * r150294;
        double r150297 = r150293 * r150296;
        double r150298 = r150287 + r150297;
        double r150299 = b;
        double r150300 = r150277 * r150285;
        double r150301 = r150280 * r150288;
        double r150302 = r150300 - r150301;
        double r150303 = r150299 * r150302;
        double r150304 = r150298 - r150303;
        double r150305 = fma(r150283, r150284, r150304);
        double r150306 = r150270 * r150281;
        double r150307 = r150306 * r150285;
        double r150308 = r150270 * r150290;
        double r150309 = r150307 + r150308;
        double r150310 = r150309 - r150303;
        double r150311 = fma(r150283, r150284, r150310);
        double r150312 = r150276 ? r150305 : r150311;
        return r150312;
}

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. Split input into 2 regimes
  2. if x < -2.4461250474772235e+40 or 3.642905557903935e+61 < x

    1. Initial program 7.8

      \[\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. Simplified7.8

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

      \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \color{blue}{\left(y \cdot z + \left(-t \cdot a\right)\right)} - b \cdot \left(c \cdot z - i \cdot a\right)\right)\]
    5. Applied distribute-lft-in7.8

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

      \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \left(y \cdot z\right) + x \cdot \color{blue}{\left(\left(\sqrt[3]{-t \cdot a} \cdot \sqrt[3]{-t \cdot a}\right) \cdot \sqrt[3]{-t \cdot a}\right)}\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\]
    8. Applied associate-*r*8.1

      \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \left(y \cdot z\right) + \color{blue}{\left(x \cdot \left(\sqrt[3]{-t \cdot a} \cdot \sqrt[3]{-t \cdot a}\right)\right) \cdot \sqrt[3]{-t \cdot a}}\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\]
    9. Using strategy rm
    10. Applied add-cube-cbrt8.2

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

    if -2.4461250474772235e+40 < x < 3.642905557903935e+61

    1. Initial program 14.2

      \[\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. Simplified14.2

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

      \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \color{blue}{\left(y \cdot z + \left(-t \cdot a\right)\right)} - b \cdot \left(c \cdot z - i \cdot a\right)\right)\]
    5. Applied distribute-lft-in14.2

      \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, \color{blue}{\left(x \cdot \left(y \cdot z\right) + x \cdot \left(-t \cdot a\right)\right)} - b \cdot \left(c \cdot z - i \cdot a\right)\right)\]
    6. Using strategy rm
    7. Applied associate-*r*12.3

      \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(\color{blue}{\left(x \cdot y\right) \cdot z} + x \cdot \left(-t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification11.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -24461250474772234537684702372140140199940 \lor \neg \left(x \le 3.642905557903934794457798624709007377005 \cdot 10^{61}\right):\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \left(y \cdot z\right) + \left(x \cdot \left(\sqrt[3]{-t \cdot a} \cdot \sqrt[3]{-t \cdot a}\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{-t \cdot a}} \cdot \sqrt[3]{\sqrt[3]{-t \cdot a}}\right) \cdot \sqrt[3]{\sqrt[3]{-t \cdot a}}\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(\left(x \cdot y\right) \cdot z + x \cdot \left(-t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\ \end{array}\]

Reproduce

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