Average Error: 13.2 → 0.2
Time: 1.0m
Precision: 64
Internal Precision: 128
\[x + \left(\tan \left(y + z\right) - \tan a\right)\]
\[x + \left(\frac{(\left(\sin z\right) \cdot \left(\cos y\right) + \left(\cos z \cdot \sin y\right))_*}{\left(\cos y \cdot \left(1 - \tan y \cdot \tan z\right)\right) \cdot \cos z} - \tan a\right)\]

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus a

Derivation

  1. Initial program 13.2

    \[x + \left(\tan \left(y + z\right) - \tan a\right)\]
  2. Using strategy rm
  3. Applied tan-sum0.2

    \[\leadsto x + \left(\color{blue}{\frac{\tan y + \tan z}{1 - \tan y \cdot \tan z}} - \tan a\right)\]
  4. Using strategy rm
  5. Applied tan-quot0.2

    \[\leadsto x + \left(\frac{\tan y + \color{blue}{\frac{\sin z}{\cos z}}}{1 - \tan y \cdot \tan z} - \tan a\right)\]
  6. Applied tan-quot0.2

    \[\leadsto x + \left(\frac{\color{blue}{\frac{\sin y}{\cos y}} + \frac{\sin z}{\cos z}}{1 - \tan y \cdot \tan z} - \tan a\right)\]
  7. Applied frac-add0.2

    \[\leadsto x + \left(\frac{\color{blue}{\frac{\sin y \cdot \cos z + \cos y \cdot \sin z}{\cos y \cdot \cos z}}}{1 - \tan y \cdot \tan z} - \tan a\right)\]
  8. Applied associate-/l/0.2

    \[\leadsto x + \left(\color{blue}{\frac{\sin y \cdot \cos z + \cos y \cdot \sin z}{\left(1 - \tan y \cdot \tan z\right) \cdot \left(\cos y \cdot \cos z\right)}} - \tan a\right)\]
  9. Simplified0.2

    \[\leadsto x + \left(\frac{\color{blue}{(\left(\sin z\right) \cdot \left(\cos y\right) + \left(\cos z \cdot \sin y\right))_*}}{\left(1 - \tan y \cdot \tan z\right) \cdot \left(\cos y \cdot \cos z\right)} - \tan a\right)\]
  10. Using strategy rm
  11. Applied associate-*r*0.2

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

    \[\leadsto x + \left(\frac{(\left(\sin z\right) \cdot \left(\cos y\right) + \left(\cos z \cdot \sin y\right))_*}{\left(\cos y \cdot \left(1 - \tan y \cdot \tan z\right)\right) \cdot \cos z} - \tan a\right)\]

Reproduce

herbie shell --seed 2019004 +o rules:numerics
(FPCore (x y z a)
  :name "(+ x (- (tan (+ y z)) (tan a)))"
  :pre (and (or (== x 0) (<= 0.5884142 x 505.5909)) (or (<= -1.796658e+308 y -9.425585e-310) (<= 1.284938e-309 y 1.751224e+308)) (or (<= -1.776707e+308 z -8.599796e-310) (<= 3.293145e-311 z 1.725154e+308)) (or (<= -1.796658e+308 a -9.425585e-310) (<= 1.284938e-309 a 1.751224e+308)))
  (+ x (- (tan (+ y z)) (tan a))))

Details

Time bar (total: 59.3s)Debug log

sample528.0ms

Algorithm
intervals

simplify25.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

25.0ms
(+ x (- (tan (+ y z)) (tan a)))

prune14.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 16.4b

localize39.0ms

Local error

Found 3 expressions with local error:

3.7b
(tan (+ y z))
0.2b
(- (tan (+ y z)) (tan a))
0.1b
(+ x (- (tan (+ y z)) (tan a)))

rewrite13.0ms

Algorithm
rewrite-expression-head
Counts
3 → 65
Calls

3 calls. Slowest were:

6.0ms
(- (tan (+ y z)) (tan a))
3.0ms
(+ x (- (tan (+ y z)) (tan a)))
3.0ms
(tan (+ y z))

