Average Error: 14.9 → 0.4
Time: 54.2s
Precision: 64
Internal Precision: 128
\[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
\[r \cdot \frac{\sin b \cdot \left(\sin a \cdot \sin b + \cos b \cdot \cos a\right)}{{\left(\cos b\right)}^{2} \cdot {\left(\cos a\right)}^{2} - {\left(\sin b\right)}^{2} \cdot {\left(\sin a\right)}^{2}}\]

Error

Bits error versus r

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 14.9

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)}\]
  2. Using strategy rm
  3. Applied cos-sum0.3

    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}}\]
  4. Using strategy rm
  5. Applied flip--0.4

    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\frac{\left(\cos a \cdot \cos b\right) \cdot \left(\cos a \cdot \cos b\right) - \left(\sin a \cdot \sin b\right) \cdot \left(\sin a \cdot \sin b\right)}{\cos a \cdot \cos b + \sin a \cdot \sin b}}}\]
  6. Applied associate-/r/0.4

    \[\leadsto r \cdot \color{blue}{\left(\frac{\sin b}{\left(\cos a \cdot \cos b\right) \cdot \left(\cos a \cdot \cos b\right) - \left(\sin a \cdot \sin b\right) \cdot \left(\sin a \cdot \sin b\right)} \cdot \left(\cos a \cdot \cos b + \sin a \cdot \sin b\right)\right)}\]
  7. Taylor expanded around inf 0.4

    \[\leadsto r \cdot \color{blue}{\frac{\sin b \cdot \left(\sin b \cdot \sin a + \cos a \cdot \cos b\right)}{{\left(\cos a\right)}^{2} \cdot {\left(\cos b\right)}^{2} - {\left(\sin b\right)}^{2} \cdot {\left(\sin a\right)}^{2}}}\]
  8. Final simplification0.4

    \[\leadsto r \cdot \frac{\sin b \cdot \left(\sin a \cdot \sin b + \cos b \cdot \cos a\right)}{{\left(\cos b\right)}^{2} \cdot {\left(\cos a\right)}^{2} - {\left(\sin b\right)}^{2} \cdot {\left(\sin a\right)}^{2}}\]

Reproduce

herbie shell --seed 2019022 
(FPCore (r a b)
  :name "r*sin(b)/cos(a+b), B"
  (* r (/ (sin b) (cos (+ a b)))))

Details

Time bar (total: 52.7s)Debug log

sample335.0ms

Algorithm
intervals
Results
117.0ms95×body1280valid
53.0ms28×body320valid
44.0ms52×body640valid
18.0ms73×body80valid
3.0msbody160valid

simplify37.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
34.0ms
(* r (/ (sin b) (cos (+ a b))))

prune14.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 13.0b

localize34.0ms

Local error

Found 3 expressions with local error:

2.8b
(cos (+ a b))
0.3b
(/ (sin b) (cos (+ a b)))
0.2b
(* r (/ (sin b) (cos (+ a b))))

rewrite14.0ms

Algorithm
rewrite-expression-head
Rules
18×add-cube-cbrt
18×times-frac
18×*-un-lft-identity
18×add-sqr-sqrt
13×associate-*r*
add-exp-log
add-cbrt-cube
add-log-exp
associate-/l*
associate-/r*
pow1
div-inv
*-commutative
associate-*r/
div-exp
frac-2neg
clear-num
cos-sum
cbrt-undiv
Counts
3 → 57
Calls
3 calls:
Slowest
5.0ms
(cos (+ a b))
4.0ms
(/ (sin b) (cos (+ a b)))
2.0ms
(* r (/ (sin b) (cos (+ a b))))

series183.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
102.0ms
(* r (/ (sin b) (cos (+ a b))))
44.0ms
(/ (sin b) (cos (+ a b)))
37.0ms
(cos (+ a b))

simplify761.0ms

Counts
49 → 66
Calls
49 calls:
Slowest
193.0ms
(+ (* a (* r (pow b 2))) (+ (* 1/3 (* r (pow b 3))) (* r b)))
158.0ms
(/ (* (* (sin b) (sin b)) (sin b)) (* (* (cos (+ a b)) (cos (+ a b))) (cos (+ a b))))
108.0ms
(+ b (+ (* 1/3 (pow b 3)) (* a (pow b 2))))
82.0ms
(- 1 (+ (* 1/2 (pow a 2)) (* a b)))
33.0ms
(/ (* (cbrt (sin b)) (cbrt (sin b))) (* (cbrt (cos (+ a b))) (cbrt (cos (+ a b)))))

prune691.0ms

Pruning

10 alts after pruning (10 fresh and 0 done)

Merged error: 0.2b

localize37.0ms

Local error

Found 4 expressions with local error:

0.2b
(/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b))))
0.2b
(* r (/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b)))))
0.1b
(* (sin a) (sin b))
0.1b
(- (* (cos a) (cos b)) (* (sin a) (sin b)))

rewrite48.0ms

