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

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus a

Derivation

  1. Initial program 12.9

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

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

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

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

    \[\leadsto x + \frac{\color{blue}{(\left(\tan y + \tan z\right) \cdot \left(\cos a\right) + \left((\left(\tan y\right) \cdot \left(\tan z\right) + -1)_* \cdot \sin a\right))_*}}{\left(1 - \tan y \cdot \tan z\right) \cdot \cos a}\]
  7. Using strategy rm
  8. Applied add-cbrt-cube0.2

    \[\leadsto x + \frac{(\left(\tan y + \tan z\right) \cdot \left(\cos a\right) + \left((\left(\tan y\right) \cdot \left(\tan z\right) + -1)_* \cdot \sin a\right))_*}{\left(1 - \color{blue}{\sqrt[3]{\left(\left(\tan y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right)\right) \cdot \left(\tan y \cdot \tan z\right)}}\right) \cdot \cos a}\]
  9. Using strategy rm
  10. Applied *-un-lft-identity0.2

    \[\leadsto x + \frac{\color{blue}{1 \cdot (\left(\tan y + \tan z\right) \cdot \left(\cos a\right) + \left((\left(\tan y\right) \cdot \left(\tan z\right) + -1)_* \cdot \sin a\right))_*}}{\left(1 - \sqrt[3]{\left(\left(\tan y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right)\right) \cdot \left(\tan y \cdot \tan z\right)}\right) \cdot \cos a}\]
  11. Applied times-frac0.2

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

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

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

Reproduce

herbie shell --seed 2019022 +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: 54.0s)Debug log

sample444.0ms

Algorithm
intervals
Results
233.0ms124×body1280valid
82.0ms66×body640valid
65.0ms256×pre80true
21.0ms23×body320valid
9.0ms35×body80valid
5.0msbody160valid

simplify75.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
75.0ms
(+ x (- (tan (+ y z)) (tan a)))

prune9.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 12.1b

localize17.0ms

Local error

Found 3 expressions with local error:

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

rewrite15.0ms

Algorithm
rewrite-expression-head
Rules
18×prod-diff
18×*-un-lft-identity
18×add-sqr-sqrt
16×add-cube-cbrt
11×associate-+r+
add-log-exp
tan-quot
log1p-expm1-u
add-exp-log
fma-neg
add-cbrt-cube
pow1
expm1-log1p-u
frac-sub
sub-neg
tan-sum
difference-of-squares
distribute-lft-out--
flip--
flip-+
diff-log
flip3--
flip3-+
associate-+r-
+-commutative
Counts
3 → 65
Calls
3 calls:
Slowest
6.0ms
(- (tan (+ y z)) (tan a))
6.0ms
(+ x (- (tan (+ y z)) (tan a)))
2.0ms
(tan (+ y z))

series303.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
120.0ms
(- (tan (+ y z)) (tan a))
118.0ms
(+ x (- (tan (+ y z)) (tan a)))
65.0ms
(tan (+ y z))

simplify1.1s

Counts
50 → 74
Calls
50 calls:
Slowest
233.0ms
(- (* (+ (tan y) (tan z)) (cos a)) (* (- 1 (* (tan y) (tan z))) (sin a)))
148.0ms
(* (- 1 (* (tan y) (tan z))) (cos a))
34.0ms
(- (+ (/ (sin (+ z y)) (cos (+ z y))) x) (/ (sin a) (cos a)))
32.0ms
(- (+ (/ (sin (+ z y)) (cos (+ z y))) x) (/ (sin a) (cos a)))
31.0ms
(fma (- (cbrt (tan a))) (* (cbrt (tan a)) (cbrt (tan a))) (* (cbrt (tan a)) (* (cbrt (tan a)) (cbrt (tan a)))))

prune988.0ms

Pruning

10 alts after pruning (10 fresh and 0 done)

Merged error: 0.1b

localize75.0ms

Local error

Found 4 expressions with local error:

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

rewrite24.0ms

