Average Error: 40.0 → 0.3
Time: 19.8s
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 40.0

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

    \[\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.0

    \[\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.0

    \[\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.0

    \[\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.0

    \[\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.3

    \[\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.3

    \[\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 2019004 +o rules:numerics
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  (- (cos (+ x eps)) (cos x)))

Details

Time bar (total: 17.7s)Debug log

sample198.0ms

Algorithm
intervals

simplify8.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

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

prune9.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 40.5b

localize13.0ms

Local error

Found 2 expressions with local error:

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

rewrite42.0ms

Algorithm
rewrite-expression-head
Counts
2 → 40
Calls

2 calls. Slowest were:

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

series80.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

54.0ms
(- (cos (+ x eps)) (cos x))
25.0ms
(cos (+ x eps))

simplify875.0ms

Counts
33 → 46
Calls

33 calls. Slowest were:

285.0ms
(- (* 1/6 (* (pow x 3) eps)) (+ (* 1/2 (pow eps 2)) (* x eps)))
158.0ms
(- 1 (+ (* x eps) (* 1/2 (pow x 2))))
39.0ms
(fma (sqrt (cos (+ x eps))) (sqrt (cos (+ x eps))) (- (* (sqrt (cos x)) (sqrt (cos x)))))

prune356.0ms

Pruning

6 alts after pruning (6 fresh and 0 done)

Merged error: 0.6b

localize38.0ms

Local error

Found 4 expressions with local error:

3.9b
(sin (/ (+ (+ x x) eps) 2))
0.3b
(* (sin (/ (+ (+ x x) eps) 2)) (sin (/ eps 2)))
0.2b
(/ (+ (+ x x) eps) 2)
0.0b
(* -2 (* (sin (/ (+ (+ x x) eps) 2)) (sin (/ eps 2))))

rewrite61.0ms

Algorithm
rewrite-expression-head
Counts
4 → 58
Calls

4 calls. Slowest were:

20.0ms
(* (sin (/ (+ (+ x x) eps) 2)) (sin (/ eps 2)))
16.0ms
(* -2 (* (sin (/ (+ (+ x x) eps) 2)) (sin (/ eps 2))))
15.0ms
(/ (+ (+ x x) eps) 2)

series215.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

91.0ms
(* -2 (* (sin (/ (+ (+ x x) eps) 2)) (sin (/ eps 2))))
83.0ms
(* (sin (/ (+ (+ x x) eps) 2)) (sin (/ eps 2)))
24.0ms
(sin (/ (+ (+ x x) eps) 2))
17.0ms
(/ (+ (+ x x) eps) 2)

simplify1.5s

Counts
26 → 70
Calls

26 calls. Slowest were:

394.0ms
(- (+ (* 1/4 (pow eps 2)) (* 1/2 (* x eps))) (* 1/12 (* (pow x 3) eps)))
299.0ms
(- (* (+ x x) (+ x x)) (* eps eps))
239.0ms
(- (* 1/6 (* (pow x 3) eps)) (+ (* 1/2 (pow eps 2)) (* x eps)))

prune736.0ms

Pruning

15 alts after pruning (15 fresh and 0 done)

Merged error: 0.5b

localize37.0ms

Local error

Found 3 expressions with local error:

3.9b
(sin (fma 1/2 eps x))
0.3b
(* (sin (* eps 1/2)) (sin (fma 1/2 eps x)))
0.0b
(* -2 (* (sin (* eps 1/2)) (sin (fma 1/2 eps x))))

rewrite41.0ms

Algorithm
rewrite-expression-head
Counts
3 → 48
Calls

3 calls. Slowest were:

18.0ms
(* -2 (* (sin (* eps 1/2)) (sin (fma 1/2 eps x))))
13.0ms
(* (sin (* eps 1/2)) (sin (fma 1/2 eps x)))
9.0ms
(sin (fma 1/2 eps x))

series176.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

80.0ms
(* -2 (* (sin (* eps 1/2)) (sin (fma 1/2 eps x))))
67.0ms
(* (sin (* eps 1/2)) (sin (fma 1/2 eps x)))
28.0ms
(sin (fma 1/2 eps x))

simplify909.0ms

Counts
26 → 57
Calls

26 calls. Slowest were:

163.0ms
(- (* 1/24 (pow eps 4)) (+ (* x eps) (* 1/2 (pow eps 2))))
159.0ms
(- (+ (* 1/2 (* x eps)) (* 1/4 (pow eps 2))) (* 1/48 (pow eps 4)))
123.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))))

prune674.0ms

Pruning

13 alts after pruning (13 fresh and 0 done)

Merged error: 0.1b

localize56.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
(* (cos (* 1/2 eps)) (sin x))
0.2b
(* (sin (* 1/2 eps)) (cos x))
0.1b
(+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x)))

rewrite84.0ms

Algorithm
rewrite-expression-head
Counts
4 → 76
Calls

4 calls. Slowest were:

41.0ms
(* (sin (* eps 1/2)) (+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x))))
19.0ms
(+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x)))
12.0ms
(* (sin (* 1/2 eps)) (cos x))

series358.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

123.0ms
(* (sin (* eps 1/2)) (+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x))))
101.0ms
(+ (* (sin (* 1/2 eps)) (cos x)) (* (cos (* 1/2 eps)) (sin x)))
69.0ms
(* (sin (* 1/2 eps)) (cos x))
65.0ms
(* (cos (* 1/2 eps)) (sin x))

simplify1.5s

Counts
43 → 88
Calls

43 calls. Slowest were:

258.0ms
(- (* 1/2 eps) (+ (* 1/48 (pow eps 3)) (* 1/4 (* (pow x 2) eps))))
190.0ms
(- x (+ (* 1/6 (pow x 3)) (* 1/8 (* x (pow eps 2)))))
171.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)))))

prune1.2s

Pruning

14 alts after pruning (14 fresh and 0 done)

Merged error: 0.0b

regimes230.0ms

Accuracy

0% (0.3b remaining)

Error of 0.3b against oracle of 0.0b and baseline of 0.3b

bsearch2.0ms

end0.0ms

sample8.3s

Algorithm
intervals