Average Error: 12.4 → 12.7
Time: 34.7s
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)\]
\[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + \left(\sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)} \cdot \sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)}\right) \cdot \sqrt[3]{\left(\sqrt[3]{j} \cdot \sqrt[3]{j}\right) \cdot \left(\sqrt[3]{j} \cdot \left(c \cdot a - y \cdot i\right)\right)}\]
\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)
\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + \left(\sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)} \cdot \sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)}\right) \cdot \sqrt[3]{\left(\sqrt[3]{j} \cdot \sqrt[3]{j}\right) \cdot \left(\sqrt[3]{j} \cdot \left(c \cdot a - y \cdot i\right)\right)}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r424179033 = x;
        double r424179034 = y;
        double r424179035 = z;
        double r424179036 = r424179034 * r424179035;
        double r424179037 = t;
        double r424179038 = a;
        double r424179039 = r424179037 * r424179038;
        double r424179040 = r424179036 - r424179039;
        double r424179041 = r424179033 * r424179040;
        double r424179042 = b;
        double r424179043 = c;
        double r424179044 = r424179043 * r424179035;
        double r424179045 = i;
        double r424179046 = r424179037 * r424179045;
        double r424179047 = r424179044 - r424179046;
        double r424179048 = r424179042 * r424179047;
        double r424179049 = r424179041 - r424179048;
        double r424179050 = j;
        double r424179051 = r424179043 * r424179038;
        double r424179052 = r424179034 * r424179045;
        double r424179053 = r424179051 - r424179052;
        double r424179054 = r424179050 * r424179053;
        double r424179055 = r424179049 + r424179054;
        return r424179055;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r424179056 = x;
        double r424179057 = y;
        double r424179058 = z;
        double r424179059 = r424179057 * r424179058;
        double r424179060 = t;
        double r424179061 = a;
        double r424179062 = r424179060 * r424179061;
        double r424179063 = r424179059 - r424179062;
        double r424179064 = r424179056 * r424179063;
        double r424179065 = b;
        double r424179066 = c;
        double r424179067 = r424179066 * r424179058;
        double r424179068 = i;
        double r424179069 = r424179060 * r424179068;
        double r424179070 = r424179067 - r424179069;
        double r424179071 = r424179065 * r424179070;
        double r424179072 = r424179064 - r424179071;
        double r424179073 = j;
        double r424179074 = r424179066 * r424179061;
        double r424179075 = r424179057 * r424179068;
        double r424179076 = r424179074 - r424179075;
        double r424179077 = r424179073 * r424179076;
        double r424179078 = cbrt(r424179077);
        double r424179079 = r424179078 * r424179078;
        double r424179080 = cbrt(r424179073);
        double r424179081 = r424179080 * r424179080;
        double r424179082 = r424179080 * r424179076;
        double r424179083 = r424179081 * r424179082;
        double r424179084 = cbrt(r424179083);
        double r424179085 = r424179079 * r424179084;
        double r424179086 = r424179072 + r424179085;
        return r424179086;
}

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.4
Target19.9
Herbie12.7
\[\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. Initial program 12.4

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

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

    \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + \left(\sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)} \cdot \sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)}\right) \cdot \sqrt[3]{\color{blue}{\left(\left(\sqrt[3]{j} \cdot \sqrt[3]{j}\right) \cdot \sqrt[3]{j}\right)} \cdot \left(c \cdot a - y \cdot i\right)}\]
  6. Applied associate-*l*12.7

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

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

Reproduce

herbie shell --seed 2019173 
(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)))))