Average Error: 0.0 → 0.0
Time: 17.1s
Precision: 64
Internal Precision: 128
\[\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)\]
\[(\left(\cos re\right) \cdot \left(e^{im}\right) + \left(\frac{\cos re}{e^{im}}\right))_* \cdot 0.5\]

Error

Bits error versus re

Bits error versus im

Derivation

  1. Initial program 0.0

    \[\left(0.5 \cdot \cos re\right) \cdot \left(e^{-im} + e^{im}\right)\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt0.0

    \[\leadsto \left(0.5 \cdot \cos re\right) \cdot \left(\color{blue}{\sqrt{e^{-im}} \cdot \sqrt{e^{-im}}} + e^{im}\right)\]
  4. Applied fma-def0.0

    \[\leadsto \left(0.5 \cdot \cos re\right) \cdot \color{blue}{(\left(\sqrt{e^{-im}}\right) \cdot \left(\sqrt{e^{-im}}\right) + \left(e^{im}\right))_*}\]
  5. Using strategy rm
  6. Applied pow10.0

    \[\leadsto \left(0.5 \cdot \cos re\right) \cdot \color{blue}{{\left((\left(\sqrt{e^{-im}}\right) \cdot \left(\sqrt{e^{-im}}\right) + \left(e^{im}\right))_*\right)}^{1}}\]
  7. Applied pow10.0

    \[\leadsto \color{blue}{{\left(0.5 \cdot \cos re\right)}^{1}} \cdot {\left((\left(\sqrt{e^{-im}}\right) \cdot \left(\sqrt{e^{-im}}\right) + \left(e^{im}\right))_*\right)}^{1}\]
  8. Applied pow-prod-down0.0

    \[\leadsto \color{blue}{{\left(\left(0.5 \cdot \cos re\right) \cdot (\left(\sqrt{e^{-im}}\right) \cdot \left(\sqrt{e^{-im}}\right) + \left(e^{im}\right))_*\right)}^{1}}\]
  9. Simplified0.0

    \[\leadsto {\color{blue}{\left((\left(\cos re\right) \cdot \left(e^{im}\right) + \left(\frac{\cos re}{e^{im}}\right))_* \cdot 0.5\right)}}^{1}\]
  10. Final simplification0.0

    \[\leadsto (\left(\cos re\right) \cdot \left(e^{im}\right) + \left(\frac{\cos re}{e^{im}}\right))_* \cdot 0.5\]

Reproduce

herbie shell --seed 2019010 +o rules:numerics
(FPCore (re im)
  :name "math.cos on complex, real part"
  (* (* 0.5 (cos re)) (+ (exp (- im)) (exp im))))

Details

Time bar (total: 16.7s)Debug log

sample255.0ms

Algorithm
intervals

simplify201.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
201.0ms
(* (* 0.5 (cos re)) (+ (exp (- im)) (exp im)))

prune7.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.0b

localize29.0ms

Local error

Found 2 expressions with local error:

0.0b
(* (* 0.5 (cos re)) (+ (exp (- im)) (exp im)))
0.0b
(+ (exp (- im)) (exp im))

rewrite19.0ms

Algorithm
rewrite-expression-head
Rules
*-un-lft-identity
add-log-exp
add-cube-cbrt
add-exp-log
associate-*r*
add-cbrt-cube
pow1
add-sqr-sqrt
fma-def
distribute-lft-out
log1p-expm1-u
flip-+
associate-*r/
flip3-+
expm1-log1p-u
cbrt-unprod
*-commutative
prod-exp
pow-prod-down
associate-*l*
distribute-lft-in
sum-log
+-commutative
distribute-rgt-in
Counts
2 → 39
Calls
2 calls:
Slowest
12.0ms
(* (* 0.5 (cos re)) (+ (exp (- im)) (exp im)))
6.0ms
(+ (exp (- im)) (exp im))

series131.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
88.0ms
(* (* 0.5 (cos re)) (+ (exp (- im)) (exp im)))
43.0ms
(+ (exp (- im)) (exp im))

simplify1.6s

Counts
21 → 45
Calls
21 calls:
Slowest
426.0ms
(* 0.5 (* (cos re) (+ (exp (- im)) (exp im))))
273.0ms
(* 0.5 (* (+ (exp im) (exp (* -1 im))) (cos re)))
261.0ms
(+ (* (exp (- im)) (exp (- im))) (- (* (exp im) (exp im)) (* (exp (- im)) (exp im))))
204.0ms
(* (* 0.5 (cos re)) (+ (exp (- im)) (exp im)))
146.0ms
(* (* (* (* 0.5 (cos re)) (* 0.5 (cos re))) (* 0.5 (cos re))) (* (* (+ (exp (- im)) (exp im)) (+ (exp (- im)) (exp im))) (+ (exp (- im)) (exp im))))

prune573.0ms

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0b

localize20.0ms

Local error

Found 2 expressions with local error:

0.0b
(* (* 0.5 (cos re)) (fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im)))
0.0b
(fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im))

rewrite11.0ms