Algorithm
rewrite-expression-head
Rules
11×add-exp-log
11×add-cbrt-cube
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
pow1
add-log-exp
log1p-expm1-u
tan-quot
expm1-log1p-u
associate-/l*
associate-*l/
associate-*l*
associate-*r*
times-frac
cbrt-unprod
associate-/r/
prod-exp
div-exp
cbrt-undiv
flip--
div-inv
fma-udef
flip-+
*-commutative
associate-*r/
pow-prod-down
flip3--
flip3-+
frac-2neg
associate-/r*
clear-num
+-commutative
frac-times
Counts
4 → 69
Calls
4 calls:
Slowest
11.0ms
(/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (* (- 1 (* (tan y) (tan z))) (cos a)))
7.0ms
(* (tan y) (tan z))
4.0ms
(+ x (/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (* (- 1 (* (tan y) (tan z))) (cos a))))
0.0ms
(fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))

series1.5s

Counts
4 → 12
Calls
4 calls:
Slowest
589.0ms
(+ x (/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (* (- 1 (* (tan y) (tan z))) (cos a))))
510.0ms
(/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (* (- 1 (* (tan y) (tan z))) (cos a)))
317.0ms
(fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))
84.0ms
(* (tan y) (tan z))

simplify3.8s

Counts
39 → 81
Calls
39 calls:
Slowest
373.0ms
(/ (- (+ (/ (* (cos a) (sin z)) (cos z)) (+ (/ (* (sin a) (* (sin z) (sin y))) (* (cos y) (cos z))) (/ (* (cos a) (sin y)) (cos y)))) (sin a)) (* (cos a) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z))))))
316.0ms
(/ (- (+ (/ (* (cos a) (sin z)) (cos z)) (+ (/ (* (sin a) (* (sin z) (sin y))) (* (cos y) (cos z))) (/ (* (cos a) (sin y)) (cos y)))) (sin a)) (* (cos a) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z))))))
287.0ms
(+ (* 1/3 (* (pow z 3) y)) (+ (* 1/3 (* z (pow y 3))) (* z y)))
238.0ms
(- (log (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))) (log (* (- 1 (* (tan y) (tan z))) (cos a))))
229.0ms
(- (+ (/ (* (cos a) (sin z)) (cos z)) (+ (/ (* (sin a) (* (sin z) (sin y))) (* (cos y) (cos z))) (/ (* (cos a) (sin y)) (cos y)))) (sin a))

prune1.5s

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 0.0b

localize31.0ms

Local error

Found 4 expressions with local error:

26.5b
(cbrt (* (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* (tan y) (tan z))))
0.3b
(* (* (tan y) (tan z)) (* (tan y) (tan z)))
0.2b
(/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (* (- 1 (cbrt (* (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* (tan y) (tan z))))) (cos a)))
0.2b
(fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))

rewrite81.0ms

Algorithm
rewrite-expression-head
Rules
224×tan-quot
146×frac-times
88×associate-*l/
74×associate-*r/
63×cbrt-div
31×pow1
21×add-exp-log
21×add-cbrt-cube
13×pow-prod-down
cbrt-unprod
prod-exp
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-log-exp
log1p-expm1-u
pow-prod-up
expm1-log1p-u
associate-/l*
times-frac
associate-/r/
div-exp
pow-plus
cbrt-undiv
flip--
div-inv
fma-udef
rem-cbrt-cube
*-commutative
pow3
associate-*l*
associate-*r*
pow1/3
flip3--
frac-2neg
associate-/r*
clear-num
pow2
cbrt-prod
Counts
4 → 156
Calls
4 calls:
Slowest
32.0ms
(cbrt (* (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* (tan y) (tan z))))
31.0ms
(* (* (tan y) (tan z)) (* (tan y) (tan z)))
11.0ms
(/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (* (- 1 (cbrt (* (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* (tan y) (tan z))))) (cos a)))
0.0ms
(fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))

series958.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
485.0ms
(/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (* (- 1 (cbrt (* (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* (tan y) (tan z))))) (cos a)))
290.0ms
(fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))
96.0ms
(* (* (tan y) (tan z)) (* (tan y) (tan z)))
87.0ms
(cbrt (* (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* (tan y) (tan z))))

simplify22.1s