Algorithm
rewrite-expression-head
Rules
21×add-cube-cbrt
21×*-un-lft-identity
21×add-sqr-sqrt
20×associate-*r*
18×times-frac
associate-/r/
add-exp-log
add-cbrt-cube
sin-mult
add-log-exp
cos-mult
pow1
sub-div
associate-/l*
flip--
frac-sub
associate-*l*
flip3--
associate-/r*
div-inv
*-commutative
cbrt-unprod
associate-*r/
prod-exp
pow-prod-down
div-exp
diff-log
frac-2neg
sub-neg
clear-num
cbrt-undiv
Counts
4 → 89
Calls
4 calls:
Slowest
25.0ms
(/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b))))
12.0ms
(* r (/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b)))))
6.0ms
(- (* (cos a) (cos b)) (* (sin a) (sin b)))
3.0ms
(* (sin a) (sin b))

series517.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
262.0ms
(* r (/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b)))))
139.0ms
(/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b))))
70.0ms
(- (* (cos a) (cos b)) (* (sin a) (sin b)))
46.0ms
(* (sin a) (sin b))

simplify2.1s

Counts
70 → 101
Calls
70 calls:
Slowest
322.0ms
(- (+ (cos (+ a b)) (cos (- a b))) (- (cos (- a b)) (cos (+ a b))))
312.0ms
(- (* (+ (cos (+ a b)) (cos (- a b))) 2) (* 2 (- (cos (- a b)) (cos (+ a b)))))
165.0ms
(/ (* (* (sin b) (sin b)) (sin b)) (* (* (- (* (cos a) (cos b)) (* (sin a) (sin b))) (- (* (cos a) (cos b)) (* (sin a) (sin b)))) (- (* (cos a) (cos b)) (* (sin a) (sin b)))))
157.0ms
(+ (* a (* r (pow b 2))) (+ (* 1/3 (* r (pow b 3))) (* r b)))
125.0ms
(+ (* (* (cos a) (cos b)) (* (cos a) (cos b))) (+ (* (* (sin a) (sin b)) (* (sin a) (sin b))) (* (* (cos a) (cos b)) (* (sin a) (sin b)))))

prune1.3s

Pruning

11 alts after pruning (11 fresh and 0 done)

Merged error: 0.0b

localize39.0ms

Local error

Found 4 expressions with local error:

0.4b
(* (* (cos a) (cos b)) (* (cos a) (cos b)))
0.3b
(* (/ (sin b) (- (* (* (cos a) (cos b)) (* (cos a) (cos b))) (* (* (sin a) (sin b)) (* (sin a) (sin b))))) (+ (* (cos a) (cos b)) (* (sin a) (sin b))))
0.2b
(* (* (sin a) (sin b)) (* (sin a) (sin b)))
0.2b
(/ (sin b) (- (* (* (cos a) (cos b)) (* (cos a) (cos b))) (* (* (sin a) (sin b)) (* (sin a) (sin b)))))

rewrite182.0ms

Algorithm
rewrite-expression-head
Rules
60×pow1
42×sin-mult
42×cos-mult
35×add-exp-log
35×add-cbrt-cube
34×associate-*l*
32×associate-/r/
27×pow-prod-down
25×associate-*r/
24×times-frac
23×associate-*l/
22×add-cube-cbrt
22×*-un-lft-identity
22×add-sqr-sqrt
21×frac-times
18×cbrt-unprod
18×frac-sub
18×prod-exp
10×sub-div
pow-prod-up
difference-of-squares
associate-*r*
add-log-exp
pow-plus
associate-/r*
associate-/l*
*-commutative
flip--
div-inv
flip-+
frac-add
div-exp
flip3--
flip3-+
cbrt-undiv
pow2
distribute-lft-in
frac-2neg
clear-num
distribute-rgt-in
Counts
4 → 168
Calls
4 calls:
Slowest
91.0ms
(* (/ (sin b) (- (* (* (cos a) (cos b)) (* (cos a) (cos b))) (* (* (sin a) (sin b)) (* (sin a) (sin b))))) (+ (* (cos a) (cos b)) (* (sin a) (sin b))))
33.0ms
(/ (sin b) (- (* (* (cos a) (cos b)) (* (cos a) (cos b))) (* (* (sin a) (sin b)) (* (sin a) (sin b)))))
32.0ms
(* (* (cos a) (cos b)) (* (cos a) (cos b)))
24.0ms
(* (* (sin a) (sin b)) (* (sin a) (sin b)))

series523.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
278.0ms
(* (/ (sin b) (- (* (* (cos a) (cos b)) (* (cos a) (cos b))) (* (* (sin a) (sin b)) (* (sin a) (sin b))))) (+ (* (cos a) (cos b)) (* (sin a) (sin b))))
148.0ms
(/ (sin b) (- (* (* (cos a) (cos b)) (* (cos a) (cos b))) (* (* (sin a) (sin b)) (* (sin a) (sin b)))))
51.0ms
(* (* (cos a) (cos b)) (* (cos a) (cos b)))
46.0ms
(* (* (sin a) (sin b)) (* (sin a) (sin b)))

