Average Error: 36.5 → 0.4
Time: 36.9s
Precision: 64
Internal Precision: 128
\[\tan \left(x + \varepsilon\right) - \tan x\]
\[\frac{\cos x \cdot \frac{\sin \varepsilon}{\cos \varepsilon} + \frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{{\left(\sin x\right)}^{2}}{\cos x}}{\cos x \cdot \left(1 - \tan \varepsilon \cdot \tan x\right)}\]

Error

Bits error versus x

Bits error versus eps

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original36.5
Target15.2
Herbie0.4
\[\frac{\sin \varepsilon}{\cos x \cdot \cos \left(x + \varepsilon\right)}\]

Derivation

  1. Initial program 36.5

    \[\tan \left(x + \varepsilon\right) - \tan x\]
  2. Using strategy rm
  3. Applied tan-quot36.5

    \[\leadsto \tan \left(x + \varepsilon\right) - \color{blue}{\frac{\sin x}{\cos x}}\]
  4. Applied tan-sum21.4

    \[\leadsto \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \tan \varepsilon}} - \frac{\sin x}{\cos x}\]
  5. Applied frac-sub21.4

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

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

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

    \[\leadsto \frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \left(\color{blue}{\frac{{\left(\sin x\right)}^{2}}{\cos x}} + \cos x\right)}{\left(1 - \tan x \cdot \tan \varepsilon\right) \cdot \cos x}\]
  9. Using strategy rm
  10. Applied distribute-rgt-in0.4

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

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

Reproduce

herbie shell --seed 2019005 
(FPCore (x eps)
  :name "2tan (problem 3.3.2)"

  :herbie-target
  (/ (sin eps) (* (cos x) (cos (+ x eps))))

  (- (tan (+ x eps)) (tan x)))

Details

Time bar (total: 35.2s)Debug log

sample474.0ms

Algorithm
intervals

simplify4.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

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

prune6.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 36.6b

localize15.0ms

Local error

Found 2 expressions with local error:

3.8b
(tan (+ x eps))
1.8b
(- (tan (+ x eps)) (tan x))

rewrite15.0ms

Algorithm
rewrite-expression-head
Counts
2 → 25
Calls

2 calls. Slowest were:

11.0ms
(- (tan (+ x eps)) (tan x))
3.0ms
(tan (+ x eps))

series601.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

510.0ms
(tan (+ x eps))
91.0ms
(- (tan (+ x eps)) (tan x))

simplify624.0ms

Counts
15 → 31
Calls

15 calls. Slowest were:

195.0ms
(- (* (+ (tan x) (tan eps)) (cos x)) (* (- 1 (* (tan x) (tan eps))) (sin x)))
171.0ms
(* (- 1 (* (tan x) (tan eps))) (cos x))
150.0ms
(+ (* x (pow eps 2)) (+ eps (* (pow x 2) eps)))

prune366.0ms

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 13.7b

localize58.0ms

Local error

Found 4 expressions with local error:

8.4b
(- (* (+ (tan x) (tan eps)) (cos x)) (* (- 1 (* (tan x) (tan eps))) (sin x)))
0.3b
(* (tan x) (tan eps))
0.3b
(* (tan x) (tan eps))
0.2b
(* (+ (tan x) (tan eps)) (cos x))

rewrite38.0ms

Algorithm
rewrite-expression-head
Counts
4 → 79
Calls

4 calls. Slowest were:

17.0ms
(- (* (+ (tan x) (tan eps)) (cos x)) (* (- 1 (* (tan x) (tan eps))) (sin x)))
9.0ms
(* (+ (tan x) (tan eps)) (cos x))
8.0ms
(* (tan x) (tan eps))

series605.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

247.0ms
(- (* (+ (tan x) (tan eps)) (cos x)) (* (- 1 (* (tan x) (tan eps))) (sin x)))
147.0ms
(* (+ (tan x) (tan eps)) (cos x))
111.0ms
(* (tan x) (tan eps))
100.0ms
(* (tan x) (tan eps))

simplify5.2s

Counts
60 → 91
Calls

60 calls. Slowest were:

433.0ms
(* (* (* (+ (tan x) (tan eps)) (+ (tan x) (tan eps))) (+ (tan x) (tan eps))) (* (* (cos x) (cos x)) (cos x)))
423.0ms
(* (- (* (tan x) (tan x)) (* (tan eps) (tan eps))) (cos x))
391.0ms
(* (* (cos x) (cos eps)) (+ (* 1 1) (+ (* (* (tan x) (tan eps)) (* (tan x) (tan eps))) (* 1 (* (tan x) (tan eps))))))

prune1.4s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 0.1b

localize28.0ms

Local error

Found 4 expressions with local error:

0.3b
(* (tan x) (tan eps))
0.2b
(/ (sin eps) (cos eps))
0.2b
(* (sin x) (/ (sin x) (cos x)))
0.2b
(* (/ (sin eps) (cos eps)) (+ (* (sin x) (/ (sin x) (cos x))) (cos x)))

rewrite46.0ms

Algorithm
rewrite-expression-head
Counts
4 → 114
Calls

4 calls. Slowest were:

30.0ms
(* (/ (sin eps) (cos eps)) (+ (* (sin x) (/ (sin x) (cos x))) (cos x)))
5.0ms
(* (sin x) (/ (sin x) (cos x)))
4.0ms
(* (tan x) (tan eps))

series329.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

173.0ms
(* (/ (sin eps) (cos eps)) (+ (* (sin x) (/ (sin x) (cos x))) (cos x)))
89.0ms
(* (tan x) (tan eps))
43.0ms
(* (sin x) (/ (sin x) (cos x)))
23.0ms
(/ (sin eps) (cos eps))

simplify3.6s

Counts
99 → 126
Calls

99 calls. Slowest were:

400.0ms
(* (* (* (sin x) (sin x)) (sin x)) (* (* (/ (sin x) (cos x)) (/ (sin x) (cos x))) (/ (sin x) (cos x))))
369.0ms
(* (sin eps) (- (* (* (sin x) (/ (sin x) (cos x))) (* (sin x) (/ (sin x) (cos x)))) (* (cos x) (cos x))))
290.0ms
(+ (* 1/3 (* (pow x 3) eps)) (+ (* 1/3 (* x (pow eps 3))) (* x eps)))

prune2.3s

Pruning

13 alts after pruning (13 fresh and 0 done)

Merged error: 0.0b

localize31.0ms

Local error

Found 4 expressions with local error:

0.3b
(* (tan x) (tan eps))
0.2b
(pow (sin x) 2)
0.2b
(/ (sin eps) (cos eps))
0.2b
(* (/ (sin eps) (cos eps)) (+ (/ (pow (sin x) 2) (cos x)) (cos x)))

rewrite59.0ms

Algorithm
rewrite-expression-head
Counts
4 → 99
Calls

4 calls. Slowest were:

39.0ms
(* (/ (sin eps) (cos eps)) (+ (/ (pow (sin x) 2) (cos x)) (cos x)))
8.0ms
(* (tan x) (tan eps))
7.0ms
(/ (sin eps) (cos eps))

series370.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

166.0ms
(* (/ (sin eps) (cos eps)) (+ (/ (pow (sin x) 2) (cos x)) (cos x)))
131.0ms
(* (tan x) (tan eps))
44.0ms
(/ (sin eps) (cos eps))
28.0ms
(pow (sin x) 2)

simplify2.8s

Counts
84 → 111
Calls

84 calls. Slowest were:

365.0ms
(* (sin eps) (- (* (/ (pow (sin x) 2) (cos x)) (/ (pow (sin x) 2) (cos x))) (* (cos x) (cos x))))
260.0ms
(+ (* 1/3 (* (pow x 3) eps)) (+ (* 1/3 (* x (pow eps 3))) (* x eps)))
206.0ms
(+ (* (/ (pow (sin x) 2) (cos x)) (/ (pow (sin x) 2) (cos x))) (- (* (cos x) (cos x)) (* (/ (pow (sin x) 2) (cos x)) (cos x))))

prune2.1s

Pruning

11 alts after pruning (11 fresh and 0 done)

Merged error: 0.0b

regimes242.0ms

Accuracy

0% (0.3b remaining)

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

bsearch2.0ms

end0.0ms

sample13.9s

Algorithm
intervals