Average Error: 12.1 → 12.3
Time: 11.0s
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 -5.6638058677896054 \cdot 10^{-176}:\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(\left(\left(\sqrt[3]{\sqrt[3]{c \cdot z - i \cdot a} \cdot \sqrt[3]{c \cdot z - i \cdot a}} \cdot \sqrt[3]{\sqrt[3]{c \cdot z - i \cdot a}}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right)\right)\\ \mathbf{elif}\;x \le 3.5355044355755603 \cdot 10^{-198}:\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot 0 - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \sqrt{x} \cdot \left(\sqrt{x} \cdot \left(y \cdot z - 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 -5.6638058677896054 \cdot 10^{-176}:\\
\;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(\left(\left(\sqrt[3]{\sqrt[3]{c \cdot z - i \cdot a} \cdot \sqrt[3]{c \cdot z - i \cdot a}} \cdot \sqrt[3]{\sqrt[3]{c \cdot z - i \cdot a}}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right)\right)\\

\mathbf{elif}\;x \le 3.5355044355755603 \cdot 10^{-198}:\\
\;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot 0 - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \sqrt{x} \cdot \left(\sqrt{x} \cdot \left(y \cdot z - 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 r77659 = x;
        double r77660 = y;
        double r77661 = z;
        double r77662 = r77660 * r77661;
        double r77663 = t;
        double r77664 = a;
        double r77665 = r77663 * r77664;
        double r77666 = r77662 - r77665;
        double r77667 = r77659 * r77666;
        double r77668 = b;
        double r77669 = c;
        double r77670 = r77669 * r77661;
        double r77671 = i;
        double r77672 = r77671 * r77664;
        double r77673 = r77670 - r77672;
        double r77674 = r77668 * r77673;
        double r77675 = r77667 - r77674;
        double r77676 = j;
        double r77677 = r77669 * r77663;
        double r77678 = r77671 * r77660;
        double r77679 = r77677 - r77678;
        double r77680 = r77676 * r77679;
        double r77681 = r77675 + r77680;
        return r77681;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r77682 = x;
        double r77683 = -5.6638058677896054e-176;
        bool r77684 = r77682 <= r77683;
        double r77685 = c;
        double r77686 = t;
        double r77687 = r77685 * r77686;
        double r77688 = i;
        double r77689 = y;
        double r77690 = r77688 * r77689;
        double r77691 = r77687 - r77690;
        double r77692 = j;
        double r77693 = z;
        double r77694 = r77689 * r77693;
        double r77695 = a;
        double r77696 = r77686 * r77695;
        double r77697 = r77694 - r77696;
        double r77698 = r77682 * r77697;
        double r77699 = b;
        double r77700 = r77685 * r77693;
        double r77701 = r77688 * r77695;
        double r77702 = r77700 - r77701;
        double r77703 = cbrt(r77702);
        double r77704 = r77703 * r77703;
        double r77705 = cbrt(r77704);
        double r77706 = cbrt(r77703);
        double r77707 = r77705 * r77706;
        double r77708 = r77707 * r77703;
        double r77709 = r77708 * r77703;
        double r77710 = r77699 * r77709;
        double r77711 = r77698 - r77710;
        double r77712 = fma(r77691, r77692, r77711);
        double r77713 = 3.53550443557556e-198;
        bool r77714 = r77682 <= r77713;
        double r77715 = cbrt(r77682);
        double r77716 = r77715 * r77715;
        double r77717 = 0.0;
        double r77718 = r77716 * r77717;
        double r77719 = r77699 * r77702;
        double r77720 = r77718 - r77719;
        double r77721 = fma(r77691, r77692, r77720);
        double r77722 = sqrt(r77682);
        double r77723 = r77722 * r77697;
        double r77724 = r77722 * r77723;
        double r77725 = r77724 - r77719;
        double r77726 = fma(r77691, r77692, r77725);
        double r77727 = r77714 ? r77721 : r77726;
        double r77728 = r77684 ? r77712 : r77727;
        return r77728;
}

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 3 regimes
  2. if x < -5.6638058677896054e-176

    1. Initial program 10.1

      \[\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. Simplified10.1

      \[\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 add-cube-cbrt10.4

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

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

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

    if -5.6638058677896054e-176 < x < 3.53550443557556e-198

    1. Initial program 16.4

      \[\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. Simplified16.4

      \[\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 add-cube-cbrt16.5

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

      \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, \color{blue}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \left(y \cdot z - t \cdot a\right)\right)} - b \cdot \left(c \cdot z - i \cdot a\right)\right)\]
    6. Taylor expanded around 0 16.5

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

    if 3.53550443557556e-198 < x

    1. Initial program 11.0

      \[\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.0

      \[\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 add-sqr-sqrt11.1

      \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, \color{blue}{\left(\sqrt{x} \cdot \sqrt{x}\right)} \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\]
    5. Applied associate-*l*11.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -5.6638058677896054 \cdot 10^{-176}:\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(\left(\left(\sqrt[3]{\sqrt[3]{c \cdot z - i \cdot a} \cdot \sqrt[3]{c \cdot z - i \cdot a}} \cdot \sqrt[3]{\sqrt[3]{c \cdot z - i \cdot a}}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right)\right)\\ \mathbf{elif}\;x \le 3.5355044355755603 \cdot 10^{-198}:\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot 0 - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \sqrt{x} \cdot \left(\sqrt{x} \cdot \left(y \cdot z - t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)\\ \end{array}\]

Reproduce

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