simplify20.9s

Counts
161 → 180
Calls
161 calls:
Slowest
1.1s
(* (* (* (* (sin a) (sin a)) (sin a)) (* (* (sin b) (sin b)) (sin b))) (* (* (* (sin a) (sin b)) (* (sin a) (sin b))) (* (sin a) (sin b))))
607.0ms
(* (* (* (* (cos a) (cos a)) (cos a)) (* (* (cos b) (cos b)) (cos b))) (* (* (* (cos a) (cos b)) (* (cos a) (cos b))) (* (cos a) (cos b))))
503.0ms
(* (* (* (* (cos a) (cos b)) (* (cos a) (cos b))) (* (cos a) (cos b))) (* (* (* (cos a) (cos a)) (cos a)) (* (* (cos b) (cos b)) (cos b))))
503.0ms
(* (* (* (* (sin a) (sin b)) (* (sin a) (sin b))) (* (sin a) (sin b))) (* (* (* (sin a) (sin b)) (* (sin a) (sin b))) (* (sin a) (sin b))))
494.0ms
(* (* (* (* (sin a) (sin b)) (* (sin a) (sin b))) (* (sin a) (sin b))) (* (* (* (sin a) (sin a)) (sin a)) (* (* (sin b) (sin b)) (sin b))))

prune2.3s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 0.0b

localize24.0ms

Local error

Found 4 expressions with local error:

0.3b
(* (* (cos a) (cos b)) (cos a))
0.3b
(* (/ (sin b) (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b))))) (+ (* (cos a) (cos b)) (* (sin a) (sin b))))
0.2b
(* (* (sin a) (sin b)) (* (sin a) (sin b)))
0.2b
(/ (sin b) (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b)))))

rewrite193.0ms

Algorithm
rewrite-expression-head
Rules
38×pow1
28×add-exp-log
28×add-cbrt-cube
27×associate-*l/
22×associate-*l*
21×add-cube-cbrt
21×*-un-lft-identity
21×add-sqr-sqrt
18×sin-mult
18×times-frac
17×pow-prod-down
14×associate-/r/
13×cbrt-unprod
13×cos-mult
13×prod-exp
associate-*r/
associate-*r*
frac-sub
frac-times
add-log-exp
sub-div
pow-prod-up
associate-/l*
*-commutative
associate-/r*
flip--
div-inv
flip-+
frac-add
div-exp
flip3--
pow-plus
flip3-+
cbrt-undiv
distribute-lft-in
frac-2neg
clear-num
distribute-rgt-in
pow2
Counts
4 → 130
Calls
4 calls:
Slowest
106.0ms
(* (/ (sin b) (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b))))) (+ (* (cos a) (cos b)) (* (sin a) (sin b))))
53.0ms
(/ (sin b) (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b)))))
18.0ms
(* (* (sin a) (sin b)) (* (sin a) (sin b)))
13.0ms
(* (* (cos a) (cos b)) (cos a))

series469.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
239.0ms
(* (/ (sin b) (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b))))) (+ (* (cos a) (cos b)) (* (sin a) (sin b))))
130.0ms
(/ (sin b) (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b)))))
54.0ms
(* (* (sin a) (sin b)) (* (sin a) (sin b)))
46.0ms
(* (* (cos a) (cos b)) (cos a))

simplify11.9s

Counts
119 → 142
Calls
119 calls:
Slowest
519.0ms
(* (* (* (* (sin a) (sin b)) (* (sin a) (sin b))) (* (sin a) (sin b))) (* (* (* (sin a) (sin a)) (sin a)) (* (* (sin b) (sin b)) (sin b))))
506.0ms
(* (* (* (* (sin a) (sin a)) (sin a)) (* (* (sin b) (sin b)) (sin b))) (* (* (* (sin a) (sin b)) (* (sin a) (sin b))) (* (sin a) (sin b))))
471.0ms
(* (* (* (* (sin a) (sin b)) (* (sin a) (sin b))) (* (sin a) (sin b))) (* (* (* (sin a) (sin b)) (* (sin a) (sin b))) (* (sin a) (sin b))))
351.0ms
(* (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b)))) (* 2 2))
346.0ms
(/ (* (* (sin b) (sin b)) (sin b)) (* (* (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b)))) (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b))))) (- (* (* (* (cos a) (cos b)) (cos a)) (cos b)) (* (* (sin a) (sin b)) (* (sin a) (sin b))))))

prune2.3s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 0b

regimes266.0ms

Accuracy

0% (0.4b remaining)

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

bsearch5.0ms

end0.0ms

sample7.4s

Algorithm
intervals
Results
3.7s2911×body1280valid
2.6s1856×body640valid
404.0ms763×body320valid
372.0ms2119×body80valid
166.0ms353×body160valid