Average Error: 0.5 → 0.5
Time: 27.7s
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 + \cos^{-1} \left(\sqrt[3]{\frac{(\left(-5 \cdot v\right) \cdot v + 1)_*}{(v \cdot v + -1)_*} \cdot \left(\frac{(\left(-5 \cdot v\right) \cdot v + 1)_*}{(v \cdot v + -1)_*} \cdot \frac{(\left(-5 \cdot v\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)}\right))} - 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 expm1-log1p-u0.5

    \[\leadsto \color{blue}{(e^{\log_* (1 + \cos^{-1} \left(\frac{(\left(-5 \cdot v\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right))} - 1)^*}\]
  5. Using strategy rm
  6. Applied add-cbrt-cube0.5

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

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

Reproduce

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

Details

Time bar (total: 26.8s)Debug log

sample200.0ms

Algorithm
intervals
Results
78.0ms95×body2560valid
59.0ms89×body1280valid
22.0ms246×body80nan
16.0ms35×body640valid
7.0ms21×body320valid
2.0ms11×body160valid
1.0msbody80valid

simplify573.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
573.0ms
(acos (/ (- 1 (* 5 (* v v))) (- (* v v) 1)))

prune16.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.3b

localize29.0ms

Local error

Found 2 expressions with local error:

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

rewrite5.0ms

Algorithm
rewrite-expression-head
Rules
10×add-cube-cbrt
10×*-un-lft-identity
10×add-sqr-sqrt
times-frac
add-exp-log
add-cbrt-cube
associate-/l*
associate-/r*
add-log-exp
log1p-expm1-u
pow1
expm1-log1p-u
div-inv
div-exp
frac-2neg
clear-num
cbrt-undiv
acos-asin
Counts
2 → 39
Calls
2 calls:
Slowest
4.0ms
(/ (fma (* -5 v) v 1) (fma v v -1))
1.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

series43.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
40.0ms
(/ (fma (* -5 v) v 1) (fma v v -1))
3.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

simplify2.7s

Counts
31 → 45
Calls
31 calls:
Slowest
555.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
544.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
322.0ms
(/ (* (* (fma (* -5 v) v 1) (fma (* -5 v) v 1)) (fma (* -5 v) v 1)) (* (* (fma v v -1) (fma v v -1)) (fma v v -1)))
94.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
88.0ms
(/ (sqrt (fma (* -5 v) v 1)) (sqrt (fma v v -1)))

prune387.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.3b

localize14.0ms

Local error

Found 4 expressions with local error:

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

rewrite10.0ms

Algorithm
rewrite-expression-head
Rules
12×add-cube-cbrt
12×*-un-lft-identity
12×add-sqr-sqrt
times-frac
add-exp-log
add-cbrt-cube
expm1-log1p-u
add-log-exp
log1p-expm1-u
pow1
associate-/l*
associate-/r*
expm1-udef
div-inv
log1p-expm1
div-exp
frac-2neg
clear-num
expm1-log1p
log1p-udef
cbrt-undiv
acos-asin
Counts
4 → 61
Calls
4 calls:
Slowest
6.0ms
(/ (fma (* -5 v) v 1) (fma v v -1))
1.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
1.0ms
(log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))
0.0ms
(expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))

series311.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
169.0ms
(expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))
110.0ms
(log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))
30.0ms
(/ (fma (* -5 v) v 1) (fma v v -1))
3.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

simplify3.3s

Counts
39 → 73
Calls
39 calls:
Slowest
551.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
539.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
342.0ms
(/ (* (* (fma (* -5 v) v 1) (fma (* -5 v) v 1)) (fma (* -5 v) v 1)) (* (* (fma v v -1) (fma v v -1)) (fma v v -1)))
97.0ms
(- (log (fma (* -5 v) v 1)) (log (fma v v -1)))
95.0ms
(/ (* (cbrt (fma (* -5 v) v 1)) (cbrt (fma (* -5 v) v 1))) (sqrt (fma v v -1)))

prune726.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.3b

localize29.0ms

Local error

Found 4 expressions with local error:

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

rewrite12.0ms