series397.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

169.0ms
(+ x (- (tan (+ y z)) (tan a)))
162.0ms
(- (tan (+ y z)) (tan a))
66.0ms
(tan (+ y z))

simplify1.2s

Counts
50 → 74
Calls

50 calls. Slowest were:

295.0ms
(- (* (+ (tan y) (tan z)) (cos a)) (* (- 1 (* (tan y) (tan z))) (sin a)))
200.0ms
(* (- 1 (* (tan y) (tan z))) (cos a))
43.0ms
(fma 1 (tan (+ y z)) (- (* (tan a) 1)))

prune917.0ms

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 0.1b

localize48.0ms

Local error

Found 4 expressions with local error:

0.2b
(* (tan y) (tan z))
0.2b
(- (/ (+ (tan y) (tan z)) (- 1 (* (tan y) (tan z)))) (tan a))
0.2b
(/ (+ (tan y) (tan z)) (- 1 (* (tan y) (tan z))))
0.1b
(+ x (- (/ (+ (tan y) (tan z)) (- 1 (* (tan y) (tan z)))) (tan a)))

rewrite161.0ms

Algorithm
rewrite-expression-head
Counts
4 → 219
Calls

4 calls. Slowest were:

70.0ms
(- (/ (+ (tan y) (tan z)) (- 1 (* (tan y) (tan z)))) (tan a))
49.0ms
(+ x (- (/ (+ (tan y) (tan z)) (- 1 (* (tan y) (tan z)))) (tan a)))
25.0ms
(/ (+ (tan y) (tan z)) (- 1 (* (tan y) (tan z))))

series1.3s

Counts
4 → 12
Calls

4 calls. Slowest were:

526.0ms
(+ x (- (/ (+ (tan y) (tan z)) (- 1 (* (tan y) (tan z)))) (tan a)))
448.0ms
(- (/ (+ (tan y) (tan z)) (- 1 (* (tan y) (tan z)))) (tan a))
205.0ms
(/ (+ (tan y) (tan z)) (- 1 (* (tan y) (tan z))))
121.0ms
(* (tan y) (tan z))

simplify15.2s

Counts
250 → 231
Calls

250 calls. Slowest were:

489.0ms
(fma (/ 1 (* (cbrt (- 1 (* (tan y) (tan z)))) (cbrt (- 1 (* (tan y) (tan z)))))) (/ (+ (tan y) (tan z)) (cbrt (- 1 (* (tan y) (tan z))))) (- (* (cbrt (tan a)) (* (cbrt (tan a)) (cbrt (tan a))))))
477.0ms
(fma (/ (+ (tan y) (tan z)) (- (pow 1 3) (pow (* (tan y) (tan z)) 3))) (+ (* 1 1) (+ (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* 1 (* (tan y) (tan z))))) (- (* (sqrt (tan a)) (sqrt (tan a)))))
464.0ms
(fma (/ 1 (* (cbrt (- 1 (* (tan y) (tan z)))) (cbrt (- 1 (* (tan y) (tan z)))))) (/ (+ (tan y) (tan z)) (cbrt (- 1 (* (tan y) (tan z))))) (- (* (cbrt (tan a)) (* (cbrt (tan a)) (cbrt (tan a))))))

prune3.3s

Pruning

11 alts after pruning (11 fresh and 0 done)

Merged error: 0.1b

localize30.0ms

Local error

Found 4 expressions with local error:

3.5b
(/ (- (* (tan y) (tan y)) (* (tan z) (tan z))) (* (- 1 (* (tan y) (tan z))) (- (tan y) (tan z))))
0.3b
(* (tan z) (tan z))
0.3b
(* (tan y) (tan y))
0.2b
(* (tan y) (tan z))

rewrite43.0ms

Algorithm
rewrite-expression-head
Counts
4 → 120
Calls

4 calls. Slowest were:

29.0ms
(/ (- (* (tan y) (tan y)) (* (tan z) (tan z))) (* (- 1 (* (tan y) (tan z))) (- (tan y) (tan z))))
4.0ms
(* (tan z) (tan z))
4.0ms
(* (tan y) (tan y))

