Average Error: 12.3 → 9.4
Time: 7.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}\;j \le -4.1275721915858132 \cdot 10^{116} \lor \neg \left(j \le 3.8264923473504794 \cdot 10^{79}\right):\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)} \cdot \sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)}\right) \cdot \sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)}\right) + \left(j \cdot \left(c \cdot t\right) + j \cdot \left(-i \cdot y\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(j \cdot c\right) \cdot t + -1 \cdot \left(i \cdot \left(y \cdot j\right)\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}\;j \le -4.1275721915858132 \cdot 10^{116} \lor \neg \left(j \le 3.8264923473504794 \cdot 10^{79}\right):\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)} \cdot \sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)}\right) \cdot \sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)}\right) + \left(j \cdot \left(c \cdot t\right) + j \cdot \left(-i \cdot y\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(j \cdot c\right) \cdot t + -1 \cdot \left(i \cdot \left(y \cdot j\right)\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 r525830 = x;
        double r525831 = y;
        double r525832 = z;
        double r525833 = r525831 * r525832;
        double r525834 = t;
        double r525835 = a;
        double r525836 = r525834 * r525835;
        double r525837 = r525833 - r525836;
        double r525838 = r525830 * r525837;
        double r525839 = b;
        double r525840 = c;
        double r525841 = r525840 * r525832;
        double r525842 = i;
        double r525843 = r525842 * r525835;
        double r525844 = r525841 - r525843;
        double r525845 = r525839 * r525844;
        double r525846 = r525838 - r525845;
        double r525847 = j;
        double r525848 = r525840 * r525834;
        double r525849 = r525842 * r525831;
        double r525850 = r525848 - r525849;
        double r525851 = r525847 * r525850;
        double r525852 = r525846 + r525851;
        return r525852;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r525853 = j;
        double r525854 = -4.127572191585813e+116;
        bool r525855 = r525853 <= r525854;
        double r525856 = 3.8264923473504794e+79;
        bool r525857 = r525853 <= r525856;
        double r525858 = !r525857;
        bool r525859 = r525855 || r525858;
        double r525860 = x;
        double r525861 = y;
        double r525862 = z;
        double r525863 = r525861 * r525862;
        double r525864 = t;
        double r525865 = a;
        double r525866 = r525864 * r525865;
        double r525867 = r525863 - r525866;
        double r525868 = r525860 * r525867;
        double r525869 = b;
        double r525870 = c;
        double r525871 = r525870 * r525862;
        double r525872 = i;
        double r525873 = r525872 * r525865;
        double r525874 = r525871 - r525873;
        double r525875 = r525869 * r525874;
        double r525876 = cbrt(r525875);
        double r525877 = r525876 * r525876;
        double r525878 = r525877 * r525876;
        double r525879 = r525868 - r525878;
        double r525880 = r525870 * r525864;
        double r525881 = r525853 * r525880;
        double r525882 = r525872 * r525861;
        double r525883 = -r525882;
        double r525884 = r525853 * r525883;
        double r525885 = r525881 + r525884;
        double r525886 = r525879 + r525885;
        double r525887 = r525868 - r525875;
        double r525888 = r525853 * r525870;
        double r525889 = r525888 * r525864;
        double r525890 = -1.0;
        double r525891 = r525861 * r525853;
        double r525892 = r525872 * r525891;
        double r525893 = r525890 * r525892;
        double r525894 = r525889 + r525893;
        double r525895 = r525887 + r525894;
        double r525896 = r525859 ? r525886 : r525895;
        return r525896;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original12.3
Target16.3
Herbie9.4
\[\begin{array}{l} \mathbf{if}\;t \lt -8.1209789191959122 \cdot 10^{-33}:\\ \;\;\;\;x \cdot \left(z \cdot y - a \cdot t\right) - \left(b \cdot \left(z \cdot c - a \cdot i\right) - \left(c \cdot t - y \cdot i\right) \cdot j\right)\\ \mathbf{elif}\;t \lt -4.7125538182184851 \cdot 10^{-169}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \frac{j \cdot \left({\left(c \cdot t\right)}^{2} - {\left(i \cdot y\right)}^{2}\right)}{c \cdot t + i \cdot y}\\ \mathbf{elif}\;t \lt -7.63353334603158369 \cdot 10^{-308}:\\ \;\;\;\;x \cdot \left(z \cdot y - a \cdot t\right) - \left(b \cdot \left(z \cdot c - a \cdot i\right) - \left(c \cdot t - y \cdot i\right) \cdot j\right)\\ \mathbf{elif}\;t \lt 1.0535888557455487 \cdot 10^{-139}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \frac{j \cdot \left({\left(c \cdot t\right)}^{2} - {\left(i \cdot y\right)}^{2}\right)}{c \cdot t + i \cdot y}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \left(z \cdot y - a \cdot t\right) - \left(b \cdot \left(z \cdot c - a \cdot i\right) - \left(c \cdot t - y \cdot i\right) \cdot j\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if j < -4.127572191585813e+116 or 3.8264923473504794e+79 < j

    1. Initial program 7.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. Using strategy rm
    3. Applied sub-neg7.0

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

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

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

    if -4.127572191585813e+116 < j < 3.8264923473504794e+79

    1. Initial program 13.9

      \[\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. Using strategy rm
    3. Applied sub-neg13.9

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \color{blue}{\left(c \cdot t + \left(-i \cdot y\right)\right)}\]
    4. Applied distribute-lft-in13.9

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \color{blue}{\left(j \cdot \left(c \cdot t\right) + j \cdot \left(-i \cdot y\right)\right)}\]
    5. Taylor expanded around inf 12.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;j \le -4.1275721915858132 \cdot 10^{116} \lor \neg \left(j \le 3.8264923473504794 \cdot 10^{79}\right):\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)} \cdot \sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)}\right) \cdot \sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)}\right) + \left(j \cdot \left(c \cdot t\right) + j \cdot \left(-i \cdot y\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(j \cdot c\right) \cdot t + -1 \cdot \left(i \cdot \left(y \cdot j\right)\right)\right)\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< t -8.120978919195912e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.712553818218485e-169) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2) (pow (* i y) 2))) (+ (* c t) (* i y)))) (if (< t -7.633533346031584e-308) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t 1.0535888557455487e-139) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2) (pow (* i y) 2))) (+ (* c t) (* i y)))) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j)))))))

  (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))