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

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 div-inv0.4

    \[\leadsto r \cdot \color{blue}{\left(\sin b \cdot \frac{1}{\cos a \cdot \cos b - \sin a \cdot \sin b}\right)}\]
  6. Using strategy rm
  7. Applied un-div-inv0.3

    \[\leadsto r \cdot \color{blue}{\frac{\sin b}{\cos a \cdot \cos b - \sin a \cdot \sin b}}\]
  8. Applied associate-*r/0.3

    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos a \cdot \cos b - \sin a \cdot \sin b}}\]
  9. Using strategy rm
  10. Applied log1p-expm1-u0.4

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\log_* (1 + (e^{\cos a \cdot \cos b - \sin a \cdot \sin b} - 1)^*)}}\]
  11. Final simplification0.4

    \[\leadsto \frac{r \cdot \sin b}{\log_* (1 + (e^{\cos a \cdot \cos b - \sin b \cdot \sin a} - 1)^*)}\]

Reproduce

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

Details

Time bar (total: 22.1s)Debug log

sample302.0ms

Algorithm
intervals
Results
107.0ms95×body1280valid
94.0ms52×body640valid
17.0ms28×body320valid
17.0ms73×body80valid
3.0msbody160valid

simplify85.0ms

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

prune14.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 13.0b

localize36.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))))

rewrite23.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*
log1p-expm1-u
associate-/r*
pow1
expm1-log1p-u
div-inv
*-commutative
associate-*r/
div-exp
frac-2neg
clear-num
cos-sum
cbrt-undiv
Counts
3 → 63
Calls
3 calls:
Slowest
8.0ms
(/ (sin b) (cos (+ a b)))
6.0ms
(cos (+ a b))
5.0ms
(* r (/ (sin b) (cos (+ a b))))

series209.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
103.0ms
(* r (/ (sin b) (cos (+ a b))))
57.0ms
(/ (sin b) (cos (+ a b)))
49.0ms
(cos (+ a b))

simplify783.0ms

Counts
49 → 72
Calls
49 calls:
Slowest
203.0ms
(+ (* a (* r (pow b 2))) (+ (* 1/3 (* r (pow b 3))) (* r b)))
130.0ms
(+ b (+ (* 1/3 (pow b 3)) (* a (pow b 2))))
118.0ms
(/ (* (* (sin b) (sin b)) (sin b)) (* (* (cos (+ a b)) (cos (+ a b))) (cos (+ a b))))
111.0ms
(- 1 (+ (* 1/2 (pow a 2)) (* a b)))
32.0ms
(/ (* (cbrt (sin b)) (cbrt (sin b))) (* (cbrt (cos (+ a b))) (cbrt (cos (+ a b)))))

prune662.0ms

Pruning

10 alts after pruning (10 fresh and 0 done)

Merged error: 0.2b

localize24.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)))

rewrite47.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
log1p-expm1-u
expm1-log1p-u
sub-div
associate-/l*
flip--
frac-sub
associate-*l*
flip3--
associate-/r*
div-inv
*-commutative
cbrt-unprod
associate-*r/
prod-exp
pow-prod-down
prod-diff
div-exp
diff-log
fma-neg
frac-2neg
sub-neg
clear-num
cbrt-undiv
Counts
4 → 99
Calls
4 calls:
Slowest
14.0ms
(- (* (cos a) (cos b)) (* (sin a) (sin b)))
12.0ms
(* r (/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b)))))
11.0ms
(/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b))))
7.0ms
(* (sin a) (sin b))

series546.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
237.0ms
(* r (/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b)))))
147.0ms
(/ (sin b) (- (* (cos a) (cos b)) (* (sin a) (sin b))))
113.0ms
(- (* (cos a) (cos b)) (* (sin a) (sin b)))
48.0ms
(* (sin a) (sin b))

simplify2.8s

Counts
73 → 111
Calls
73 calls:
Slowest
348.0ms
(- (* (+ (cos (+ a b)) (cos (- a b))) 2) (* 2 (- (cos (- a b)) (cos (+ a b)))))
282.0ms
(- (+ (cos (+ a b)) (cos (- a b))) (- (cos (- a b)) (cos (+ a b))))
254.0ms
(+ (* a (* r (pow b 2))) (+ (* 1/3 (* r (pow b 3))) (* r b)))
217.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)))))
194.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)))))

prune1.7s

Pruning

13 alts after pruning (13 fresh and 0 done)

Merged error: 0.0b

localize8.0ms

Local error

Found 4 expressions with local error:

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

