Average Error: 39.8 → 0.4
Time: 18.1s
Precision: 64
Internal Precision: 128
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\left(\sin \left(\varepsilon \cdot \frac{1}{2}\right) \cdot (\left(\cos x\right) \cdot \left(\sin \left(\varepsilon \cdot \frac{1}{2}\right)\right) + \left(\cos \left(\varepsilon \cdot \frac{1}{2}\right) \cdot \sin x\right))_*\right) \cdot -2\]

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Initial program 39.8

    \[\cos \left(x + \varepsilon\right) - \cos x\]
  2. Using strategy rm
  3. Applied diff-cos34.3

    \[\leadsto \color{blue}{-2 \cdot \left(\sin \left(\frac{\left(x + \varepsilon\right) - x}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)}\]
  4. Simplified15.5

    \[\leadsto -2 \cdot \color{blue}{\left(\sin \left(\frac{\left(x + x\right) + \varepsilon}{2}\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)}\]
  5. Taylor expanded around inf 15.5

    \[\leadsto -2 \cdot \color{blue}{\left(\sin \left(\frac{1}{2} \cdot \left(2 \cdot x + \varepsilon\right)\right) \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)}\]
  6. Simplified15.5

    \[\leadsto -2 \cdot \color{blue}{\left(\sin \left(\varepsilon \cdot \frac{1}{2}\right) \cdot \sin \left((\frac{1}{2} \cdot \varepsilon + x)_*\right)\right)}\]
  7. Using strategy rm
  8. Applied fma-udef15.5

    \[\leadsto -2 \cdot \left(\sin \left(\varepsilon \cdot \frac{1}{2}\right) \cdot \sin \color{blue}{\left(\frac{1}{2} \cdot \varepsilon + x\right)}\right)\]
  9. Applied sin-sum0.4

    \[\leadsto -2 \cdot \left(\sin \left(\varepsilon \cdot \frac{1}{2}\right) \cdot \color{blue}{\left(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \cos x + \cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x\right)}\right)\]
  10. Taylor expanded around -inf 0.4

    \[\leadsto -2 \cdot \color{blue}{\left(\left(\sin x \cdot \cos \left(\frac{1}{2} \cdot \varepsilon\right) + \cos x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right) \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)}\]
  11. Simplified0.4

    \[\leadsto -2 \cdot \color{blue}{\left(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot (\left(\cos x\right) \cdot \left(\sin \left(\frac{1}{2} \cdot \varepsilon\right)\right) + \left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x\right))_*\right)}\]
  12. Final simplification0.4

    \[\leadsto \left(\sin \left(\varepsilon \cdot \frac{1}{2}\right) \cdot (\left(\cos x\right) \cdot \left(\sin \left(\varepsilon \cdot \frac{1}{2}\right)\right) + \left(\cos \left(\varepsilon \cdot \frac{1}{2}\right) \cdot \sin x\right))_*\right) \cdot -2\]

Reproduce

herbie shell --seed 2019008 +o rules:numerics
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  (- (cos (+ x eps)) (cos x)))

Details

Time bar (total: 16.1s)Debug log

sample196.0ms

Algorithm
intervals

simplify4.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

4.0ms
(- (cos (+ x eps)) (cos x))

prune5.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 40.9b

localize13.0ms

Local error

Found 2 expressions with local error:

4.3b
(cos (+ x eps))
1.2b
(- (cos (+ x eps)) (cos x))

rewrite7.0ms

Algorithm
rewrite-expression-head
Counts
2 → 40
Calls

2 calls. Slowest were:

5.0ms
(- (cos (+ x eps)) (cos x))
2.0ms
(cos (+ x eps))

series96.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

76.0ms
(- (cos (+ x eps)) (cos x))
20.0ms
(cos (+ x eps))

simplify905.0ms

Counts
33 → 46
Calls

33 calls. Slowest were:

290.0ms
(- (* 1/6 (* (pow x 3) eps)) (+ (* 1/2 (pow eps 2)) (* x eps)))
146.0ms
(- 1 (+ (* x eps) (* 1/2 (pow x 2))))
36.0ms
(* (sin (/ (- (+ x eps) x) 2)) (sin (/ (+ (+ x eps) x) 2)))

prune472.0ms

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 0.3b

localize25.0ms

Local error

Found 2 expressions with local error:

4.3b
(sin (/ (+ (+ x x) eps) 2))
0.3b
(* (sin (/ (+ (+ x x) eps) 2)) (sin (/ eps 2)))

