Average Error: 12.4 → 10.4
Time: 9.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 -1917941933.5076723:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(b \cdot \left(c \cdot z\right) + \left(\sqrt[3]{b \cdot \left(-t \cdot i\right)} \cdot \sqrt[3]{b \cdot \left(-t \cdot i\right)}\right) \cdot \sqrt[3]{b \cdot \left(-t \cdot i\right)}\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\ \mathbf{elif}\;x \le 7.0802173377050655 \cdot 10^{-137}:\\ \;\;\;\;\left(\left(\left(x \cdot y\right) \cdot z + 1 \cdot \left(-1 \cdot \left(a \cdot \left(x \cdot t\right)\right)\right)\right) - \left(b \cdot \left(c \cdot z\right) + b \cdot \left(-t \cdot i\right)\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x \cdot \left(y \cdot z\right) + 1 \cdot \left(-1 \cdot \left(a \cdot \left(x \cdot t\right)\right)\right)\right) - \left(\left(b \cdot c\right) \cdot z + b \cdot \left(-t \cdot i\right)\right)\right) + j \cdot \left(c \cdot a - y \cdot i\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 -1917941933.5076723:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(b \cdot \left(c \cdot z\right) + \left(\sqrt[3]{b \cdot \left(-t \cdot i\right)} \cdot \sqrt[3]{b \cdot \left(-t \cdot i\right)}\right) \cdot \sqrt[3]{b \cdot \left(-t \cdot i\right)}\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r970294 = x;
        double r970295 = y;
        double r970296 = z;
        double r970297 = r970295 * r970296;
        double r970298 = t;
        double r970299 = a;
        double r970300 = r970298 * r970299;
        double r970301 = r970297 - r970300;
        double r970302 = r970294 * r970301;
        double r970303 = b;
        double r970304 = c;
        double r970305 = r970304 * r970296;
        double r970306 = i;
        double r970307 = r970298 * r970306;
        double r970308 = r970305 - r970307;
        double r970309 = r970303 * r970308;
        double r970310 = r970302 - r970309;
        double r970311 = j;
        double r970312 = r970304 * r970299;
        double r970313 = r970295 * r970306;
        double r970314 = r970312 - r970313;
        double r970315 = r970311 * r970314;
        double r970316 = r970310 + r970315;
        return r970316;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r970317 = x;
        double r970318 = -1917941933.5076723;
        bool r970319 = r970317 <= r970318;
        double r970320 = y;
        double r970321 = z;
        double r970322 = r970320 * r970321;
        double r970323 = t;
        double r970324 = a;
        double r970325 = r970323 * r970324;
        double r970326 = r970322 - r970325;
        double r970327 = r970317 * r970326;
        double r970328 = b;
        double r970329 = c;
        double r970330 = r970329 * r970321;
        double r970331 = r970328 * r970330;
        double r970332 = i;
        double r970333 = r970323 * r970332;
        double r970334 = -r970333;
        double r970335 = r970328 * r970334;
        double r970336 = cbrt(r970335);
        double r970337 = r970336 * r970336;
        double r970338 = r970337 * r970336;
        double r970339 = r970331 + r970338;
        double r970340 = r970327 - r970339;
        double r970341 = j;
        double r970342 = r970329 * r970324;
        double r970343 = r970320 * r970332;
        double r970344 = r970342 - r970343;
        double r970345 = r970341 * r970344;
        double r970346 = r970340 + r970345;
        double r970347 = 7.0802173377050655e-137;
        bool r970348 = r970317 <= r970347;
        double r970349 = r970317 * r970320;
        double r970350 = r970349 * r970321;
        double r970351 = 1.0;
        double r970352 = -1.0;
        double r970353 = r970317 * r970323;
        double r970354 = r970324 * r970353;
        double r970355 = r970352 * r970354;
        double r970356 = r970351 * r970355;
        double r970357 = r970350 + r970356;
        double r970358 = r970331 + r970335;
        double r970359 = r970357 - r970358;
        double r970360 = r970359 + r970345;
        double r970361 = r970317 * r970322;
        double r970362 = r970361 + r970356;
        double r970363 = r970328 * r970329;
        double r970364 = r970363 * r970321;
        double r970365 = r970364 + r970335;
        double r970366 = r970362 - r970365;
        double r970367 = r970366 + r970345;
        double r970368 = r970348 ? r970360 : r970367;
        double r970369 = r970319 ? r970346 : r970368;
        return r970369;
}

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
Target20.1
Herbie10.4
\[\begin{array}{l} \mathbf{if}\;x \lt -1.46969429677770502 \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.2113527362226803 \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 < -1917941933.5076723

    1. Initial program 8.1

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

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

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

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

    if -1917941933.5076723 < x < 7.0802173377050655e-137

    1. Initial program 15.3

      \[\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-neg15.3

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

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

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

      \[\leadsto \left(\color{blue}{\left(x \cdot \left(y \cdot z\right) + x \cdot \left(-t \cdot a\right)\right)} - \left(b \cdot \left(c \cdot z\right) + b \cdot \left(-t \cdot i\right)\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\]
    8. Using strategy rm
    9. Applied *-un-lft-identity15.3

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

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

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

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

    if 7.0802173377050655e-137 < x

    1. Initial program 10.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-neg10.5

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

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

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

      \[\leadsto \left(\color{blue}{\left(x \cdot \left(y \cdot z\right) + x \cdot \left(-t \cdot a\right)\right)} - \left(b \cdot \left(c \cdot z\right) + b \cdot \left(-t \cdot i\right)\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\]
    8. Using strategy rm
    9. Applied *-un-lft-identity10.5

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1917941933.5076723:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(b \cdot \left(c \cdot z\right) + \left(\sqrt[3]{b \cdot \left(-t \cdot i\right)} \cdot \sqrt[3]{b \cdot \left(-t \cdot i\right)}\right) \cdot \sqrt[3]{b \cdot \left(-t \cdot i\right)}\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\ \mathbf{elif}\;x \le 7.0802173377050655 \cdot 10^{-137}:\\ \;\;\;\;\left(\left(\left(x \cdot y\right) \cdot z + 1 \cdot \left(-1 \cdot \left(a \cdot \left(x \cdot t\right)\right)\right)\right) - \left(b \cdot \left(c \cdot z\right) + b \cdot \left(-t \cdot i\right)\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x \cdot \left(y \cdot z\right) + 1 \cdot \left(-1 \cdot \left(a \cdot \left(x \cdot t\right)\right)\right)\right) - \left(\left(b \cdot c\right) \cdot z + b \cdot \left(-t \cdot i\right)\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< x -1.469694296777705e-64) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2) (pow (* t i) 2))) (+ (* 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) (pow (* t i) 2))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i))))))

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