rewrite52.0ms

Algorithm
rewrite-expression-head
Rules
12×associate-*r*
11×add-exp-log
add-cube-cbrt
*-un-lft-identity
pow1
add-sqr-sqrt
associate-/r/
add-cbrt-cube
associate-*l*
sin-mult
add-log-exp
log1p-expm1-u
cos-mult
associate-*r/
expm1-log1p-u
*-commutative
prod-exp
associate-/r*
sub-div
flip--
div-inv
cbrt-unprod
frac-sub
un-div-inv
pow-prod-down
flip3--
rec-exp
inv-pow
pow-flip
frac-2neg
clear-num
Counts
4 → 82
Calls
4 calls:
Slowest
19.0ms
(* (sin b) (/ 1 (- (* (cos a) (cos b)) (* (sin a) (sin b)))))
18.0ms
(/ 1 (- (* (cos a) (cos b)) (* (sin a) (sin b))))
7.0ms
(* (sin a) (sin b))
7.0ms
(* r (* (sin b) (/ 1 (- (* (cos a) (cos b)) (* (sin a) (sin b))))))

series545.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
243.0ms
(* r (* (sin b) (/ 1 (- (* (cos a) (cos b)) (* (sin a) (sin b))))))
125.0ms
(* (sin b) (/ 1 (- (* (cos a) (cos b)) (* (sin a) (sin b)))))
105.0ms
(/ 1 (- (* (cos a) (cos b)) (* (sin a) (sin b))))
71.0ms
(* (sin a) (sin b))

simplify1.9s

Counts
46 → 94
Calls
46 calls:
Slowest
342.0ms
(+ (* a (* r (pow b 2))) (+ (* 1/3 (* r (pow b 3))) (* r b)))
256.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)))))
222.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)))))
211.0ms
(* (* (* (sin b) (sin b)) (sin b)) (* (* (/ 1 (- (* (cos a) (cos b)) (* (sin a) (sin b)))) (/ 1 (- (* (cos a) (cos b)) (* (sin a) (sin b))))) (/ 1 (- (* (cos a) (cos b)) (* (sin a) (sin b))))))
194.0ms
(+ b (+ (* 1/3 (pow b 3)) (* a (pow b 2))))

prune1.3s

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 0.0b

localize7.0ms

Local error

Found 4 expressions with local error:

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

rewrite38.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-exp-log
add-cbrt-cube
add-log-exp
associate-*r*
pow1
sin-mult
log1p-expm1-u
cos-mult
associate-/r/
expm1-log1p-u
associate-*l*
times-frac
associate-/r*
sub-div
flip--
frac-sub
*-commutative
flip3--
associate-/l*
div-inv
cbrt-unprod
prod-exp
pow-prod-down
prod-diff
div-exp
diff-log
fma-neg
frac-2neg
sub-neg
clear-num
cbrt-undiv
Counts
4 → 76
Calls
4 calls:
Slowest
20.0ms
(/ (* r (sin b)) (- (* (cos a) (cos b)) (* (sin a) (sin b))))
7.0ms
(- (* (cos a) (cos b)) (* (sin a) (sin b)))
7.0ms
(* (sin a) (sin b))
2.0ms
(* r (sin b))

series411.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
212.0ms
(/ (* r (sin b)) (- (* (cos a) (cos b)) (* (sin a) (sin b))))
112.0ms
(- (* (cos a) (cos b)) (* (sin a) (sin b)))
52.0ms
(* (sin a) (sin b))
34.0ms
(* r (sin b))

simplify2.1s

Counts
45 → 88
Calls
45 calls:
Slowest
356.0ms
(- (* (+ (cos (+ a b)) (cos (- a b))) 2) (* 2 (- (cos (- a b)) (cos (+ a b)))))
315.0ms
(- (+ (cos (+ a b)) (cos (- a b))) (- (cos (- a b)) (cos (+ a b))))
253.0ms
(+ (* a (* r (pow b 2))) (+ (* 1/3 (* r (pow b 3))) (* r b)))
252.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)))))
193.0ms
(- 1 (+ (* 1/2 (pow a 2)) (* a b)))

prune1.1s

Pruning

10 alts after pruning (10 fresh and 0 done)

Merged error: 0.0b

regimes299.0ms

Accuracy

0% (0.3b remaining)

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

bsearch2.0ms

end0.0ms

sample7.1s

Algorithm
intervals
Results
3.7s2911×body1280valid
1.9s1856×body640valid
802.0ms2119×body80valid
414.0ms763×body320valid
158.0ms353×body160valid