Counts
140 → 168
Calls
140 calls:
Slowest
911.0ms
(* (* (* (* (tan y) (tan y)) (tan y)) (* (* (tan z) (tan z)) (tan z))) (* (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* (tan y) (tan z))))
489.0ms
(* (* (* (* (tan y) (tan z)) (* (tan y) (tan z))) (* (tan y) (tan z))) (* (* (* (tan y) (tan y)) (tan y)) (* (* (tan z) (tan z)) (tan z))))
451.0ms
(cbrt (* (* (* (tan y) (tan z)) (* (tan y) (sin z))) (* (sin y) (sin z))))
446.0ms
(cbrt (* (* (* (sin y) (tan z)) (* (sin y) (sin z))) (* (tan y) (sin z))))
414.0ms
(cbrt (* (* (* (sin y) (sin z)) (* (sin y) (tan z))) (* (tan y) (tan z))))

prune3.2s

Pruning

11 alts after pruning (11 fresh and 0 done)

Merged error: 0.0b

localize22.0ms

Local error

Found 4 expressions with local error:

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

rewrite12.0ms

Algorithm
rewrite-expression-head
Rules
14×add-cube-cbrt
14×*-un-lft-identity
14×add-sqr-sqrt
times-frac
add-exp-log
add-cbrt-cube
pow1
add-log-exp
log1p-expm1-u
tan-quot
expm1-log1p-u
associate-/l*
associate-*l*
associate-*r*
associate-/r*
div-inv
fma-udef
flip-+
cbrt-unprod
*-commutative
associate-*r/
prod-exp
associate-*l/
pow-prod-down
div-exp
flip3-+
frac-2neg
clear-num
+-commutative
cbrt-undiv
frac-times
Counts
4 → 73
Calls
4 calls:
Slowest
6.0ms
(* (tan z) (tan y))
4.0ms
(/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (cos a))
2.0ms
(+ x (* (/ 1 (- 1 (* (tan z) (tan y)))) (/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (cos a))))
0.0ms
(fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))

series1.2s

Counts
4 → 12
Calls
4 calls:
Slowest
519.0ms
(+ x (* (/ 1 (- 1 (* (tan z) (tan y)))) (/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (cos a))))
318.0ms
(/ (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (cos a))
277.0ms
(fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))
81.0ms
(* (tan z) (tan y))

simplify3.8s

Counts
49 → 85
Calls
49 calls:
Slowest
245.0ms
(/ (* (* (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a))) (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))) (fma (+ (tan y) (tan z)) (cos a) (* (fma (tan y) (tan z) -1) (sin a)))) (* (* (cos a) (cos a)) (cos a)))
216.0ms
(+ (* 1/3 (* (pow z 3) y)) (+ (* 1/3 (* z (pow y 3))) (* z y)))
211.0ms
(- (+ (/ (* (cos a) (sin z)) (cos z)) (+ (/ (* (sin a) (* (sin z) (sin y))) (* (cos y) (cos z))) (/ (* (cos a) (sin y)) (cos y)))) (sin a))
204.0ms
(- (+ (/ (sin z) (* (cos z) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z)))))) (+ (/ (* (sin a) (* (sin z) (sin y))) (* (cos y) (* (cos a) (* (cos z) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z)))))))) (+ (/ (sin y) (* (cos y) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z)))))) x))) (/ (sin a) (* (cos a) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z)))))))
182.0ms
(- (+ (/ (sin z) (* (cos z) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z)))))) (+ (/ (* (sin a) (* (sin z) (sin y))) (* (cos y) (* (cos a) (* (cos z) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z)))))))) (+ (/ (sin y) (* (cos y) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z)))))) x))) (/ (sin a) (* (cos a) (- 1 (/ (* (sin z) (sin y)) (* (cos y) (cos z)))))))

prune1.2s

Pruning

11 alts after pruning (10 fresh and 1 done)

Merged error: 0.0b

regimes913.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.6s

Algorithm
intervals
Results
6.3s3863×body1280valid
2.6s1964×body640valid
577.0ms8000×pre80true
482.0ms697×body320valid
238.0ms1192×body80valid
166.0ms284×body160valid