series555.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

372.0ms
(/ (- (* (tan y) (tan y)) (* (tan z) (tan z))) (* (- 1 (* (tan y) (tan z))) (- (tan y) (tan z))))
116.0ms
(* (tan y) (tan z))
35.0ms
(* (tan y) (tan y))
32.0ms
(* (tan z) (tan z))

simplify6.1s

Counts
93 → 132
Calls

93 calls. Slowest were:

518.0ms
(* (+ (* 1 1) (+ (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* 1 (* (tan y) (tan z))))) (+ (* (tan y) (tan y)) (+ (* (tan z) (tan z)) (* (tan y) (tan z)))))
513.0ms
(/ (- (* (tan y) (tan y)) (* (tan z) (tan z))) (- (tan y) (tan z)))
445.0ms
(- (log (- (* (tan y) (tan y)) (* (tan z) (tan z)))) (+ (log (- 1 (* (tan y) (tan z)))) (log (- (tan y) (tan z)))))

prune1.9s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 0.1b

localize37.0ms

Local error

Found 4 expressions with local error:

0.2b
(* (tan y) (tan z))
0.2b
(/ (fma (sin z) (cos y) (* (cos z) (sin y))) (* (- 1 (* (tan y) (tan z))) (* (cos y) (cos z))))
0.2b
(- (/ (fma (sin z) (cos y) (* (cos z) (sin y))) (* (- 1 (* (tan y) (tan z))) (* (cos y) (cos z)))) (tan a))
0.2b
(* (- 1 (* (tan y) (tan z))) (* (cos y) (cos z)))

rewrite79.0ms

Algorithm
rewrite-expression-head
Counts
4 → 142
Calls

4 calls. Slowest were:

52.0ms
(- (/ (fma (sin z) (cos y) (* (cos z) (sin y))) (* (- 1 (* (tan y) (tan z))) (* (cos y) (cos z)))) (tan a))
10.0ms
(/ (fma (sin z) (cos y) (* (cos z) (sin y))) (* (- 1 (* (tan y) (tan z))) (* (cos y) (cos z))))
10.0ms
(* (- 1 (* (tan y) (tan z))) (* (cos y) (cos z)))

series771.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

317.0ms
(- (/ (fma (sin z) (cos y) (* (cos z) (sin y))) (* (- 1 (* (tan y) (tan z))) (* (cos y) (cos z)))) (tan a))
246.0ms
(/ (fma (sin z) (cos y) (* (cos z) (sin y))) (* (- 1 (* (tan y) (tan z))) (* (cos y) (cos z))))
120.0ms
(* (- 1 (* (tan y) (tan z))) (* (cos y) (cos z)))
88.0ms
(* (tan y) (tan z))

simplify12.9s

Counts
147 → 154
Calls

147 calls. Slowest were:

396.0ms
(* (* (* (- 1 (* (tan y) (tan z))) (- 1 (* (tan y) (tan z)))) (- 1 (* (tan y) (tan z)))) (* (* (* (cos y) (cos y)) (cos y)) (* (* (cos z) (cos z)) (cos z))))
338.0ms
(* (* (* (- 1 (* (tan y) (tan z))) (- 1 (* (tan y) (tan z)))) (- 1 (* (tan y) (tan z)))) (* (* (* (cos y) (cos z)) (* (cos y) (cos z))) (* (cos y) (cos z))))
333.0ms
(fma (/ (fma (sin z) (cos y) (* (cos z) (sin y))) (* (- (* 1 1) (* (* (tan y) (tan z)) (* (tan y) (tan z)))) (+ (cos (+ y z)) (cos (- y z))))) (* (+ 1 (* (tan y) (tan z))) 2) (- (* (sqrt (tan a)) (sqrt (tan a)))))

prune2.4s

Pruning

10 alts after pruning (10 fresh and 0 done)

Merged error: 0.1b

regimes373.0ms

Accuracy

0% (0.1b remaining)

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

bsearch2.0ms

end0.0ms

sample10.9s

Algorithm
intervals