Average Error: 0.5 → 0.5
Time: 21.2s
Precision: 64
Internal Precision: 128
\[\cos^{-1} \left(\frac{1 - 5 \cdot \left(v \cdot v\right)}{v \cdot v - 1}\right)\]
\[\frac{\pi}{2} - \sin^{-1} \left(\frac{(\left(-5 \cdot v\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)\]

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 acos-asin0.5

    \[\leadsto \color{blue}{\frac{\pi}{2} - \sin^{-1} \left(\frac{(\left(-5 \cdot v\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)}\]
  5. Final simplification0.5

    \[\leadsto \frac{\pi}{2} - \sin^{-1} \left(\frac{(\left(-5 \cdot v\right) \cdot v + 1)_*}{(v \cdot v + -1)_*}\right)\]

Reproduce

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

Details

Time bar (total: 20.4s)Debug log

sample234.0ms

Algorithm
intervals

simplify717.0ms

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

prune9.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.6b

localize25.0ms

Local error

Found 2 expressions with local error:

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

rewrite9.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
7.0ms
(/ (fma (* -5 v) v 1) (fma v v -1))
1.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

series34.0ms

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

simplify3.0s

Counts
31 → 45
Calls
31 calls:
Slowest
571.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
489.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
403.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)))
104.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))
104.0ms
(acos (/ (fma (* -5 v) v 1) (fma v v -1)))

prune473.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.5b

localize17.0ms

Local error

Found 3 expressions with local error:

0.6b
(asin (/ (fma (* -5 v) v 1) (fma v v -1)))
0.0b
(- (/ PI 2) (asin (/ (fma (* -5 v) v 1) (fma v v -1))))
0.0b
(/ (fma (* -5 v) v 1) (fma v v -1))

rewrite18.0ms

Algorithm
rewrite-expression-head
Rules
21×*-un-lft-identity
21×add-sqr-sqrt
19×add-cube-cbrt
12×prod-diff
times-frac
add-log-exp
div-inv
add-exp-log
add-cbrt-cube
fma-neg
associate-/l*
log1p-expm1-u
associate-/r*
pow1
expm1-log1p-u
asin-acos
difference-of-squares
associate--r-
distribute-lft-out--
flip--
div-exp
diff-log
flip3--
frac-2neg
sub-neg
clear-num
cbrt-undiv
Counts
3 → 72
Calls
3 calls:
Slowest
9.0ms
(- (/ PI 2) (asin (/ (fma (* -5 v) v 1) (fma v v -1))))
7.0ms
(/ (fma (* -5 v) v 1) (fma v v -1))
1.0ms
(asin (/ (fma (* -5 v) v 1) (fma v v -1)))

series87.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
45.0ms
(/ (fma (* -5 v) v 1) (fma v v -1))
37.0ms
(- (/ PI 2) (asin (/ (fma (* -5 v) v 1) (fma v v -1))))
5.0ms
(asin (/ (fma (* -5 v) v 1) (fma v v -1)))

simplify6.1s

Counts
65 → 81
Calls
65 calls:
Slowest
529.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
498.0ms
(- (+ (* 4 (/ 1 (pow v 4))) (+ 5 (* 4 (/ 1 (pow v 2))))))
356.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)))
141.0ms
(fma PI (/ 1 2) (- (* (cbrt (asin (/ (fma (* -5 v) v 1) (fma v v -1)))) (* (cbrt (asin (/ (fma (* -5 v) v 1) (fma v v -1)))) (cbrt (asin (/ (fma (* -5 v) v 1) (fma v v -1))))))))
133.0ms
(fma (- (cbrt (asin (/ (fma (* -5 v) v 1) (fma v v -1))))) (* (cbrt (asin (/ (fma (* -5 v) v 1) (fma v v -1)))) (cbrt (asin (/ (fma (* -5 v) v 1) (fma v v -1))))) (* (cbrt (asin (/ (fma (* -5 v) v 1) (fma v v -1)))) (* (cbrt (asin (/ (fma (* -5 v) v 1) (fma v v -1)))) (cbrt (asin (/ (fma (* -5 v) v 1) (fma v v -1)))))))

prune876.0ms

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.5b

localize15.0ms

Local error

Found 1 expressions with local error:

0.6b
(acos (fma 4 (fma v v (pow v 4)) -1))

rewrite1.0ms

Algorithm
rewrite-expression-head
Rules
add-log-exp
log1p-expm1-u
add-cube-cbrt
add-exp-log
add-cbrt-cube
*-un-lft-identity
pow1
expm1-log1p-u
add-sqr-sqrt
acos-asin
Counts
1 → 10
Calls
1 calls:
Slowest
1.0ms
(acos (fma 4 (fma v v (pow v 4)) -1))

series3.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
3.0ms
(acos (fma 4 (fma v v (pow v 4)) -1))

simplify72.0ms

Counts
3 → 13
Calls
3 calls:
Slowest
31.0ms
(acos (fma 4 (fma v v (pow v 4)) -1))
26.0ms
(acos (fma 4 (fma v v (pow v 4)) -1))
14.0ms
(acos (fma 4 (fma v v (pow v 4)) -1))

prune142.0ms

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0.5b

localize15.0ms

Local error

Found 3 expressions with local error:

0.6b
(acos (fma 4 (fma v v (pow v 4)) -1))
0.0b
(exp (log (acos (fma 4 (fma v v (pow v 4)) -1))))
0.0b
(log (acos (fma 4 (fma v v (pow v 4)) -1)))

rewrite8.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
*-un-lft-identity
log-prod
add-sqr-sqrt
pow1
add-exp-log
exp-prod
add-log-exp
log1p-expm1-u
exp-sum
add-cbrt-cube
expm1-log1p-u
log-pow
rem-exp-log
rem-log-exp
acos-asin
Counts
3 → 41
Calls
3 calls:
Slowest
4.0ms
(exp (log (acos (fma 4 (fma v v (pow v 4)) -1))))
2.0ms
(log (acos (fma 4 (fma v v (pow v 4)) -1)))
1.0ms
(acos (fma 4 (fma v v (pow v 4)) -1))

series105.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
97.0ms
(log (acos (fma 4 (fma v v (pow v 4)) -1)))
4.0ms
(acos (fma 4 (fma v v (pow v 4)) -1))
4.0ms
(exp (log (acos (fma 4 (fma v v (pow v 4)) -1))))

simplify535.0ms

Counts
21 → 50
Calls
21 calls:
Slowest
59.0ms
(log (* (cbrt (acos (fma 4 (fma v v (pow v 4)) -1))) (cbrt (acos (fma 4 (fma v v (pow v 4)) -1)))))
48.0ms
(exp (log (* (cbrt (acos (fma 4 (fma v v (pow v 4)) -1))) (cbrt (acos (fma 4 (fma v v (pow v 4)) -1))))))
47.0ms
(exp (log (sqrt (acos (fma 4 (fma v v (pow v 4)) -1)))))
36.0ms
(exp (* (cbrt (log (acos (fma 4 (fma v v (pow v 4)) -1)))) (cbrt (log (acos (fma 4 (fma v v (pow v 4)) -1))))))
34.0ms
(log (sqrt (acos (fma 4 (fma v v (pow v 4)) -1))))

prune610.0ms

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0.5b

regimes45.0ms

Accuracy

0% (0.0b remaining)

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

bsearch2.0ms

end0.0ms

sample7.2s

Algorithm
intervals