Average Error: 0.6 → 0.6
Time: 25.5s
Precision: 64
Internal Precision: 128
\[\cos^{-1} \left(\frac{1 - 5 \cdot \left(v \cdot v\right)}{v \cdot v - 1}\right)\]
\[\sqrt[3]{(e^{\log_* (1 + \left(\cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right) \cdot \cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)\right) \cdot \cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right))} - 1)^*}\]

Error

Bits error versus v

Derivation

  1. Initial program 0.6

    \[\cos^{-1} \left(\frac{1 - 5 \cdot \left(v \cdot v\right)}{v \cdot v - 1}\right)\]
  2. Initial simplification0.6

    \[\leadsto \cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)\]
  3. Using strategy rm
  4. Applied add-cbrt-cube1.5

    \[\leadsto \color{blue}{\sqrt[3]{\left(\cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right) \cdot \cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)\right) \cdot \cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)}}\]
  5. Using strategy rm
  6. Applied expm1-log1p-u0.6

    \[\leadsto \sqrt[3]{\color{blue}{(e^{\log_* (1 + \left(\cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right) \cdot \cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)\right) \cdot \cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right))} - 1)^*}}\]
  7. Final simplification0.6

    \[\leadsto \sqrt[3]{(e^{\log_* (1 + \left(\cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right) \cdot \cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)\right) \cdot \cos^{-1} \left(\frac{(\left(v \cdot -5\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right))} - 1)^*}\]

Reproduce

herbie shell --seed 2018360 +o rules:numerics
(FPCore (v)
  :name "Falkner and Boettcher, Appendix B, 1"
  (acos (/ (- 1 (* 5 (* v v))) (- (* v v) 1))))

Details

Time bar (total: 13.2s)Debug log

start319.0ms

Algorithm
intervals

setup540.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 1.0b

localize32.0ms

Local error

Found 2 expressions with local error:

1.0b
(acos (/ (fma (* v -5) v 1) (fma v v -1)))
0.0b
(/ (fma (* v -5) v 1) (fma v v -1))

rewrite4.0ms

Algorithm
rewrite-expression-head
Counts
2 → 39
Calls

2 calls. Slowest were:

3.0ms
(/ (fma (* v -5) v 1) (fma v v -1))
1.0ms
(acos (/ (fma (* v -5) v 1) (fma v v -1)))

series34.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

31.0ms
(/ (fma (* v -5) v 1) (fma v v -1))
3.0ms
(acos (/ (fma (* v -5) v 1) (fma v v -1)))

simplify2.2s

Counts
31 → 45
Calls

31 calls. Slowest were:

392.0ms
(/ (* (* (fma (* v -5) v 1) (fma (* v -5) v 1)) (fma (* v -5) v 1)) (* (* (fma v v -1) (fma v v -1)) (fma v v -1)))
256.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
234.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))

prune528.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 1.0b

localize16.0ms

Local error

Found 3 expressions with local error:

1.0b
(acos (* (fma (* v -5) v 1) (/ 1 (fma v v -1))))
0.0b
(* (fma (* v -5) v 1) (/ 1 (fma v v -1)))
0.0b
(/ 1 (fma v v -1))

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
3 → 51
Calls

3 calls. Slowest were:

8.0ms
(* (fma (* v -5) v 1) (/ 1 (fma v v -1)))
2.0ms
(/ 1 (fma v v -1))
1.0ms
(acos (* (fma (* v -5) v 1) (/ 1 (fma v v -1))))

series69.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

45.0ms
(* (fma (* v -5) v 1) (/ 1 (fma v v -1)))
18.0ms
(/ 1 (fma v v -1))
5.0ms
(acos (* (fma (* v -5) v 1) (/ 1 (fma v v -1))))

simplify1.8s

Counts
25 → 60
Calls

25 calls. Slowest were:

430.0ms
(* (* (* (fma (* v -5) v 1) (fma (* v -5) v 1)) (fma (* v -5) v 1)) (* (* (/ 1 (fma v v -1)) (/ 1 (fma v v -1))) (/ 1 (fma v v -1))))
253.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
238.0ms
(* (fma (* v -5) v 1) (/ 1 (fma v v -1)))

prune780.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 1.0b

localize19.0ms

Local error

Found 4 expressions with local error:

1.0b
(acos (log1p (expm1 (* (fma (* v -5) v 1) (/ 1 (fma v v -1))))))
0.0b
(log1p (expm1 (* (fma (* v -5) v 1) (/ 1 (fma v v -1)))))
0.0b
(* (fma (* v -5) v 1) (/ 1 (fma v v -1)))
0.0b
(/ 1 (fma v v -1))

rewrite8.0ms

Algorithm
rewrite-expression-head
Counts
4 → 62
Calls

4 calls. Slowest were:

6.0ms
(* (fma (* v -5) v 1) (/ 1 (fma v v -1)))
1.0ms
(/ 1 (fma v v -1))
0.0ms
(acos (log1p (expm1 (* (fma (* v -5) v 1) (/ 1 (fma v v -1))))))

series226.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

153.0ms
(log1p (expm1 (* (fma (* v -5) v 1) (/ 1 (fma v v -1)))))
46.0ms
(* (fma (* v -5) v 1) (/ 1 (fma v v -1)))
25.0ms
(/ 1 (fma v v -1))
3.0ms
(acos (log1p (expm1 (* (fma (* v -5) v 1) (/ 1 (fma v v -1))))))

simplify2.2s

Counts
29 → 74
Calls

29 calls. Slowest were:

367.0ms
(* (* (* (fma (* v -5) v 1) (fma (* v -5) v 1)) (fma (* v -5) v 1)) (* (* (/ 1 (fma v v -1)) (/ 1 (fma v v -1))) (/ 1 (fma v v -1))))
275.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
261.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))

prune1.0s

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 1.0b

localize18.0ms

Local error

Found 4 expressions with local error:

1.0b
(acos (/ (fma (* v -5) v 1) (fma v v -1)))
1.0b
(acos (/ (fma (* v -5) v 1) (fma v v -1)))
1.0b
(acos (/ (fma (* v -5) v 1) (fma v v -1)))
1.0b
(* (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))) (acos (/ (fma (* v -5) v 1) (fma v v -1))))

rewrite23.0ms

Algorithm
rewrite-expression-head
Counts
4 → 57
Calls

4 calls. Slowest were:

19.0ms
(* (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))) (acos (/ (fma (* v -5) v 1) (fma v v -1))))
1.0ms
(acos (/ (fma (* v -5) v 1) (fma v v -1)))
1.0ms
(acos (/ (fma (* v -5) v 1) (fma v v -1)))

series56.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

42.0ms
(* (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))) (acos (/ (fma (* v -5) v 1) (fma v v -1))))
5.0ms
(acos (/ (fma (* v -5) v 1) (fma v v -1)))
5.0ms
(acos (/ (fma (* v -5) v 1) (fma v v -1)))
5.0ms
(acos (/ (fma (* v -5) v 1) (fma v v -1)))

simplify2.3s

Counts
32 → 69
Calls

32 calls. Slowest were:

136.0ms
(* (* (* (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))) (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1))))) (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1))))) (* (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))))
112.0ms
(* (* (* (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))) (* (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))) (acos (/ (fma (* v -5) v 1) (fma v v -1))))) (* (* (acos (/ (fma (* v -5) v 1) (fma v v -1))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))) (acos (/ (fma (* v -5) v 1) (fma v v -1)))))
109.0ms
(pow (acos (/ (fma (* -5 v) v 1) (fma v v -1))) 3)

prune1.0s

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 1.0b

regimes52.0ms

Accuracy

0% (0.0b remaining)

Error of 0.6b against oracle of 0.6b and baseline of 0.6b

bsearch2.0ms