rewrite30.0ms

Algorithm
rewrite-expression-head
Counts
2 → 29
Calls

2 calls. Slowest were:

20.0ms
(* (sin (/ (+ (+ x x) eps) 2)) (sin (/ eps 2)))
9.0ms
(sin (/ (+ (+ x x) eps) 2))

series122.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

91.0ms
(* (sin (/ (+ (+ x x) eps) 2)) (sin (/ eps 2)))
30.0ms
(sin (/ (+ (+ x x) eps) 2))

simplify692.0ms

Counts
15 → 35
Calls

15 calls. Slowest were:

368.0ms
(- (+ (* 1/4 (pow eps 2)) (* 1/2 (* x eps))) (* 1/12 (* (pow x 3) eps)))
86.0ms
(- (+ x (* 1/2 eps)) (* 1/6 (pow x 3)))
72.0ms
(* (* (* (sin (/ (+ (+ x x) eps) 2)) (sin (/ (+ (+ x x) eps) 2))) (sin (/ (+ (+ x x) eps) 2))) (* (* (sin (/ eps 2)) (sin (/ eps 2))) (sin (/ eps 2))))

prune408.0ms

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 0.3b

localize18.0ms

Local error

Found 2 expressions with local error:

4.3b
(sin (fma 1/2 eps x))
0.3b
(* (sin (* eps 1/2)) (sin (fma 1/2 eps x)))

rewrite11.0ms

Algorithm
rewrite-expression-head
Counts
2 → 32
Calls

2 calls. Slowest were:

9.0ms
(* (sin (* eps 1/2)) (sin (fma 1/2 eps x)))
2.0ms
(sin (fma 1/2 eps x))

series101.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

70.0ms
(* (sin (* eps 1/2)) (sin (fma 1/2 eps x)))
31.0ms
(sin (fma 1/2 eps x))

simplify449.0ms

Counts
18 → 38
Calls

18 calls. Slowest were:

120.0ms
(- (+ (* 1/2 (* x eps)) (* 1/4 (pow eps 2))) (* 1/48 (pow eps 4)))
118.0ms
(* (* (* (sin (* eps 1/2)) (sin (* eps 1/2))) (sin (* eps 1/2))) (* (* (sin (fma 1/2 eps x)) (sin (fma 1/2 eps x))) (sin (fma 1/2 eps x))))
111.0ms
(- (+ x (* 1/2 eps)) (* 1/48 (pow eps 3)))

prune419.0ms

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 0.1b

localize24.0ms

Local error

Found 4 expressions with local error:

0.3b
(* (sin (* eps 1/2)) (+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x))))
0.2b
(+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x)))
0.1b
(* (cos (* 1/2 eps)) (sin x))
0.1b
(* (sin (* 1/2 eps)) (cos x))

rewrite45.0ms

Algorithm
rewrite-expression-head
Counts
4 → 76
Calls

4 calls. Slowest were:

24.0ms
(* (sin (* eps 1/2)) (+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x))))
9.0ms
(+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x)))
6.0ms
(* (cos (* 1/2 eps)) (sin x))

series370.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

148.0ms
(* (sin (* eps 1/2)) (+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x))))
121.0ms
(+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x)))
52.0ms
(* (sin (* 1/2 eps)) (cos x))
49.0ms
(* (cos (* 1/2 eps)) (sin x))

simplify1.6s

Counts
43 → 88
Calls

43 calls. Slowest were:

300.0ms
(- (* 1/2 eps) (+ (* 1/48 (pow eps 3)) (* 1/4 (* (pow x 2) eps))))
219.0ms
(+ (* (* (sin (* 1/2 eps)) (cos x)) (* (sin (* 1/2 eps)) (cos x))) (- (* (* (cos (* 1/2 eps)) (sin x)) (* (cos (* 1/2 eps)) (sin x))) (* (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x)))))
214.0ms
(* (* (* (sin (* eps 1/2)) (sin (* eps 1/2))) (sin (* eps 1/2))) (* (* (+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x))) (+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x)))) (+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x)))))

prune1.4s

Pruning

13 alts after pruning (13 fresh and 0 done)

Merged error: 0.1b

regimes233.0ms

Accuracy

0% (0.3b remaining)

Error of 0.4b against oracle of 0.1b and baseline of 0.4b

bsearch3.0ms

end0.0ms

sample8.5s

Algorithm
intervals