Algorithm
rewrite-expression-head
Rules
18×add-cube-cbrt
18×times-frac
18×*-un-lft-identity
18×add-sqr-sqrt
16×add-exp-log
16×add-cbrt-cube
13×associate-*l*
13×associate-*r*
pow1
expm1-log1p-u
add-log-exp
log1p-expm1-u
cbrt-unprod
prod-exp
div-exp
cbrt-undiv
div-inv
expm1-udef
pow-prod-up
*-commutative
associate-*r/
log1p-expm1
associate-*l/
pow-prod-down
pow-plus
expm1-log1p
log1p-udef
frac-times
acos-asin
pow2
Counts
4 → 83
Calls
4 calls:
Slowest
10.0ms
(* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1)))
1.0ms
(acos (cbrt (* (* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1))) (/ (fma (* -5 v) v 1) (fma v v -1)))))
0.0ms
(log1p (acos (cbrt (* (* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1))) (/ (fma (* -5 v) v 1) (fma v v -1))))))
0.0ms
(expm1 (log1p (acos (cbrt (* (* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1))) (/ (fma (* -5 v) v 1) (fma v v -1)))))))

series350.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
207.0ms
(expm1 (log1p (acos (cbrt (* (* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1))) (/ (fma (* -5 v) v 1) (fma v v -1)))))))
98.0ms
(log1p (acos (cbrt (* (* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1))) (/ (fma (* -5 v) v 1) (fma v v -1))))))
41.0ms
(* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1)))
3.0ms
(acos (cbrt (* (* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1))) (/ (fma (* -5 v) v 1) (fma v v -1)))))

simplify5.3s

Counts
55 → 95
Calls
55 calls:
Slowest
451.0ms
(* (fma (* -5 v) v 1) (/ (fma (* -5 v) v 1) (fma v v -1)))
422.0ms
(* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1)))
276.0ms
(acos (cbrt (* (* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1))) (/ (fma (* -5 v) v 1) (fma v v -1)))))
272.0ms
(+ (- (log (fma (* -5 v) v 1)) (log (fma v v -1))) (log (/ (fma (* -5 v) v 1) (fma v v -1))))
268.0ms
(cbrt (* (* (/ (fma (* -5 v) v 1) (fma v v -1)) (/ (fma (* -5 v) v 1) (fma v v -1))) (/ (fma (* -5 v) v 1) (fma v v -1))))

prune1.2s

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0.3b

localize12.0ms

Local error

Found 4 expressions with local error:

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

rewrite8.0ms

Algorithm
rewrite-expression-head
Rules
12×sqrt-prod
12×add-sqr-sqrt
10×add-cube-cbrt
10×*-un-lft-identity
pow1
add-exp-log
associate-*l*
associate-*r*
pow1/2
add-cbrt-cube
add-log-exp
log1p-expm1-u
expm1-log1p-u
pow-prod-up
pow-prod-down
rem-sqrt-square
cbrt-unprod
*-commutative
prod-exp
sqrt-unprod
pow-plus
rem-square-sqrt
acos-asin
pow2
Counts
4 → 70
Calls
4 calls:
Slowest
5.0ms
(* (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))) (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))
1.0ms
(sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))
1.0ms
(sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))
1.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

series579.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
193.0ms
(* (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))) (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))
192.0ms
(sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))
190.0ms
(sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))
4.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

simplify2.4s

Counts
42 → 82
Calls
42 calls:
Slowest
99.0ms
(sqrt (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))
81.0ms
(* (* (* (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))) (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))) (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))) (* (* (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))) (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))) (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1))))))))
80.0ms
(sqrt (sqrt (expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))))
80.0ms
(sqrt (acos (/ (fma (* -5 v) v 1) (fma v v -1))))
72.0ms
(expm1 (log1p (acos (/ (fma (* -5 v) v 1) (fma v v -1)))))

prune994.0ms

Pruning

6 alts after pruning (4 fresh and 2 done)

Merged error: 0.3b

regimes77.0ms

Accuracy

0% (0.0b remaining)

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

bsearch3.0ms

end0.0ms

sample7.6s

Algorithm
intervals
Results
3.6s2979×body2560valid
1.8s2497×body1280valid
892.0ms7999×body80nan
696.0ms1281×body640valid
269.0ms636×body320valid
94.0ms399×body160valid
58.0ms208×body80valid