Algorithm
rewrite-expression-head
Rules
add-exp-log
add-cbrt-cube
pow1
fma-udef
add-cube-cbrt
associate-*r*
*-un-lft-identity
add-sqr-sqrt
add-log-exp
log1p-expm1-u
expm1-log1p-u
cbrt-unprod
*-commutative
prod-exp
pow-prod-down
associate-*l*
distribute-lft-in
distribute-rgt-in
Counts
2 → 29
Calls
2 calls:
Slowest
10.0ms
(* (* 0.5 (cos re)) (fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im)))
0.0ms
(fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im))

series240.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
143.0ms
(* (* 0.5 (cos re)) (fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im)))
97.0ms
(fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im))

simplify1.7s

Counts
14 → 35
Calls
14 calls:
Slowest
676.0ms
(* (* 0.5 (cos re)) (fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im)))
440.0ms
(* 0.5 (* (cos re) (+ (exp (- im)) (exp im))))
248.0ms
(* 0.5 (* (+ (exp im) (exp (* -1 im))) (cos re)))
112.0ms
(- (+ (* 0.5 (pow im 2)) 1.0) (* 0.5 (pow re 2)))
56.0ms
(* (* (* (* 0.5 (cos re)) (* 0.5 (cos re))) (* 0.5 (cos re))) (* (* (fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im)) (fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im))) (fma (sqrt (exp (- im))) (sqrt (exp (- im))) (exp im))))

prune425.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0b

localize12.0ms

Local error

Found 2 expressions with local error:

0.0b
(fma (cos re) (exp im) (/ (cos re) (exp im)))
0.0b
(/ (cos re) (exp im))

rewrite4.0ms

Algorithm
rewrite-expression-head
Rules
10×add-cube-cbrt
10×*-un-lft-identity
10×add-sqr-sqrt
times-frac
add-cbrt-cube
associate-/l*
add-exp-log
associate-/r*
add-log-exp
log1p-expm1-u
pow1
expm1-log1p-u
div-inv
fma-udef
div-exp
frac-2neg
clear-num
cbrt-undiv
Counts
2 → 39
Calls
2 calls:
Slowest
3.0ms
(/ (cos re) (exp im))
0.0ms
(fma (cos re) (exp im) (/ (cos re) (exp im)))

series157.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
106.0ms
(fma (cos re) (exp im) (/ (cos re) (exp im)))
51.0ms
(/ (cos re) (exp im))

simplify366.0ms

Counts
31 → 45
Calls
31 calls:
Slowest
123.0ms
(/ (* (* (cos re) (cos re)) (cos re)) (* (* (exp im) (exp im)) (exp im)))
67.0ms
(- 1 (+ (* 1/2 (pow re 2)) im))
38.0ms
(- (+ (pow im 2) 2) (pow re 2))
31.0ms
(/ (* (cbrt (cos re)) (cbrt (cos re))) (* (cbrt (exp im)) (cbrt (exp im))))
19.0ms
(/ (* (cbrt (cos re)) (cbrt (cos re))) 1)

prune463.0ms

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0b

localize21.0ms

Local error

Found 4 expressions with local error:

0.0b
(* (cbrt (exp im)) (cbrt (exp im)))
0.0b
(cbrt (exp im))
0.0b
(cbrt (exp im))
0.0b
(cbrt (exp im))

rewrite8.0ms

Algorithm
rewrite-expression-head
Rules
15×cbrt-prod
11×add-cube-cbrt
11×*-un-lft-identity
11×add-sqr-sqrt
pow1
pow1/3
add-exp-log
associate-*l*
associate-*r*
add-log-exp
log1p-expm1-u
add-cbrt-cube
expm1-log1p-u
pow-prod-up
pow-prod-down
cbrt-unprod
*-commutative
prod-exp
pow-plus
pow2
Counts
4 → 69
Calls
4 calls:
Slowest
6.0ms
(* (cbrt (exp im)) (cbrt (exp im)))
1.0ms
(cbrt (exp im))
1.0ms
(cbrt (exp im))
1.0ms
(cbrt (exp im))

series441.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
119.0ms
(cbrt (exp im))
111.0ms
(* (cbrt (exp im)) (cbrt (exp im)))
109.0ms
(cbrt (exp im))
102.0ms
(cbrt (exp im))

simplify253.0ms

Counts
41 → 81
Calls
41 calls:
Slowest
54.0ms
(+ (* 1/18 (pow im 2)) (+ (* 1/3 im) 1))
45.0ms
(+ (* 1/18 (pow im 2)) (+ (* 1/3 im) 1))
43.0ms
(+ (* 2/9 (pow im 2)) (+ (* 2/3 im) 1))
30.0ms
(+ (* 1/18 (pow im 2)) (+ (* 1/3 im) 1))
5.0ms
(exp (* 1/3 im))

prune1.1s

Pruning

2 alts after pruning (0 fresh and 2 done)

Merged error: 0b

regimes116.0ms

Accuracy

0% (0.0b remaining)

Error of 0.0b against oracle of 0.0b and baseline of 0.0b

bsearch1.0ms

end0.0ms

sample8.6s

Algorithm
intervals