Average Error: 12.1 → 11.3
Time: 26.6s
Precision: 64
\[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.08141462104782994358330296205636066627 \cdot 10^{176}:\\ \;\;\;\;\left(\left(y \cdot z\right) \cdot x + x \cdot \left(-t \cdot a\right)\right) - \left(c \cdot z - t \cdot i\right) \cdot b\\ \mathbf{elif}\;x \le 7.119702239955606097577624404870553168265 \cdot 10^{153}:\\ \;\;\;\;\left(\left(\left(-t\right) \cdot \left(x \cdot a\right) + z \cdot \left(y \cdot x\right)\right) - \left(c \cdot z - t \cdot i\right) \cdot b\right) + \left(c \cdot a - y \cdot i\right) \cdot j\\ \mathbf{else}:\\ \;\;\;\;\left(c \cdot a - y \cdot i\right) \cdot j + \left(\left(y \cdot z\right) \cdot x + x \cdot \left(-t \cdot a\right)\right)\\ \end{array}\]
\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)
\begin{array}{l}
\mathbf{if}\;x \le -1.08141462104782994358330296205636066627 \cdot 10^{176}:\\
\;\;\;\;\left(\left(y \cdot z\right) \cdot x + x \cdot \left(-t \cdot a\right)\right) - \left(c \cdot z - t \cdot i\right) \cdot b\\

\mathbf{elif}\;x \le 7.119702239955606097577624404870553168265 \cdot 10^{153}:\\
\;\;\;\;\left(\left(\left(-t\right) \cdot \left(x \cdot a\right) + z \cdot \left(y \cdot x\right)\right) - \left(c \cdot z - t \cdot i\right) \cdot b\right) + \left(c \cdot a - y \cdot i\right) \cdot j\\

\mathbf{else}:\\
\;\;\;\;\left(c \cdot a - y \cdot i\right) \cdot j + \left(\left(y \cdot z\right) \cdot x + x \cdot \left(-t \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 r25145053 = x;
        double r25145054 = y;
        double r25145055 = z;
        double r25145056 = r25145054 * r25145055;
        double r25145057 = t;
        double r25145058 = a;
        double r25145059 = r25145057 * r25145058;
        double r25145060 = r25145056 - r25145059;
        double r25145061 = r25145053 * r25145060;
        double r25145062 = b;
        double r25145063 = c;
        double r25145064 = r25145063 * r25145055;
        double r25145065 = i;
        double r25145066 = r25145057 * r25145065;
        double r25145067 = r25145064 - r25145066;
        double r25145068 = r25145062 * r25145067;
        double r25145069 = r25145061 - r25145068;
        double r25145070 = j;
        double r25145071 = r25145063 * r25145058;
        double r25145072 = r25145054 * r25145065;
        double r25145073 = r25145071 - r25145072;
        double r25145074 = r25145070 * r25145073;
        double r25145075 = r25145069 + r25145074;
        return r25145075;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r25145076 = x;
        double r25145077 = -1.08141462104783e+176;
        bool r25145078 = r25145076 <= r25145077;
        double r25145079 = y;
        double r25145080 = z;
        double r25145081 = r25145079 * r25145080;
        double r25145082 = r25145081 * r25145076;
        double r25145083 = t;
        double r25145084 = a;
        double r25145085 = r25145083 * r25145084;
        double r25145086 = -r25145085;
        double r25145087 = r25145076 * r25145086;
        double r25145088 = r25145082 + r25145087;
        double r25145089 = c;
        double r25145090 = r25145089 * r25145080;
        double r25145091 = i;
        double r25145092 = r25145083 * r25145091;
        double r25145093 = r25145090 - r25145092;
        double r25145094 = b;
        double r25145095 = r25145093 * r25145094;
        double r25145096 = r25145088 - r25145095;
        double r25145097 = 7.119702239955606e+153;
        bool r25145098 = r25145076 <= r25145097;
        double r25145099 = -r25145083;
        double r25145100 = r25145076 * r25145084;
        double r25145101 = r25145099 * r25145100;
        double r25145102 = r25145079 * r25145076;
        double r25145103 = r25145080 * r25145102;
        double r25145104 = r25145101 + r25145103;
        double r25145105 = r25145104 - r25145095;
        double r25145106 = r25145089 * r25145084;
        double r25145107 = r25145079 * r25145091;
        double r25145108 = r25145106 - r25145107;
        double r25145109 = j;
        double r25145110 = r25145108 * r25145109;
        double r25145111 = r25145105 + r25145110;
        double r25145112 = r25145110 + r25145088;
        double r25145113 = r25145098 ? r25145111 : r25145112;
        double r25145114 = r25145078 ? r25145096 : r25145113;
        return r25145114;
}

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.1
Target19.7
Herbie11.3
\[\begin{array}{l} \mathbf{if}\;x \lt -1.469694296777705016266218530347997287942 \cdot 10^{-64}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \frac{b \cdot \left({\left(c \cdot z\right)}^{2} - {\left(t \cdot i\right)}^{2}\right)}{c \cdot z + t \cdot i}\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\ \mathbf{elif}\;x \lt 3.21135273622268028942701600607048800714 \cdot 10^{-147}:\\ \;\;\;\;\left(b \cdot i - x \cdot a\right) \cdot t - \left(z \cdot \left(c \cdot b\right) - j \cdot \left(c \cdot a - y \cdot i\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \frac{b \cdot \left({\left(c \cdot z\right)}^{2} - {\left(t \cdot i\right)}^{2}\right)}{c \cdot z + t \cdot i}\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if x < -1.08141462104783e+176

    1. Initial program 7.5

      \[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\]
    2. Using strategy rm
    3. Applied sub-neg7.5

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

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

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

    if -1.08141462104783e+176 < x < 7.119702239955606e+153

    1. Initial program 12.9

      \[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\]
    2. Using strategy rm
    3. Applied sub-neg12.9

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

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

      \[\leadsto \left(\left(x \cdot \left(y \cdot z\right) + \color{blue}{-1 \cdot \left(a \cdot \left(x \cdot t\right)\right)}\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\]
    6. Simplified11.7

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

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

    if 7.119702239955606e+153 < x

    1. Initial program 6.9

      \[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\]
    2. Using strategy rm
    3. Applied sub-neg6.9

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.08141462104782994358330296205636066627 \cdot 10^{176}:\\ \;\;\;\;\left(\left(y \cdot z\right) \cdot x + x \cdot \left(-t \cdot a\right)\right) - \left(c \cdot z - t \cdot i\right) \cdot b\\ \mathbf{elif}\;x \le 7.119702239955606097577624404870553168265 \cdot 10^{153}:\\ \;\;\;\;\left(\left(\left(-t\right) \cdot \left(x \cdot a\right) + z \cdot \left(y \cdot x\right)\right) - \left(c \cdot z - t \cdot i\right) \cdot b\right) + \left(c \cdot a - y \cdot i\right) \cdot j\\ \mathbf{else}:\\ \;\;\;\;\left(c \cdot a - y \cdot i\right) \cdot j + \left(\left(y \cdot z\right) \cdot x + x \cdot \left(-t \cdot a\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019171 
(FPCore (x y z t a b c i j)
  :name "Data.Colour.Matrix:determinant from colour-2.3.3, A"

  :herbie-target
  (if (< x -1.469694296777705e-64) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2.0) (pow (* t i) 2.0))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i)))) (if (< x 3.2113527362226803e-147) (- (* (- (* b i) (* x a)) t) (- (* z (* c b)) (* j (- (* c a) (* y i))))) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2.0) (pow (* t i) 2.0))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i))))))

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