Average Error: 11.7 → 12.1
Time: 36.0s
Precision: 64
Internal Precision: 128
\[\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}\;b \le -1.461658139344156 \cdot 10^{-213} \lor \neg \left(b \le 7.223141338913155 \cdot 10^{-160}\right):\\ \;\;\;\;(\left(\sqrt[3]{z \cdot y - a \cdot t} \cdot \left(\sqrt[3]{z \cdot y - a \cdot t} \cdot \sqrt[3]{z \cdot y - a \cdot t}\right)\right) \cdot x + \left(\left(c \cdot t - i \cdot y\right) \cdot j - \left(c \cdot z - a \cdot i\right) \cdot b\right))_*\\ \mathbf{else}:\\ \;\;\;\;(\left(z \cdot y - a \cdot t\right) \cdot x + \left(\left(c \cdot t - i \cdot y\right) \cdot j\right))_*\\ \end{array}\]

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 2 regimes
  2. if b < -1.461658139344156e-213 or 7.223141338913155e-160 < b

    1. Initial program 9.8

      \[\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. Simplified9.8

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

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

    if -1.461658139344156e-213 < b < 7.223141338913155e-160

    1. Initial program 17.6

      \[\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. Simplified17.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.461658139344156 \cdot 10^{-213} \lor \neg \left(b \le 7.223141338913155 \cdot 10^{-160}\right):\\ \;\;\;\;(\left(\sqrt[3]{z \cdot y - a \cdot t} \cdot \left(\sqrt[3]{z \cdot y - a \cdot t} \cdot \sqrt[3]{z \cdot y - a \cdot t}\right)\right) \cdot x + \left(\left(c \cdot t - i \cdot y\right) \cdot j - \left(c \cdot z - a \cdot i\right) \cdot b\right))_*\\ \mathbf{else}:\\ \;\;\;\;(\left(z \cdot y - a \cdot t\right) \cdot x + \left(\left(c \cdot t - i \cdot y\right) \cdot j\right))_*\\ \end{array}\]

Reproduce

herbie shell --seed 2019008 +o rules:numerics
(FPCore (x y z t a b c i j)
  :name "Linear.Matrix:det33 from linear-1.19.1.3"
  (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))

Details

Time bar (total: 32.7s)Debug log

sample258.0ms

Algorithm
intervals

simplify162.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

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

prune17.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 10.7b

localize43.0ms

Local error

Found 4 expressions with local error:

5.4b
(* (- (* t c) (* y i)) j)
4.3b
(* (- (* z c) (* i a)) b)
4.1b
(fma (- (* z y) (* t a)) x (- (* (- (* t c) (* y i)) j) (* (- (* z c) (* i a)) b)))
0.5b
(- (* z y) (* t a))

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
4 → 56
Calls

4 calls. Slowest were:

5.0ms
(* (- (* t c) (* y i)) j)
5.0ms
(* (- (* z c) (* i a)) b)
2.0ms
(- (* z y) (* t a))

series603.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

486.0ms
(fma (- (* z y) (* t a)) x (- (* (- (* t c) (* y i)) j) (* (- (* z c) (* i a)) b)))
46.0ms
(* (- (* z c) (* i a)) b)
43.0ms
(* (- (* t c) (* y i)) j)
27.0ms
(- (* z y) (* t a))

simplify1.5s

Counts
23 → 68
Calls

23 calls. Slowest were:

324.0ms
(- (* a (* i b)) (+ (* z (* b c)) (* i (* j y))))
258.0ms
(- (* a (* i b)) (+ (* z (* b c)) (* i (* j y))))
179.0ms
(* (- (pow (* t c) 3) (pow (* y i) 3)) j)

prune1.0s

Pruning

17 alts after pruning (17 fresh and 0 done)

Merged error: 5.0b

localize19.0ms

Local error

Found 4 expressions with local error:

6.0b
(cbrt (- (* z c) (* i a)))
6.0b
(cbrt (- (* z c) (* i a)))
6.0b
(cbrt (- (* z c) (* i a)))
5.4b
(* (- (* t c) (* y i)) j)

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
4 → 60
Calls

4 calls. Slowest were:

7.0ms
(* (- (* t c) (* y i)) j)
2.0ms
(cbrt (- (* z c) (* i a)))
1.0ms
(cbrt (- (* z c) (* i a)))

series344.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

102.0ms
(cbrt (- (* z c) (* i a)))
100.0ms
(cbrt (- (* z c) (* i a)))
99.0ms
(cbrt (- (* z c) (* i a)))
43.0ms
(* (- (* t c) (* y i)) j)

simplify4.6s

Counts
31 → 72
Calls

31 calls. Slowest were:

590.0ms
(exp (* -1/3 (+ (log (/ 1 z)) (log (/ 1 c)))))
481.0ms
(cbrt (- (* (* z c) (* z c)) (* (* i a) (* i a))))
396.0ms
(cbrt (- (* (* z c) (* z c)) (* (* i a) (* i a))))

prune1.3s

Pruning

16 alts after pruning (16 fresh and 0 done)

Merged error: 5.0b

localize17.0ms

Local error

Found 4 expressions with local error:

6.9b
(cbrt (- (* z y) (* t a)))
6.9b
(cbrt (- (* z y) (* t a)))
6.9b
(cbrt (- (* z y) (* t a)))
5.4b
(* (- (* t c) (* y i)) j)

rewrite9.0ms

Algorithm
rewrite-expression-head
Counts
4 → 60
Calls

4 calls. Slowest were:

5.0ms
(* (- (* t c) (* y i)) j)
2.0ms
(cbrt (- (* z y) (* t a)))
1.0ms
(cbrt (- (* z y) (* t a)))

series349.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

103.0ms
(cbrt (- (* z y) (* t a)))
101.0ms
(cbrt (- (* z y) (* t a)))
101.0ms
(cbrt (- (* z y) (* t a)))
43.0ms
(* (- (* t c) (* y i)) j)

simplify4.5s

Counts
31 → 72
Calls

31 calls. Slowest were:

503.0ms
(cbrt (- (* (* z y) (* z y)) (* (* t a) (* t a))))
383.0ms
(cbrt (- (* (* z y) (* z y)) (* (* t a) (* t a))))
375.0ms
(cbrt (- (* (* z y) (* z y)) (* (* t a) (* t a))))

prune1.3s

Pruning

16 alts after pruning (15 fresh and 1 done)

Merged error: 5.0b

localize35.0ms

Local error

Found 4 expressions with local error:

6.3b
(cbrt (- (* t c) (* y i)))
6.3b
(cbrt (- (* t c) (* y i)))
6.3b
(cbrt (- (* t c) (* y i)))
4.3b
(* (- (* z c) (* i a)) b)

rewrite10.0ms

Algorithm
rewrite-expression-head
Counts
4 → 60
Calls

4 calls. Slowest were:

5.0ms
(* (- (* z c) (* i a)) b)
2.0ms
(cbrt (- (* t c) (* y i)))
1.0ms
(cbrt (- (* t c) (* y i)))

series464.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

141.0ms
(cbrt (- (* t c) (* y i)))
140.0ms
(cbrt (- (* t c) (* y i)))
120.0ms
(cbrt (- (* t c) (* y i)))
63.0ms
(* (- (* z c) (* i a)) b)

simplify5.1s

Counts
31 → 72
Calls

31 calls. Slowest were:

489.0ms
(cbrt (- (* (* t c) (* t c)) (* (* y i) (* y i))))
438.0ms
(cbrt (- (* (* t c) (* t c)) (* (* y i) (* y i))))
404.0ms
(cbrt (- (pow (* t c) 3) (pow (* y i) 3)))

prune1.6s

Pruning

17 alts after pruning (16 fresh and 1 done)

Merged error: 5.0b

regimes2.0s

Accuracy

-2.3% (5.1b remaining)

Error of 12.1b against oracle of 7.0b and baseline of 12.0b

bsearch261.0ms

end0.0ms

sample7.1s

Algorithm
intervals