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

Error

Bits error versus v

Derivation

  1. Initial program 0.5

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

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

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

    \[\leadsto \color{blue}{(e^{\log_* (1 + e^{\log \left(\cos^{-1} \left(\frac{(\left(-5 \cdot v\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)\right)})} - 1)^*}\]
  7. Using strategy rm
  8. Applied expm1-log1p-u0.5

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

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

Reproduce

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

Details

Time bar (total: 17.9s)Debug log

sample258.0ms

Algorithm
intervals

simplify615.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

615.0ms
(acos (/ (- 1 (* 5 (* v v))) (- (* v v) 1)))

prune9.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.4b

localize19.0ms

Local error

Found 2 expressions with local error:

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

rewrite1.0ms

Algorithm
rewrite-expression-head
Counts
2 → 20
Calls

2 calls. Slowest were:

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

series37.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

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

simplify288.0ms

Counts
6 → 26
Calls

6 calls. Slowest were:

91.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
64.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
59.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

prune296.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.4b

localize7.0ms

Local error

Found 4 expressions with local error:

0.4b
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
0.0b
(exp (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))
0.0b
(log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))
0.0b
(fma (* -5 v) v 1)

rewrite4.0ms

Algorithm
rewrite-expression-head
Counts
4 → 51
Calls

4 calls. Slowest were:

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

series131.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

91.0ms
(log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))
35.0ms
(fma (* -5 v) v 1)
2.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
2.0ms
(exp (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))

simplify1.3s

Counts
24 → 63
Calls

24 calls. Slowest were:

105.0ms
(exp (log (* (cbrt (acos (/ (fma (* -5 v) v 1) (fma v v -1)))) (cbrt (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))
96.0ms
(exp (sqrt (log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))
94.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

prune711.0ms

Pruning

5 alts after pruning (5 fresh and 0 done)

Merged error: 0.3b

localize15.0ms

Local error

Found 4 expressions with local error:

0.4b
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
0.0b
(exp (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))
0.0b
(expm1 (log1p (exp (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))
0.0b
(log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))

rewrite8.0ms

Algorithm
rewrite-expression-head
Counts
4 → 52
Calls

4 calls. Slowest were:

4.0ms
(exp (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))
2.0ms
(log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))
1.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

series283.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

172.0ms
(expm1 (log1p (exp (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))
102.0ms
(log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))
5.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
4.0ms
(exp (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))

simplify1.4s

Counts
25 → 64
Calls

25 calls. Slowest were:

81.0ms
(log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))
76.0ms
(exp (log (* (cbrt (acos (/ (fma (* -5 v) v 1) (fma v v -1)))) (cbrt (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))
76.0ms
(exp (sqrt (log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))

prune920.0ms

Pruning

6 alts after pruning (6 fresh and 0 done)

Merged error: 0.3b

localize27.0ms

Local error

Found 4 expressions with local error:

0.4b
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
0.0b
(expm1 (log1p (log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))
0.0b
(expm1 (log1p (exp (expm1 (log1p (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))))
0.0b
(exp (expm1 (log1p (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))

rewrite3.0ms

Algorithm
rewrite-expression-head
Counts
4 → 46
Calls

4 calls. Slowest were:

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

series1.2s

Counts
4 → 12
Calls

4 calls. Slowest were:

521.0ms
(expm1 (log1p (exp (expm1 (log1p (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))))
410.0ms
(exp (expm1 (log1p (log (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))
238.0ms
(expm1 (log1p (log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))
3.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

simplify1.3s

Counts
19 → 58
Calls

19 calls. Slowest were:

102.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
93.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
81.0ms
(exp (sqrt (expm1 (log1p (log (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))))

prune736.0ms

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0.3b

regimes81.0ms

Accuracy

0% (0.0b remaining)

Error of 0.5b against oracle of 0.5b and baseline of 0.5b

bsearch5.0ms

end0.0ms

sample8.3s

Algorithm
intervals