Details

Time bar (total: 11.8s)

analyze268.0ms (2.3%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
50%50%50%0.1%0%0%0%5
50%50%50%0.1%0%0%0%6
57.1%50%37.5%0.1%12.5%0%0%7
57.1%50%37.5%0.1%12.5%0%0%8
61.5%50%31.2%0.1%18.7%0%0%9
61.5%50%31.2%0.1%18.7%0%0%10
64%50%28.1%0.1%21.9%0%0%11
64%50%28.1%0.1%21.9%0%0%12
Compiler

Compiled 14 to 11 computations (21.4% saved)

sample6.1s (51.2%)

Results
1.8s2071×body1024valid
1.3s2000×body1024infinite
1.1s5112×body256valid
820.0ms1067×body512valid
515.0ms1554×body256infinite
489.0ms1015×body512infinite
8.0msbody2048valid
1.0msbody2048infinite
Bogosity

preprocess127.0ms (1.1%)

Algorithm
egg-herbie
Rules
748×times-frac_binary64
628×fma-def_binary64
384×sqr-pow_binary64
320×unswap-sqr_binary64
302×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01836
14936
213136
325534
437234
566934
6153134
7266034
8381234
9455834
10515234
11606034
12756734
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (cos.f64 im)) (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re)))
Outputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (cos.f64 re) (*.f64 1/2 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (cos.f64 re) (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 (*.f64 1/2 (cos.f64 im)) (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re)))
(*.f64 1/2 (*.f64 (cos.f64 im) (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re))))
(*.f64 (cos.f64 im) (fma.f64 1/2 (exp.f64 re) (/.f64 1/2 (exp.f64 re))))
Compiler

Compiled 15 to 12 computations (20% saved)

simplify101.0ms (0.9%)

Algorithm
egg-herbie
Rules
573×fma-def_binary64
530×associate-/l*_binary64
430×unswap-sqr_binary64
374×times-frac_binary64
340×associate-/r/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01118
12818
27018
313217
419217
534617
678017
7135117
8396717
9449017
10546117
11602417
12705817
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (cos.f64 re) (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))

eval1.0ms (0%)

Compiler

Compiled 24 to 15 computations (37.5% saved)

prune2.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
0.0b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 13 to 10 computations (23.1% saved)

localize35.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 35 to 13 computations (62.9% saved)

series12.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
3.0ms
im
@inf
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
2.0ms
re
@-inf
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
2.0ms
re
@0
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
2.0ms
im
@0
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
2.0ms
re
@inf
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))

rewrite69.0ms (0.6%)

Algorithm
egg-rewrite-iter-limit
batch-egg-rewrite
Rules
121×add-sqr-sqrt_binary64
116×*-un-lft-identity_binary64
116×pow1_binary64
114×add-log-exp_binary64
112×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01118
123318
2378018
01118
Stop Event
iter limit
unsound
Counts
1 → 8
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (exp.f64 (neg.f64 im)) (*.f64 1/2 (cos.f64 re))) (*.f64 (exp.f64 im) (*.f64 1/2 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/2 (cos.f64 re)) (exp.f64 (neg.f64 im))) (*.f64 (*.f64 1/2 (cos.f64 re)) (exp.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))) (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))))

simplify90.0ms (0.8%)

Algorithm
egg-herbie
Rules
587×associate-+l+_binary64
587×distribute-rgt-out_binary64
480×distribute-lft-out_binary64
401×associate-+r+_binary64
365×distribute-rgt-in_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
054542
1168485
2545451
32097446
44751444
56885444
Stop Event
node limit
Counts
32 → 26
Calls
Call 1
Inputs
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))
(+.f64 (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 re 2) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/48 (*.f64 (pow.f64 re 4) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 re 2) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/48 (*.f64 (pow.f64 re 4) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (+.f64 (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4))) (*.f64 1/720 (*.f64 (cos.f64 re) (pow.f64 im 6))))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
Outputs
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im)))
(+.f64 (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))
(fma.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 -1/4 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re re))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 1/2 (*.f64 (*.f64 -1/4 re) re)))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (fma.f64 -1/4 (*.f64 re re) 1/2))
(+.f64 (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 re 2) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/48 (*.f64 (pow.f64 re 4) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))))
(fma.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (fma.f64 -1/4 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re re)) (*.f64 (*.f64 1/48 (pow.f64 re 4)) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))
(fma.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 (*.f64 -1/4 re) re) (*.f64 1/48 (pow.f64 re 4)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 1/2 (fma.f64 -1/4 (*.f64 re re) (*.f64 1/48 (pow.f64 re 4)))))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 re 2) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/48 (*.f64 (pow.f64 re 4) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))))
(fma.f64 -1/1440 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 6)) (fma.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (fma.f64 -1/4 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re re)) (*.f64 (*.f64 1/48 (pow.f64 re 4)) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 (*.f64 -1/4 re) re) (*.f64 1/48 (pow.f64 re 4)))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 -1/1440 (pow.f64 re 6)) 1/2)))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (fma.f64 -1/4 (*.f64 re re) (*.f64 1/48 (pow.f64 re 4))) (fma.f64 -1/1440 (pow.f64 re 6) 1/2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (cos.f64 re) (*.f64 im im)) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/2 (*.f64 im im)) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(fma.f64 1/2 (*.f64 (cos.f64 re) (*.f64 im im)) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(fma.f64 1/2 (*.f64 (cos.f64 re) (*.f64 im im)) (fma.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)) (cos.f64 re)))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/2 (*.f64 im im)))))
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (+.f64 (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4))) (*.f64 1/720 (*.f64 (cos.f64 re) (pow.f64 im 6))))))
(+.f64 (fma.f64 1/2 (*.f64 (cos.f64 re) (*.f64 im im)) (cos.f64 re)) (fma.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)) (*.f64 1/720 (*.f64 (cos.f64 re) (pow.f64 im 6)))))
(+.f64 (fma.f64 1/2 (*.f64 (cos.f64 re) (*.f64 im im)) (cos.f64 re)) (fma.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)) (*.f64 (cos.f64 re) (*.f64 (pow.f64 im 6) 1/720))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (*.f64 im im)) 1) (cos.f64 re)) (*.f64 (cos.f64 re) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/720 (pow.f64 im 6)))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (+.f64 (+.f64 (*.f64 1/720 (pow.f64 im 6)) (*.f64 1/2 (*.f64 im im))) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (cos.f64 re) (+.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (+.f64 (*.f64 1/720 (pow.f64 im 6)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/720 (pow.f64 im 6))))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (cos.f64 re)))
(*.f64 (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))) (cos.f64 re))

eval14.0ms (0.1%)

Compiler

Compiled 453 to 209 computations (53.9% saved)

prune16.0ms (0.1%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New21526
Fresh000
Picked011
Done000
Total21627
Error
0.0b
Counts
27 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
30.1b
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
0.7b
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
0.7b
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
0.7b
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
1.2b
(cos.f64 re)
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 127 to 96 computations (24.4% saved)

localize29.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4))))
0.0b
(*.f64 1/2 (*.f64 im im))
0.0b
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
0.1b
(*.f64 1/24 (pow.f64 im 4))
Compiler

Compiled 62 to 41 computations (33.9% saved)

series17.0ms (0.1%)

Counts
4 → 48
Calls

15 calls:

TimeVariablePointExpression
3.0ms
im
@inf
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
2.0ms
re
@inf
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
2.0ms
re
@0
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
1.0ms
im
@0
(*.f64 1/24 (pow.f64 im 4))
1.0ms
im
@inf
(*.f64 1/24 (pow.f64 im 4))

rewrite114.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
703×log-prod_binary64
684×fma-def_binary64
314×fma-neg_binary64
265×expm1-udef_binary64
265×log1p-udef_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01553
132749
2423149
Stop Event
node limit
Counts
4 → 190
Calls
Call 1
Inputs
(*.f64 1/24 (pow.f64 im 4))
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 1/2 (*.f64 im im))
(+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/24 (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 1/24) (pow.f64 im 4))) (cbrt.f64 (pow.f64 (exp.f64 1/24) (pow.f64 im 4))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 1/24) (pow.f64 im 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/24) (pow.f64 im 4)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/24) (pow.f64 im 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/24 (pow.f64 im 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/24 (pow.f64 im 4))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 im im) (sqrt.f64 1/24)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (pow.f64 im 4) 3) 1/13824) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 im 8) 1/576))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/24) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 1/24 (pow.f64 im 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 im 4) 3) 1/13824))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/24 (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (*.f64 (log1p.f64 (*.f64 1/24 (pow.f64 im 4))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/24 (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 4 (log.f64 im) (log1p.f64 -23/24)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 4 (log.f64 im) (log1p.f64 -23/24)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 1/24 (pow.f64 im 4) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (pow.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) 2) (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (pow.f64 (pow.f64 im 4) 3) 1/13824 1) (/.f64 1 (+.f64 1 (fma.f64 (pow.f64 im 8) 1/576 (*.f64 -1/24 (pow.f64 im 4))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (*.f64 (pow.f64 im 8) 1/576)) (/.f64 1 (+.f64 1 (*.f64 -1/24 (pow.f64 im 4)))) -1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (fma.f64 im (*.f64 im 1/2) 1) (cos.f64 re)) (*.f64 (*.f64 1/24 (pow.f64 im 4)) (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) 1) (*.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 re) (fma.f64 im (*.f64 im 1/2) 1)) (*.f64 (cos.f64 re) (*.f64 1/24 (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))) (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) 3) (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)) 3)) (fma.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) (-.f64 (*.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1))) (*.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))) (*.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))) (-.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 3)) (cos.f64 re)) (fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (-.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 im (*.f64 im 1/2))) (*.f64 (pow.f64 im 4) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2)) (cos.f64 re)) (-.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 3))) (fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (-.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 im (*.f64 im 1/2))) (*.f64 (pow.f64 im 4) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (-.f64 (*.f64 (pow.f64 im 4) 1/4) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2))) (-.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1))) (exp.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (cos.f64 re) 3) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)) 3) (pow.f64 (cos.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) (fma.f64 im (*.f64 im 1/2) 1) (*.f64 (cos.f64 re) (*.f64 1/24 (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) (*.f64 1/2 (cos.f64 re)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4)) (*.f64 (cbrt.f64 (*.f64 im (*.f64 im 1/2))) (cos.f64 re)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (*.f64 (cbrt.f64 (cos.f64 re)) (*.f64 im (*.f64 im 1/2))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (*.f64 (cbrt.f64 (cos.f64 re)) (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) 2) (*.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (sqrt.f64 1/2)) (*.f64 (*.f64 im (sqrt.f64 1/2)) (cos.f64 re)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) (*.f64 im (*.f64 im 1/2))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))) 1 (*.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im 1/2) (*.f64 im (cos.f64 re)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 im (*.f64 im 1/2) 1) (cos.f64 re) (*.f64 (*.f64 1/24 (pow.f64 im 4)) (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))) (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))) (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1))) (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))) (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1))) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))) (sqrt.f64 (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1))) (sqrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1))) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 im (sqrt.f64 1/2)) (sqrt.f64 (cos.f64 re))) (*.f64 (*.f64 im (sqrt.f64 1/2)) (sqrt.f64 (cos.f64 re))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (cos.f64 re)) (*.f64 im (sqrt.f64 1/2))) (*.f64 (sqrt.f64 (cos.f64 re)) (*.f64 im (sqrt.f64 1/2))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (cos.f64 re)) (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1))) (*.f64 (sqrt.f64 (cos.f64 re)) (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1))) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (sqrt.f64 (cos.f64 re))) (*.f64 (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (sqrt.f64 (cos.f64 re))) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 im (*.f64 im 1/2)) (pow.f64 (cbrt.f64 (cos.f64 re)) 2)) (cbrt.f64 (cos.f64 re)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 im (*.f64 im 1/2)) (sqrt.f64 (cos.f64 re))) (sqrt.f64 (cos.f64 re)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) 1/2) (*.f64 im im) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2 (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4))) (cbrt.f64 (*.f64 im (*.f64 im 1/2))) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 im (sqrt.f64 1/2))) (*.f64 im (sqrt.f64 1/2)) (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 im 1/2)) im (*.f64 (cos.f64 re) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (pow.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) 2)) (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1))) (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (pow.f64 (cbrt.f64 (cos.f64 re)) 2)) (cbrt.f64 (cos.f64 re)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (sqrt.f64 (cos.f64 re))) (sqrt.f64 (cos.f64 re)) (*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (*.f64 im (*.f64 im 1/2)))) (cbrt.f64 (exp.f64 (*.f64 im (*.f64 im 1/2)))))) (log.f64 (cbrt.f64 (exp.f64 (*.f64 im (*.f64 im 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 im (*.f64 im 1/2))))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 im (*.f64 im 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (fma.f64 im (*.f64 im 1/2) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 im (*.f64 im 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 im (*.f64 im 1/2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 im (sqrt.f64 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/8 (pow.f64 im 6)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 im 4) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 im (*.f64 im 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 1/8 (pow.f64 im 6)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 im (*.f64 im 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 im (*.f64 im 1/2) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (fma.f64 im (*.f64 im 1/2) 1)) (cbrt.f64 (fma.f64 im (*.f64 im 1/2) 1))) (cbrt.f64 (fma.f64 im (*.f64 im 1/2) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (hypot.f64 1 (*.f64 im (sqrt.f64 1/2))) (hypot.f64 1 (*.f64 im (sqrt.f64 1/2))) -1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (pow.f64 im 4) 1/4) (-.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1))) (/.f64 (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2) (-.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) (pow.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) 2) (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 3)) (/.f64 1 (fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (-.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 im (*.f64 im 1/2))) (*.f64 (pow.f64 im 4) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2)) (/.f64 1 (-.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (-.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 im (*.f64 im 1/2))) (*.f64 (pow.f64 im 4) 1/4)) (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1)) (-.f64 (*.f64 (pow.f64 im 4) 1/4) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 3)) (fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (-.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 im (*.f64 im 1/2))) (*.f64 (pow.f64 im 4) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 3)) (+.f64 (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2) (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2)) (-.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 3))) (neg.f64 (fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (-.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 im (*.f64 im 1/2))) (*.f64 (pow.f64 im 4) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2))) (neg.f64 (-.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 im (*.f64 im 1/2) 1) 3) (*.f64 (pow.f64 (pow.f64 im 4) 3) 1/13824)) (fma.f64 (fma.f64 im (*.f64 im 1/2) 1) (fma.f64 im (*.f64 im 1/2) 1) (-.f64 (*.f64 (pow.f64 im 8) 1/576) (*.f64 (fma.f64 im (*.f64 im 1/2) 1) (*.f64 1/24 (pow.f64 im 4))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2) (*.f64 (pow.f64 im 4) 1/4)) (-.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (fma.f64 im (*.f64 im 1/2) 1) (fma.f64 im (*.f64 im 1/2) 1)) (*.f64 (pow.f64 im 8) 1/576)) (-.f64 (fma.f64 im (*.f64 im 1/2) 1) (*.f64 1/24 (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (-.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 im (*.f64 im 1/2))) (*.f64 (pow.f64 im 4) 1/4)) (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1)) (-.f64 (*.f64 (pow.f64 im 4) 1/4) (pow.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 1/24) (pow.f64 im 4)) (exp.f64 (fma.f64 im (*.f64 im 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 1/24 (pow.f64 im 4)))) (exp.f64 (fma.f64 im (*.f64 im 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 im (*.f64 im 1/2)))) (exp.f64 (fma.f64 1/24 (pow.f64 im 4) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 im (*.f64 im 1/2))) (+.f64 1 (expm1.f64 (fma.f64 1/24 (pow.f64 im 4) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 im (*.f64 im 1/2)))) (+.f64 1 (expm1.f64 (fma.f64 1/24 (pow.f64 im 4) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 1/24 (pow.f64 im 4) 1))) (exp.f64 (*.f64 im (*.f64 im 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (+.f64 1 (expm1.f64 (*.f64 im (*.f64 im 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 1/24 (pow.f64 im 4) 1))) (+.f64 1 (expm1.f64 (*.f64 im (*.f64 im 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 im (*.f64 im 1/2) 1)) (+.f64 1 (expm1.f64 (*.f64 1/24 (pow.f64 im 4))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (fma.f64 1/24 (pow.f64 im 4) (*.f64 im (*.f64 im 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (fma.f64 1/24 (pow.f64 im 4) (*.f64 im (*.f64 im 1/2)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/24 (pow.f64 im 4) (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 im (*.f64 im 1/2) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 im 4) 1/24 (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/24 (pow.f64 im 4)) 1 (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) 1/2 (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) (*.f64 (*.f64 im im) 1/24) (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (*.f64 im 1/2)) 1 (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 im (*.f64 im 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 1/24 (pow.f64 im 4) 1) (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 im (*.f64 im 1/2) 1) (*.f64 1/24 (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/24 (pow.f64 im 4) 1) 1 (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 1/24 (pow.f64 im 4))) (cbrt.f64 (*.f64 (pow.f64 im 8) 1/576)) (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 im 8) 1/576)) (cbrt.f64 (*.f64 1/24 (pow.f64 im 4))) (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 im (*.f64 im 1/2))) (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4)) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4)) (cbrt.f64 (*.f64 im (*.f64 im 1/2))) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 im 4)) (*.f64 (pow.f64 (cbrt.f64 im) 2) 1/2) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 im 8)) (*.f64 (cbrt.f64 (pow.f64 im 4)) 1/24) (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (pow.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) 2) (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) 2) (cbrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 im im) (sqrt.f64 1/24)) (*.f64 (*.f64 im im) (sqrt.f64 1/24)) (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (sqrt.f64 1/2)) (*.f64 im (sqrt.f64 1/2)) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (sqrt.f64 (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (pow.f64 (pow.f64 im 4) 3) 1/13824 1) (/.f64 1 (+.f64 1 (fma.f64 (pow.f64 im 8) 1/576 (*.f64 -1/24 (pow.f64 im 4))))) (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (*.f64 (pow.f64 im 8) 1/576)) (/.f64 1 (+.f64 1 (*.f64 -1/24 (pow.f64 im 4)))) (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im 1/2) im (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 im (*.f64 im 1/2) 1) 1 (*.f64 1/24 (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (fma.f64 im (*.f64 im 1/2) 1)) (cbrt.f64 (fma.f64 im (*.f64 im 1/2) 1))) (cbrt.f64 (fma.f64 im (*.f64 im 1/2) 1)) (*.f64 1/24 (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (hypot.f64 1 (*.f64 im (sqrt.f64 1/2))) (hypot.f64 1 (*.f64 im (sqrt.f64 1/2))) (*.f64 1/24 (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 (cbrt.f64 (pow.f64 im 4))) (pow.f64 (cbrt.f64 im) 2) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 im 1/2) 1) im (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 im 1/2) (pow.f64 (cbrt.f64 im) 2)) (cbrt.f64 im) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 im 1/2) (sqrt.f64 im)) (sqrt.f64 im) (fma.f64 1/24 (pow.f64 im 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/24 (*.f64 im im)) (*.f64 im im) (fma.f64 im (*.f64 im 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/24 (cbrt.f64 (pow.f64 im 8))) (cbrt.f64 (pow.f64 im 4)) (fma.f64 im (*.f64 im 1/2) 1))))))

simplify120.0ms (1%)

Algorithm
egg-herbie
Rules
1294×distribute-rgt-in_binary64
1206×distribute-lft-in_binary64
311×fma-def_binary64
309×*-commutative_binary64
274×sqr-pow_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
046861
1132849
2457751
32108721
44066706
54543706
64719706
74918706
85099706
95331706
Stop Event
node limit
Counts
238 → 215
Calls
Call 1
Inputs
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (+.f64 (*.f64 -1/2 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 1 (+.f64 (*.f64 1/24 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 4))) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))))
(+.f64 1 (+.f64 (*.f64 1/24 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 4))) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/720 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 6))) (*.f64 1/24 (pow.f64 im 4)))))))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (pow.f64 im 2))
1
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(*.f64 1/24 (pow.f64 im 4))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(*.f64 1/24 (pow.f64 im 4))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
Outputs
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1))
(+.f64 1 (+.f64 (*.f64 -1/2 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 1 (fma.f64 -1/2 (*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (*.f64 re re)) (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 1 (fma.f64 -1/2 (*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (*.f64 re re)) (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (+.f64 (*.f64 (*.f64 -1/2 re) re) 1) (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (+.f64 1 (*.f64 -1/2 (*.f64 re re))))
(+.f64 1 (+.f64 (*.f64 1/24 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 4))) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))))
(+.f64 1 (fma.f64 1/24 (*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 4)) (fma.f64 -1/2 (*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (*.f64 re re)) (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))))))
(+.f64 1 (fma.f64 1/24 (*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (pow.f64 re 4)) (fma.f64 -1/2 (*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (*.f64 re re)) (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))))))
(+.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (+.f64 (*.f64 (*.f64 -1/2 re) re) (*.f64 1/24 (pow.f64 re 4)))))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (+.f64 (+.f64 1 (*.f64 -1/2 (*.f64 re re))) (*.f64 1/24 (pow.f64 re 4))))
(+.f64 1 (+.f64 (*.f64 1/24 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 4))) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/720 (*.f64 (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 6))) (*.f64 1/24 (pow.f64 im 4)))))))
(+.f64 1 (fma.f64 1/24 (*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 4)) (fma.f64 -1/2 (*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (*.f64 re re)) (fma.f64 1/2 (*.f64 im im) (fma.f64 -1/720 (*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (pow.f64 re 6)) (*.f64 1/24 (pow.f64 im 4)))))))
(+.f64 1 (fma.f64 1/24 (*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (pow.f64 re 4)) (fma.f64 -1/2 (*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (*.f64 re re)) (fma.f64 1/2 (*.f64 im im) (fma.f64 -1/720 (*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (pow.f64 re 6)) (*.f64 1/24 (pow.f64 im 4)))))))
(+.f64 (+.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (+.f64 (*.f64 (*.f64 -1/2 re) re) (*.f64 1/24 (pow.f64 re 4))))) (*.f64 (pow.f64 re 6) (fma.f64 (fma.f64 1/24 (pow.f64 im 4) (*.f64 1/2 (*.f64 im im))) -1/720 -1/720)))
(fma.f64 1/24 (*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (pow.f64 re 4)) (*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (+.f64 (+.f64 1 (*.f64 -1/2 (*.f64 re re))) (*.f64 -1/720 (pow.f64 re 6)))))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (+.f64 (+.f64 (*.f64 -1/2 (*.f64 re re)) (*.f64 1/24 (pow.f64 re 4))) (+.f64 (*.f64 -1/720 (pow.f64 re 6)) 1)))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (+.f64 (+.f64 (*.f64 -1/2 (*.f64 re re)) (*.f64 1/24 (pow.f64 re 4))) (+.f64 1 (*.f64 -1/720 (pow.f64 re 6)))))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(fma.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(*.f64 (cos.f64 re) (fma.f64 im (*.f64 1/2 im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (pow.f64 im 4) (cos.f64 re)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4))))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (*.f64 1/24 (*.f64 (pow.f64 im 4) (cos.f64 re))))
(*.f64 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))) (cos.f64 re))
(*.f64 (fma.f64 1/24 (pow.f64 im 4) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (pow.f64 im 4) (cos.f64 re)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4))))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (*.f64 1/24 (*.f64 (pow.f64 im 4) (cos.f64 re))))
(*.f64 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))) (cos.f64 re))
(*.f64 (fma.f64 1/24 (pow.f64 im 4) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (+.f64 (cos.f64 re) (*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))) (cos.f64 re))
(*.f64 (+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1)) (cos.f64 re))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
1
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) 1)
(fma.f64 im (*.f64 1/2 im) 1)
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1))
(*.f64 1/24 (pow.f64 im 4))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))
(fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))
(fma.f64 1/24 (pow.f64 im 4) (*.f64 1/2 (*.f64 im im)))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1))
(*.f64 1/24 (pow.f64 im 4))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))
(fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4)))
(fma.f64 1/24 (pow.f64 im 4) (*.f64 1/2 (*.f64 im im)))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 (*.f64 1/24 (pow.f64 im 4)) (fma.f64 1/2 (*.f64 im im) 1))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) 1))

localize6.0ms (0.1%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize13.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 1/2 (*.f64 im im))
0.0b
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
Compiler

Compiled 33 to 17 computations (48.5% saved)

series4.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
re
@0
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
1.0ms
re
@inf
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
1.0ms
im
@inf
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
1.0ms
re
@-inf
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
0.0ms
im
@0
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))

rewrite66.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
540×prod-diff_binary64
468×log-prod_binary64
359×fma-def_binary64
357×exp-prod_binary64
311×pow-prod-down_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01015
120813
2263213
Stop Event
node limit
Counts
1 → 68
Calls
Call 1
Inputs
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (cos.f64 re) (*.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/2 (*.f64 im im) 1))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/2 (*.f64 im im) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/2 (*.f64 im im) 1)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/2 (*.f64 im im) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (cos.f64 re) 3) (*.f64 (pow.f64 (cos.f64 re) 3) (*.f64 1/8 (pow.f64 im 6)))) (+.f64 (pow.f64 (cos.f64 re) 2) (-.f64 (pow.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 2) (*.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (cos.f64 re) 2) (pow.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 2)) (-.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 1/8 (pow.f64 im 6) 1) (cos.f64 re)) (+.f64 1 (fma.f64 1/4 (pow.f64 im 4) (*.f64 -1/2 (*.f64 im im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 1/4 (pow.f64 im 4))) (cos.f64 re)) (+.f64 1 (*.f64 -1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (fma.f64 1/8 (pow.f64 im 6) 1)) (+.f64 1 (fma.f64 1/4 (pow.f64 im 4) (*.f64 -1/2 (*.f64 im im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (-.f64 1 (*.f64 1/4 (pow.f64 im 4)))) (+.f64 1 (*.f64 -1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 2)) (cbrt.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))) (sqrt.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/2 (*.f64 im im) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (cos.f64 re))) (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 im)) im) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 im)) im) (cos.f64 re)) (+.f64 1 (expm1.f64 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) 1 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) 1 (*.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (cos.f64 re) (*.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) (*.f64 1/2 (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 (*.f64 im im)) (cos.f64 re) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 im 4))) (*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 im im))) (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (cos.f64 re)) (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (cos.f64 re)) (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (*.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (cbrt.f64 (cos.f64 re)) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (cbrt.f64 (cos.f64 re)) (*.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (*.f64 (cbrt.f64 (cos.f64 re)) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (*.f64 (cbrt.f64 (cos.f64 re)) 1) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (*.f64 (cbrt.f64 (cos.f64 re)) 1) (*.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (sqrt.f64 1/2)) (*.f64 (*.f64 im (sqrt.f64 1/2)) (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (sqrt.f64 (cos.f64 re)) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (sqrt.f64 (cos.f64 re)) (*.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) 1) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) 1) (*.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 im) (*.f64 im (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))) 2) (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 im (sqrt.f64 1/2)) (sqrt.f64 (cos.f64 re))) (*.f64 (*.f64 im (sqrt.f64 1/2)) (sqrt.f64 (cos.f64 re))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) 1/2) (*.f64 im im) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2 (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (cbrt.f64 (*.f64 1/4 (pow.f64 im 4)))) (cbrt.f64 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 im (sqrt.f64 1/2))) (*.f64 im (sqrt.f64 1/2)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 1/2 im)) im (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (*.f64 im (sqrt.f64 1/2)) (cbrt.f64 (cos.f64 re))) 2) (cbrt.f64 (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 1/2 (*.f64 im im)) (sqrt.f64 (cos.f64 re))) (sqrt.f64 (cos.f64 re)) (cos.f64 re))))))

simplify134.0ms (1.1%)

Algorithm
egg-herbie
Rules
956×fma-def_binary64
622×associate-+l+_binary64
588×distribute-rgt-in_binary64
578×distribute-lft-in_binary64
554×associate-+r+_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
036436
199388
2297360
31201342
44314335
55491335
66669335
76946335
87134335
97356335
107667335
Stop Event
node limit
Counts
92 → 82
Calls
Call 1
Inputs
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/2 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 2)))))
(+.f64 1 (+.f64 (*.f64 1/24 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 4))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/2 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 2))))))
(+.f64 1 (+.f64 (*.f64 1/24 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 4))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 2))) (*.f64 -1/720 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 6)))))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
Outputs
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) 1)
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/2 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 2)))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 -1/2 (*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (*.f64 re re)))))
(+.f64 1 (fma.f64 -1/2 (*.f64 (fma.f64 1/2 (*.f64 im im) 1) (*.f64 re re)) (*.f64 1/2 (*.f64 im im))))
(*.f64 (+.f64 (*.f64 -1/2 (*.f64 re re)) 1) (fma.f64 1/2 (*.f64 im im) 1))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (fma.f64 -1/2 (*.f64 re re) 1))
(+.f64 1 (+.f64 (*.f64 1/24 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 4))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/2 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 2))))))
(+.f64 1 (fma.f64 1/24 (*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (pow.f64 re 4)) (fma.f64 1/2 (*.f64 im im) (*.f64 -1/2 (*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (*.f64 re re))))))
(+.f64 1 (fma.f64 1/24 (*.f64 (fma.f64 1/2 (*.f64 im im) 1) (pow.f64 re 4)) (fma.f64 -1/2 (*.f64 (fma.f64 1/2 (*.f64 im im) 1) (*.f64 re re)) (*.f64 1/2 (*.f64 im im)))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 (fma.f64 1/2 (*.f64 im im) 1) (+.f64 (*.f64 -1/2 (*.f64 re re)) (*.f64 1/24 (pow.f64 re 4))))))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (+.f64 (fma.f64 -1/2 (*.f64 re re) 1) (*.f64 1/24 (pow.f64 re 4))))
(+.f64 1 (+.f64 (*.f64 1/24 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 4))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 2))) (*.f64 -1/720 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 6)))))))
(+.f64 1 (fma.f64 1/24 (*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (pow.f64 re 4)) (fma.f64 1/2 (*.f64 im im) (fma.f64 -1/2 (*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (*.f64 re re)) (*.f64 -1/720 (*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (pow.f64 re 6)))))))
(+.f64 1 (fma.f64 1/24 (*.f64 (fma.f64 1/2 (*.f64 im im) 1) (pow.f64 re 4)) (fma.f64 1/2 (*.f64 im im) (fma.f64 -1/2 (*.f64 (fma.f64 1/2 (*.f64 im im) 1) (*.f64 re re)) (*.f64 (fma.f64 1/2 (*.f64 im im) 1) (*.f64 (pow.f64 re 6) -1/720))))))
(+.f64 (*.f64 (+.f64 (*.f64 -1/2 (*.f64 re re)) 1) (fma.f64 1/2 (*.f64 im im) 1)) (*.f64 (fma.f64 1/2 (*.f64 im im) 1) (+.f64 (*.f64 -1/720 (pow.f64 re 6)) (*.f64 1/24 (pow.f64 re 4)))))
(fma.f64 (pow.f64 re 4) (fma.f64 (*.f64 im im) 1/48 1/24) (*.f64 (fma.f64 1/2 (*.f64 im im) 1) (+.f64 (fma.f64 -1/2 (*.f64 re re) 1) (*.f64 -1/720 (pow.f64 re 6)))))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (+.f64 (fma.f64 -1/2 (*.f64 re re) 1) (fma.f64 -1/720 (pow.f64 re 6) (*.f64 1/24 (pow.f64 re 4)))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (+.f64 1 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))

localize9.0ms (0.1%)

Compiler

Compiled 25 to 9 computations (64% saved)

localize19.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
0.0b
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
0.1b
(*.f64 (cos.f64 re) (pow.f64 im 2))
Compiler

Compiled 36 to 21 computations (41.7% saved)

series8.0ms (0.1%)

Counts
3 → 15
Calls

18 calls:

TimeVariablePointExpression
1.0ms
re
@0
(*.f64 (cos.f64 re) (pow.f64 im 2))
1.0ms
im
@inf
(*.f64 (cos.f64 re) (pow.f64 im 2))
1.0ms
re
@0
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
1.0ms
re
@inf
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
1.0ms
re
@-inf
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))

rewrite73.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
485×log-prod_binary64
365×exp-prod_binary64
351×prod-exp_binary64
309×pow-prod-down_binary64
288×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01036
121636
2266736
Stop Event
node limit
Counts
3 → 125
Calls
Call 1
Inputs
(*.f64 (cos.f64 re) (pow.f64 im 2))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cos.f64 re) (*.f64 im im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re)))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 re) (*.f64 im im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 im im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 (cos.f64 re) (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 im im)))) 2)) (cbrt.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 im im)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 im im))))) (sqrt.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 im im)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (*.f64 im im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 re) (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 re) (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 im im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 im im)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 im (sqrt.f64 (cos.f64 re)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 im im))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (cos.f64 re)) 1) (*.f64 2 (log.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (cos.f64 re)) (*.f64 (*.f64 2 (log.f64 im)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (cos.f64 re)) 1) (*.f64 (*.f64 2 (log.f64 im)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 2 (log.f64 im)) 1) (log.f64 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 2 (log.f64 im)) (*.f64 (log.f64 (cos.f64 re)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 2 (log.f64 im)) 1) (*.f64 (log.f64 (cos.f64 re)) 1)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)) (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (neg.f64 (cos.f64 re)))) (/.f64 (pow.f64 (cos.f64 re) 2) (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (neg.f64 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))) (pow.f64 (cbrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))) 2) (cbrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))) (sqrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/8 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6) (pow.f64 (cos.f64 re) 3)) (/.f64 1 (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)) (pow.f64 (cos.f64 re) 2)) (/.f64 1 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (neg.f64 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4))) (fma.f64 1/8 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6) (pow.f64 (cos.f64 re) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (neg.f64 (cos.f64 re))) (-.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)) (pow.f64 (cos.f64 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 1/8 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 1/8 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (cos.f64 re) 2) (-.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)) (*.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)) (pow.f64 (cos.f64 re) 2)) (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (neg.f64 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 1/8 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6) (pow.f64 (cos.f64 re) 3))) (neg.f64 (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)) (pow.f64 (cos.f64 re) 2))) (neg.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (neg.f64 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (cos.f64 re) 2) (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4))) (-.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4))) (fma.f64 1/8 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6) (pow.f64 (cos.f64 re) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (neg.f64 (cos.f64 re))) (-.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)) (pow.f64 (cos.f64 re) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)))) 2)) (cbrt.f64 (log.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))))) (sqrt.f64 (log.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (cos.f64 re))) (sqrt.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (cos.f64 re)) (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (cos.f64 re))) (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))) (exp.f64 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re)))) (+.f64 1 (expm1.f64 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))) (+.f64 1 (expm1.f64 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) 1 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2 (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 (cos.f64 re) (*.f64 im im)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)) 1 (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4))) (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (cos.f64 re)) (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (cbrt.f64 (cos.f64 re)) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)) (*.f64 (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 im im))) 1/2) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (sqrt.f64 (cos.f64 re)) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) (*.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 1/2) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) 1/2) (*.f64 im im) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 (*.f64 im im)) (cos.f64 re) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 (cbrt.f64 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4))) (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 im im))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 (*.f64 im (sqrt.f64 (cos.f64 re)))) (*.f64 im (sqrt.f64 (cos.f64 re))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (cos.f64 re) 1/2) im) im (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (cos.f64 re) 1/2) 1) (*.f64 im im) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (cos.f64 re) 1/2) (*.f64 (cbrt.f64 im) im)) (pow.f64 (cbrt.f64 im) 2) (cos.f64 re))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (sqrt.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re))))) 2)) (log.f64 (cbrt.f64 (sqrt.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (sqrt.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re)))))) (log.f64 (sqrt.f64 (sqrt.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/8 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))) 2)) (cbrt.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))))) (sqrt.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (sqrt.f64 (pow.f64 (exp.f64 im) (*.f64 im (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 1/8 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 1/8 (pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 6))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))) 3) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 2 (log.f64 im)) 1) (log.f64 (*.f64 (cos.f64 re) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (*.f64 (cos.f64 re) 1/2)) (*.f64 (*.f64 2 (log.f64 im)) 1)))))))

simplify86.0ms (0.7%)

Algorithm
egg-herbie
Rules
838×unswap-sqr_binary64
637×associate-+r+_binary64
510×distribute-rgt-out_binary64
443×fma-def_binary64
435×*-commutative_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
059361
1164329
2537293
32281290
44946290
56730290
67494290
Stop Event
node limit
Counts
140 → 152
Calls
Call 1
Inputs
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2))) (*.f64 -1/720 (*.f64 (pow.f64 re 6) (pow.f64 im 2))))))
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2))))
(+.f64 1 (+.f64 (*.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 1/48 (pow.f64 im 2)))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2)))))
(+.f64 1 (+.f64 (*.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 1/48 (pow.f64 im 2)))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2)) (*.f64 (-.f64 (*.f64 -1/1440 (pow.f64 im 2)) 1/720) (pow.f64 re 6))))))
(cos.f64 re)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (pow.f64 im 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))))
Outputs
(pow.f64 im 2)
(*.f64 im im)
(+.f64 (pow.f64 im 2) (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(+.f64 (*.f64 im im) (*.f64 -1/2 (*.f64 (*.f64 im im) (*.f64 re re))))
(*.f64 (+.f64 (*.f64 -1/2 (*.f64 re re)) 1) (*.f64 im im))
(*.f64 (*.f64 im im) (fma.f64 -1/2 (*.f64 re re) 1))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(fma.f64 1/24 (*.f64 (*.f64 im im) (pow.f64 re 4)) (+.f64 (*.f64 im im) (*.f64 -1/2 (*.f64 (*.f64 im im) (*.f64 re re)))))
(fma.f64 1/24 (*.f64 im (*.f64 im (pow.f64 re 4))) (*.f64 (+.f64 (*.f64 -1/2 (*.f64 re re)) 1) (*.f64 im im)))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 -1/2 (*.f64 re re) 1) (*.f64 1/24 (pow.f64 re 4))))
(*.f64 (*.f64 im im) (+.f64 (*.f64 1/24 (pow.f64 re 4)) (fma.f64 -1/2 (*.f64 re re) 1)))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2))) (*.f64 -1/720 (*.f64 (pow.f64 re 6) (pow.f64 im 2))))))
(fma.f64 1/24 (*.f64 (*.f64 im im) (pow.f64 re 4)) (+.f64 (*.f64 im im) (fma.f64 -1/2 (*.f64 (*.f64 im im) (*.f64 re re)) (*.f64 -1/720 (*.f64 (*.f64 im im) (pow.f64 re 6))))))
(fma.f64 1/24 (*.f64 im (*.f64 im (pow.f64 re 4))) (fma.f64 im im (*.f64 (*.f64 im im) (+.f64 (*.f64 -1/2 (*.f64 re re)) (*.f64 -1/720 (pow.f64 re 6))))))
(fma.f64 im im (*.f64 (*.f64 im im) (+.f64 (fma.f64 -1/720 (pow.f64 re 6) (*.f64 -1/2 (*.f64 re re))) (*.f64 1/24 (pow.f64 re 4)))))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 -1/2 (*.f64 re re) (*.f64 -1/720 (pow.f64 re 6))) (fma.f64 1/24 (pow.f64 re 4) 1)))
(*.f64 im (*.f64 im (+.f64 (fma.f64 -1/2 (*.f64 re re) (*.f64 -1/720 (pow.f64 re 6))) (fma.f64 1/24 (pow.f64 re 4) 1))))
(*.f64 im (*.f64 im (+.f64 (fma.f64 -1/720 (pow.f64 re 6) (*.f64 re (*.f64 -1/2 re))) (fma.f64 1/24 (pow.f64 re 4) 1))))
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (*.f64 (*.f64 im im) 1/2))
(fma.f64 (*.f64 im im) 1/2 1)
(fma.f64 im (*.f64 im 1/2) 1)
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 (*.f64 re re) (fma.f64 -1/4 (*.f64 im im) -1/2))))
(+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 (*.f64 im im) -1/4 -1/2) (*.f64 im (*.f64 im 1/2))))
(fma.f64 im (*.f64 im 1/2) (fma.f64 re (*.f64 re (fma.f64 im (*.f64 im -1/4) -1/2)) 1))
(fma.f64 im (*.f64 im 1/2) (fma.f64 (*.f64 re re) (fma.f64 im (*.f64 im -1/4) -1/2) 1))
(+.f64 1 (+.f64 (*.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 1/48 (pow.f64 im 2)))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2)))))
(+.f64 1 (fma.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 (*.f64 im im) 1/48)) (fma.f64 1/2 (*.f64 im im) (*.f64 (*.f64 re re) (fma.f64 -1/4 (*.f64 im im) -1/2)))))
(+.f64 1 (fma.f64 (pow.f64 re 4) (fma.f64 (*.f64 im im) 1/48 1/24) (fma.f64 (*.f64 re re) (fma.f64 (*.f64 im im) -1/4 -1/2) (*.f64 im (*.f64 im 1/2)))))
(fma.f64 (pow.f64 re 4) (fma.f64 im (*.f64 im 1/48) 1/24) (fma.f64 im (*.f64 im 1/2) (fma.f64 re (*.f64 re (fma.f64 im (*.f64 im -1/4) -1/2)) 1)))
(fma.f64 (pow.f64 re 4) (fma.f64 im (*.f64 im 1/48) 1/24) (fma.f64 im (*.f64 im 1/2) (fma.f64 (*.f64 re re) (fma.f64 im (*.f64 im -1/4) -1/2) 1)))
(+.f64 1 (+.f64 (*.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 1/48 (pow.f64 im 2)))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2)) (*.f64 (-.f64 (*.f64 -1/1440 (pow.f64 im 2)) 1/720) (pow.f64 re 6))))))
(+.f64 1 (fma.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 (*.f64 im im) 1/48)) (fma.f64 1/2 (*.f64 im im) (fma.f64 (fma.f64 -1/4 (*.f64 im im) -1/2) (*.f64 re re) (*.f64 (pow.f64 re 6) (fma.f64 -1/1440 (*.f64 im im) -1/720))))))
(+.f64 1 (fma.f64 (pow.f64 re 4) (fma.f64 (*.f64 im im) 1/48 1/24) (fma.f64 (*.f64 im im) 1/2 (fma.f64 (*.f64 re re) (fma.f64 (*.f64 im im) -1/4 -1/2) (*.f64 (pow.f64 re 6) (fma.f64 (*.f64 im im) -1/1440 -1/720))))))
(+.f64 (fma.f64 im (*.f64 im 1/2) 1) (fma.f64 (pow.f64 re 4) (fma.f64 im (*.f64 im 1/48) 1/24) (fma.f64 (pow.f64 re 6) (fma.f64 im (*.f64 im -1/1440) -1/720) (*.f64 re (*.f64 re (fma.f64 im (*.f64 im -1/4) -1/2))))))
(+.f64 1 (fma.f64 (pow.f64 re 4) (fma.f64 im (*.f64 im 1/48) 1/24) (fma.f64 im (*.f64 im 1/2) (fma.f64 re (*.f64 re (fma.f64 im (*.f64 im -1/4) -1/2)) (*.f64 (pow.f64 re 6) (fma.f64 im (*.f64 im -1/1440) -1/720))))))
(+.f64 (fma.f64 (*.f64 re re) (fma.f64 im (*.f64 im -1/4) -1/2) (fma.f64 (pow.f64 re 6) (fma.f64 im (*.f64 im -1/1440) -1/720) (*.f64 im (*.f64 im 1/2)))) (fma.f64 (pow.f64 re 4) (fma.f64 im (*.f64 im 1/48) 1/24) 1))
(cos.f64 re)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
(*.f64 im (*.f64 im (*.f64 1/2 (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
(*.f64 im (*.f64 im (*.f64 1/2 (cos.f64 re))))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 (*.f64 im im) 1/2)
(*.f64 im (*.f64 im 1/2))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(fma.f64 1/2 (*.f64 im im) (*.f64 (*.f64 (*.f64 im im) (*.f64 re re)) -1/4))
(*.f64 (*.f64 im im) (+.f64 1/2 (*.f64 (*.f64 re re) -1/4)))
(*.f64 im (*.f64 im (fma.f64 (*.f64 re re) -1/4 1/2)))
(*.f64 (*.f64 im im) (fma.f64 (*.f64 re re) -1/4 1/2))
(*.f64 (*.f64 im im) (fma.f64 (*.f64 re -1/4) re 1/2))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/48 (*.f64 (*.f64 im im) (pow.f64 re 4)) (*.f64 (*.f64 (*.f64 im im) (*.f64 re re)) -1/4)))
(fma.f64 (*.f64 im im) 1/2 (*.f64 (*.f64 im im) (+.f64 (*.f64 (*.f64 re re) -1/4) (*.f64 (pow.f64 re 4) 1/48))))
(*.f64 (*.f64 im im) (+.f64 (*.f64 (pow.f64 re 4) 1/48) (fma.f64 (*.f64 re re) -1/4 1/2)))
(*.f64 (*.f64 im im) (+.f64 (*.f64 (pow.f64 re 4) 1/48) (fma.f64 (*.f64 re -1/4) re 1/2)))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (pow.f64 im 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))))
(fma.f64 -1/1440 (*.f64 (*.f64 im im) (pow.f64 re 6)) (fma.f64 1/2 (*.f64 im im) (fma.f64 1/48 (*.f64 (*.f64 im im) (pow.f64 re 4)) (*.f64 (*.f64 (*.f64 im im) (*.f64 re re)) -1/4))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (*.f64 (*.f64 re re) -1/4) (*.f64 (pow.f64 re 4) 1/48))) (*.f64 (*.f64 im im) (+.f64 (*.f64 (pow.f64 re 6) -1/1440) 1/2)))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 (pow.f64 re 4) 1/48 (*.f64 re (*.f64 re -1/4))) (fma.f64 (pow.f64 re 6) -1/1440 1/2)))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 (*.f64 re re) -1/4 (*.f64 (pow.f64 re 4) 1/48)) (fma.f64 (pow.f64 re 6) -1/1440 1/2)))
(*.f64 im (*.f64 im (+.f64 (fma.f64 (*.f64 re re) -1/4 (*.f64 (pow.f64 re 4) 1/48)) (fma.f64 (pow.f64 re 6) -1/1440 1/2))))

eval183.0ms (1.5%)

Compiler

Compiled 9103 to 5591 computations (38.6% saved)

prune69.0ms (0.6%)

Pruning

11 alts after pruning (6 fresh and 5 done)

PrunedKeptTotal
New4646470
Fresh000
Picked101
Done055
Total46511476
Error
0b
Counts
476 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
30.3b
(fma.f64 im (*.f64 im 1/2) 1)
30.1b
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
61.6b
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
0.7b
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
61.3b
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
0.7b
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
1.1b
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
1.2b
(cos.f64 re)
0.9b
(/.f64 (+.f64 (pow.f64 (cos.f64 re) 3) (*.f64 (pow.f64 (cos.f64 re) 3) (*.f64 1/8 (pow.f64 im 6)))) (+.f64 (pow.f64 (cos.f64 re) 2) (-.f64 (pow.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 2) (*.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))))))
0.7b
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
Compiler

Compiled 249 to 172 computations (30.9% saved)

localize13.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 1/2 (*.f64 im im))
0.0b
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
0.1b
(*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
Compiler

Compiled 34 to 14 computations (58.8% saved)

series5.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
2.0ms
re
@-inf
(*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
0.0ms
re
@0
(*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
0.0ms
re
@0
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
0.0ms
re
@inf
(*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
0.0ms
im
@-inf
(*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))

rewrite68.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
486×log-prod_binary64
387×prod-exp_binary64
361×exp-prod_binary64
326×fma-def_binary64
312×pow-prod-down_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0927
119427
2254825
Stop Event
node limit
Counts
2 → 112
Calls
Call 1
Inputs
(*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 im)) im) (cos.f64 re))) 2)) (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 im)) im) (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 im)) im) (cos.f64 re)))) (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 im)) im) (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 6) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))) 2)) (cbrt.f64 (log.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)))) (sqrt.f64 (log.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 im)) im) (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 6))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 6)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) 3) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (cos.f64 re)) 1) (fma.f64 2 (log.f64 im) (log1p.f64 -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (cos.f64 re)) (*.f64 (fma.f64 2 (log.f64 im) (log1p.f64 -1/2)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (cos.f64 re)) 1) (*.f64 (fma.f64 2 (log.f64 im) (log1p.f64 -1/2)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 im) 2) (log.f64 (*.f64 (cos.f64 re) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 2 (log.f64 im)) 1) (log.f64 (*.f64 (cos.f64 re) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (fma.f64 2 (log.f64 im) (log1p.f64 -1/2)) 1) (log.f64 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (fma.f64 2 (log.f64 im) (log1p.f64 -1/2)) (*.f64 (log.f64 (cos.f64 re)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (fma.f64 2 (log.f64 im) (log1p.f64 -1/2)) 1) (*.f64 (log.f64 (cos.f64 re)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (*.f64 (cos.f64 re) 1/2)) (*.f64 (log.f64 im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (*.f64 (cos.f64 re) 1/2)) (*.f64 (*.f64 2 (log.f64 im)) 1)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4) (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) -1))) (/.f64 (pow.f64 (cos.f64 re) 2) (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) (pow.f64 (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 2) (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) (sqrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 (*.f64 (cos.f64 re) 1/2) 3) (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (/.f64 1 (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4) (pow.f64 (cos.f64 re) 2)) (/.f64 1 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4)) (fma.f64 (pow.f64 (*.f64 (cos.f64 re) 1/2) 3) (pow.f64 im 6) (pow.f64 (cos.f64 re) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) -1)) (-.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4) (pow.f64 (cos.f64 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 (cos.f64 re) 1/2) 3) (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 (cos.f64 re) 1/2) 3) (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (cos.f64 re) 2) (-.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4) (pow.f64 (*.f64 (*.f64 im (sqrt.f64 1/2)) (cos.f64 re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4) (pow.f64 (cos.f64 re) 2)) (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 (*.f64 (cos.f64 re) 1/2) 3) (pow.f64 im 6) (pow.f64 (cos.f64 re) 3))) (neg.f64 (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4) (pow.f64 (cos.f64 re) 2))) (neg.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (cos.f64 re) 2) (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4)) (-.f64 (cos.f64 re) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4)) (fma.f64 (pow.f64 (*.f64 (cos.f64 re) 1/2) 3) (pow.f64 im 6) (pow.f64 (cos.f64 re) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) -1)) (-.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4) (pow.f64 (cos.f64 re) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 2)) (cbrt.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))) (sqrt.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cos.f64 re)) (fma.f64 1/2 (*.f64 im im) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (cos.f64 re))) (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 im)) im) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (cos.f64 re)) (+.f64 1 (expm1.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (cos.f64 re))) (+.f64 1 (expm1.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))) (exp.f64 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 im)) im) (cos.f64 re)) (+.f64 1 (expm1.f64 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))) (+.f64 1 (expm1.f64 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) 1 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 (*.f64 im im)) (cos.f64 re) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2) 1 (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (cos.f64 re) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) 4)) (cbrt.f64 (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (cos.f64 re)) (cbrt.f64 (pow.f64 (cos.f64 re) 2)) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (cos.f64 re) 2)) (cbrt.f64 (cos.f64 re)) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (cos.f64 re) 2)) (*.f64 (cbrt.f64 (cos.f64 re)) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4)) (*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 im im))) (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) (*.f64 (sqrt.f64 (*.f64 (cos.f64 re) 1/2)) im) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (sqrt.f64 (cos.f64 re)) (*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (sqrt.f64 1/2)) (*.f64 (*.f64 im (sqrt.f64 1/2)) (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 im) (*.f64 im (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) 1/2) (*.f64 im im) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2 (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4))) (cbrt.f64 (*.f64 1/2 (*.f64 im im))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 im (sqrt.f64 1/2))) (*.f64 im (sqrt.f64 1/2)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cos.f64 re) (*.f64 1/2 im)) im (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (*.f64 im (sqrt.f64 1/2)) (cbrt.f64 (cos.f64 re))) 2) (cbrt.f64 (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 1/2 (*.f64 im im)) (sqrt.f64 (cos.f64 re))) (sqrt.f64 (cos.f64 re)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (cos.f64 re) 1/2) im) im (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (cos.f64 re) 1/2) 1) (*.f64 im im) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (cos.f64 re) 1/2) (*.f64 (cbrt.f64 im) im)) (pow.f64 (cbrt.f64 im) 2) (cos.f64 re))))))

simplify97.0ms (0.8%)

Algorithm
egg-herbie
Rules
840×unswap-sqr_binary64
622×associate-+r+_binary64
583×fma-neg_binary64
498×*-commutative_binary64
326×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
050756
1139736
2439680
31829680
44006680
55923680
66509680
77986680
Stop Event
node limit
Counts
160 → 132
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (pow.f64 im 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2))))
(+.f64 1 (+.f64 (*.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 1/48 (pow.f64 im 2)))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2)))))
(+.f64 1 (+.f64 (*.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 1/48 (pow.f64 im 2)))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2)) (*.f64 (-.f64 (*.f64 -1/1440 (pow.f64 im 2)) 1/720) (pow.f64 re 6))))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
Outputs
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(fma.f64 1/2 (*.f64 im im) (*.f64 -1/4 (*.f64 (*.f64 im im) (*.f64 re re))))
(*.f64 (*.f64 im im) (+.f64 1/2 (*.f64 -1/4 (*.f64 re re))))
(*.f64 (*.f64 im im) (fma.f64 -1/4 (*.f64 re re) 1/2))
(*.f64 im (*.f64 im (fma.f64 -1/4 (*.f64 re re) 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/48 (*.f64 (*.f64 im im) (pow.f64 re 4)) (*.f64 -1/4 (*.f64 (*.f64 im im) (*.f64 re re)))))
(fma.f64 1/2 (*.f64 im im) (*.f64 (*.f64 im im) (+.f64 (*.f64 1/48 (pow.f64 re 4)) (*.f64 -1/4 (*.f64 re re)))))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 -1/4 (*.f64 re re) 1/2) (*.f64 1/48 (pow.f64 re 4))))
(*.f64 (*.f64 im im) (+.f64 1/2 (fma.f64 1/48 (pow.f64 re 4) (*.f64 -1/4 (*.f64 re re)))))
(*.f64 (*.f64 im im) (+.f64 (*.f64 1/48 (pow.f64 re 4)) (fma.f64 -1/4 (*.f64 re re) 1/2)))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (pow.f64 im 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))))
(fma.f64 -1/1440 (*.f64 (*.f64 im im) (pow.f64 re 6)) (fma.f64 1/2 (*.f64 im im) (fma.f64 1/48 (*.f64 (*.f64 im im) (pow.f64 re 4)) (*.f64 -1/4 (*.f64 (*.f64 im im) (*.f64 re re))))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (*.f64 1/48 (pow.f64 re 4)) (*.f64 -1/4 (*.f64 re re)))) (*.f64 (*.f64 im im) (+.f64 (*.f64 -1/1440 (pow.f64 re 6)) 1/2)))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 -1/4 (*.f64 re re) (*.f64 1/48 (pow.f64 re 4))) (fma.f64 -1/1440 (pow.f64 re 6) 1/2)))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 1/48 (pow.f64 re 4) (*.f64 -1/4 (*.f64 re re))) (fma.f64 -1/1440 (pow.f64 re 6) 1/2)))
(*.f64 im (*.f64 im (+.f64 (fma.f64 -1/4 (*.f64 re re) (*.f64 1/48 (pow.f64 re 4))) (fma.f64 -1/1440 (pow.f64 re 6) 1/2))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 im im)) 1)
(fma.f64 1/2 (*.f64 im im) 1)
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 (*.f64 re re) (fma.f64 -1/4 (*.f64 im im) -1/2))))
(+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 (*.f64 im im) -1/4 -1/2) (*.f64 1/2 (*.f64 im im))))
(fma.f64 re (*.f64 re (fma.f64 (*.f64 im im) -1/4 -1/2)) (fma.f64 1/2 (*.f64 im im) 1))
(fma.f64 1/2 (*.f64 im im) (fma.f64 (*.f64 re re) (fma.f64 im (*.f64 im -1/4) -1/2) 1))
(fma.f64 1/2 (*.f64 im im) (fma.f64 (*.f64 re re) (fma.f64 (*.f64 im im) -1/4 -1/2) 1))
(+.f64 1 (+.f64 (*.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 1/48 (pow.f64 im 2)))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2)))))
(+.f64 1 (fma.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 (*.f64 im im) 1/48)) (fma.f64 1/2 (*.f64 im im) (*.f64 (*.f64 re re) (fma.f64 -1/4 (*.f64 im im) -1/2)))))
(+.f64 1 (fma.f64 (pow.f64 re 4) (fma.f64 (*.f64 im im) 1/48 1/24) (fma.f64 (*.f64 re re) (fma.f64 (*.f64 im im) -1/4 -1/2) (*.f64 1/2 (*.f64 im im)))))
(fma.f64 (pow.f64 re 4) (fma.f64 (*.f64 im im) 1/48 1/24) (fma.f64 re (*.f64 re (fma.f64 (*.f64 im im) -1/4 -1/2)) (fma.f64 1/2 (*.f64 im im) 1)))
(fma.f64 (pow.f64 re 4) (fma.f64 im (*.f64 im 1/48) 1/24) (fma.f64 1/2 (*.f64 im im) (fma.f64 (*.f64 re re) (fma.f64 im (*.f64 im -1/4) -1/2) 1)))
(fma.f64 (pow.f64 re 4) (fma.f64 im (*.f64 im 1/48) 1/24) (fma.f64 1/2 (*.f64 im im) (fma.f64 (*.f64 re re) (fma.f64 (*.f64 im im) -1/4 -1/2) 1)))
(+.f64 1 (+.f64 (*.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 1/48 (pow.f64 im 2)))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 (-.f64 (*.f64 -1/4 (pow.f64 im 2)) 1/2) (pow.f64 re 2)) (*.f64 (-.f64 (*.f64 -1/1440 (pow.f64 im 2)) 1/720) (pow.f64 re 6))))))
(+.f64 1 (fma.f64 (pow.f64 re 4) (+.f64 1/24 (*.f64 (*.f64 im im) 1/48)) (fma.f64 1/2 (*.f64 im im) (fma.f64 (fma.f64 -1/4 (*.f64 im im) -1/2) (*.f64 re re) (*.f64 (pow.f64 re 6) (fma.f64 -1/1440 (*.f64 im im) -1/720))))))
(+.f64 1 (fma.f64 (pow.f64 re 4) (fma.f64 (*.f64 im im) 1/48 1/24) (fma.f64 1/2 (*.f64 im im) (fma.f64 (*.f64 re re) (fma.f64 (*.f64 im im) -1/4 -1/2) (*.f64 (pow.f64 re 6) (fma.f64 (*.f64 im im) -1/1440 -1/720))))))
(+.f64 (fma.f64 re (*.f64 re (fma.f64 (*.f64 im im) -1/4 -1/2)) (fma.f64 1/2 (*.f64 im im) 1)) (fma.f64 (pow.f64 re 6) (fma.f64 im (*.f64 im -1/1440) -1/720) (*.f64 (pow.f64 re 4) (fma.f64 (*.f64 im im) 1/48 1/24))))
(+.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 (*.f64 re re) (fma.f64 im (*.f64 im -1/4) -1/2) 1)) (fma.f64 (pow.f64 re 6) (fma.f64 im (*.f64 im -1/1440) -1/720) (*.f64 (pow.f64 re 4) (fma.f64 im (*.f64 im 1/48) 1/24))))
(+.f64 (fma.f64 re (*.f64 re (fma.f64 (*.f64 im im) -1/4 -1/2)) (fma.f64 (pow.f64 re 6) (fma.f64 im (*.f64 im -1/1440) -1/720) (*.f64 1/2 (*.f64 im im)))) (fma.f64 (pow.f64 re 4) (fma.f64 im (*.f64 im 1/48) 1/24) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 im (*.f64 im (cos.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(fma.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)) (cos.f64 re))
(*.f64 (fma.f64 1/2 (*.f64 im im) 1) (cos.f64 re))
(*.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 1))

localize6.0ms (0.1%)

Compiler

Compiled 14 to 10 computations (28.6% saved)

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
0.1b
(*.f64 (*.f64 im im) (cos.f64 re))
Compiler

Compiled 24 to 8 computations (66.7% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
im
@0
(*.f64 (*.f64 im im) (cos.f64 re))
0.0ms
re
@0
(*.f64 (*.f64 im im) (cos.f64 re))
0.0ms
re
@0
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
0.0ms
im
@0
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
0.0ms
im
@-inf
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))

rewrite61.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
741×pow1_binary64
682×add-log-exp_binary64
682×log1p-expm1-u_binary64
682×expm1-log1p-u_binary64
666×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0821
116221
2190421
Stop Event
node limit
Counts
2 → 24
Calls
Call 1
Inputs
(*.f64 (*.f64 im im) (cos.f64 re))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 im im) (cos.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 im im) (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 im im) (cos.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 im im) (cos.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (cos.f64 re) 2) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cos.f64 re)) (*.f64 im im)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 im im) (cos.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 (cos.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (cos.f64 re) 3) (pow.f64 (*.f64 im im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 im im) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 im im) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 im im) (cos.f64 re))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 im (sqrt.f64 (cos.f64 re))) (sqrt.f64 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 (pow.f64 (cos.f64 re) 2) (pow.f64 im 4)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 (cos.f64 re)) (*.f64 im im)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))))))))

simplify161.0ms (1.4%)

Algorithm
egg-herbie
Rules
840×unswap-sqr_binary64
830×distribute-rgt-in_binary64
744×distribute-lft-out_binary64
425×sqr-pow_binary64
363×*-commutative_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
039626
1103600
2334568
31431565
42748565
54697565
65435565
75726565
85920565
96137565
106432565
116791565
Stop Event
node limit
Counts
72 → 44
Calls
Call 1
Inputs
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2))) (*.f64 -1/720 (*.f64 (pow.f64 re 6) (pow.f64 im 2))))))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (pow.f64 im 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
Outputs
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(pow.f64 im 2)
(*.f64 im im)
(+.f64 (pow.f64 im 2) (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(+.f64 (*.f64 im im) (*.f64 -1/2 (*.f64 (*.f64 im im) (*.f64 re re))))
(*.f64 (+.f64 (*.f64 -1/2 (*.f64 re re)) 1) (*.f64 im im))
(*.f64 (*.f64 im im) (fma.f64 -1/2 (*.f64 re re) 1))
(*.f64 im (*.f64 im (fma.f64 -1/2 (*.f64 re re) 1)))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(fma.f64 1/24 (*.f64 (*.f64 im im) (pow.f64 re 4)) (+.f64 (*.f64 im im) (*.f64 -1/2 (*.f64 (*.f64 im im) (*.f64 re re)))))
(fma.f64 1/24 (*.f64 (*.f64 im im) (pow.f64 re 4)) (*.f64 (+.f64 (*.f64 -1/2 (*.f64 re re)) 1) (*.f64 im im)))
(*.f64 (*.f64 im im) (+.f64 (*.f64 -1/2 (*.f64 re re)) (fma.f64 1/24 (pow.f64 re 4) 1)))
(*.f64 (*.f64 im im) (+.f64 (*.f64 re (*.f64 re -1/2)) (fma.f64 1/24 (pow.f64 re 4) 1)))
(*.f64 im (*.f64 im (+.f64 (*.f64 1/24 (pow.f64 re 4)) (fma.f64 -1/2 (*.f64 re re) 1))))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 re 2) (pow.f64 im 2))) (*.f64 -1/720 (*.f64 (pow.f64 re 6) (pow.f64 im 2))))))
(fma.f64 1/24 (*.f64 (*.f64 im im) (pow.f64 re 4)) (+.f64 (*.f64 im im) (fma.f64 -1/2 (*.f64 (*.f64 im im) (*.f64 re re)) (*.f64 -1/720 (*.f64 (*.f64 im im) (pow.f64 re 6))))))
(fma.f64 1/24 (*.f64 (*.f64 im im) (pow.f64 re 4)) (fma.f64 im im (*.f64 (*.f64 im im) (+.f64 (*.f64 -1/2 (*.f64 re re)) (*.f64 -1/720 (pow.f64 re 6))))))
(fma.f64 im im (*.f64 (*.f64 im im) (+.f64 (*.f64 1/24 (pow.f64 re 4)) (fma.f64 -1/2 (*.f64 re re) (*.f64 -1/720 (pow.f64 re 6))))))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 -1/2 (*.f64 re re) (*.f64 -1/720 (pow.f64 re 6))) (fma.f64 1/24 (pow.f64 re 4) 1)))
(*.f64 im (*.f64 im (+.f64 (fma.f64 1/24 (pow.f64 re 4) 1) (fma.f64 -1/2 (*.f64 re re) (*.f64 -1/720 (pow.f64 re 6))))))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 (cos.f64 re) (pow.f64 im 2))
(*.f64 (cos.f64 re) (*.f64 im im))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 (*.f64 im im) 1/2)
(*.f64 im (*.f64 im 1/2))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(fma.f64 1/2 (*.f64 im im) (*.f64 (*.f64 (*.f64 im im) (*.f64 re re)) -1/4))
(*.f64 (*.f64 im im) (+.f64 1/2 (*.f64 (*.f64 re re) -1/4)))
(*.f64 (*.f64 im im) (fma.f64 (*.f64 re re) -1/4 1/2))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(fma.f64 1/2 (*.f64 im im) (fma.f64 1/48 (*.f64 (*.f64 im im) (pow.f64 re 4)) (*.f64 (*.f64 (*.f64 im im) (*.f64 re re)) -1/4)))
(fma.f64 (*.f64 im im) 1/2 (*.f64 (*.f64 im im) (+.f64 (*.f64 (*.f64 re re) -1/4) (*.f64 (pow.f64 re 4) 1/48))))
(*.f64 (*.f64 im im) (+.f64 1/2 (fma.f64 (pow.f64 re 4) 1/48 (*.f64 (*.f64 re re) -1/4))))
(*.f64 (*.f64 im im) (+.f64 1/2 (fma.f64 (*.f64 re re) -1/4 (*.f64 (pow.f64 re 4) 1/48))))
(*.f64 im (*.f64 im (+.f64 (*.f64 (pow.f64 re 4) 1/48) (fma.f64 (*.f64 re re) -1/4 1/2))))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (pow.f64 im 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))))
(fma.f64 -1/1440 (*.f64 (*.f64 im im) (pow.f64 re 6)) (fma.f64 1/2 (*.f64 im im) (fma.f64 1/48 (*.f64 (*.f64 im im) (pow.f64 re 4)) (*.f64 (*.f64 (*.f64 im im) (*.f64 re re)) -1/4))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (*.f64 (*.f64 re re) -1/4) (*.f64 (pow.f64 re 4) 1/48))) (*.f64 (*.f64 im im) (+.f64 (*.f64 (pow.f64 re 6) -1/1440) 1/2)))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 (pow.f64 re 4) 1/48 (*.f64 (*.f64 re re) -1/4)) (fma.f64 (pow.f64 re 6) -1/1440 1/2)))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 (*.f64 re re) -1/4 (*.f64 (pow.f64 re 4) 1/48)) (fma.f64 (pow.f64 re 6) -1/1440 1/2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 (*.f64 (cos.f64 re) (*.f64 im im)) 1/2)
(*.f64 (cos.f64 re) (*.f64 (*.f64 im im) 1/2))
(*.f64 im (*.f64 (cos.f64 re) (*.f64 im 1/2)))
(*.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))
(*.f64 (*.f64 im im) (*.f64 (cos.f64 re) 1/2))

localize12.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
Compiler

Compiled 23 to 13 computations (43.5% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
im
@0
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
0.0ms
re
@0
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
0.0ms
im
@inf
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
0.0ms
re
@inf
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
0.0ms
re
@-inf
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))

rewrite54.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
885×pow1_binary64
820×add-log-exp_binary64
820×log1p-expm1-u_binary64
820×expm1-log1p-u_binary64
803×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0810
117110
2222710
Stop Event
node limit
Counts
1 → 36
Calls
Call 1
Inputs
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (-.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))) (/.f64 (pow.f64 (cos.f64 re) 2) (-.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 im (*.f64 im 1/2) (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))) (pow.f64 (cbrt.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))) 2) (cbrt.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))) (sqrt.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (pow.f64 (cos.f64 re) 2)) (/.f64 1 (-.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))) (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re)) (-.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (pow.f64 (cos.f64 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (cos.f64 re) 2) (-.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 im (*.f64 (*.f64 im 1/2) (cos.f64 re))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (pow.f64 (cos.f64 re) 2)) (-.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (pow.f64 (cos.f64 re) 2))) (neg.f64 (-.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (cos.f64 re) 2) (pow.f64 (*.f64 im (*.f64 im 1/2)) 2)) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 im (*.f64 im 1/2) (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 im (*.f64 im 1/2) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im 1/2) im (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (cos.f64 re) (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) 1/2 (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 im (*.f64 im 1/2))) 2) (cbrt.f64 (*.f64 im (*.f64 im 1/2))) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (cbrt.f64 (cos.f64 re)) (*.f64 im (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (sqrt.f64 1/2)) (*.f64 im (sqrt.f64 1/2)) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (sqrt.f64 (cos.f64 re)) (*.f64 im (*.f64 im 1/2)))))))

simplify219.0ms (1.9%)

Algorithm
egg-herbie
Rules
1031×sqr-pow_binary64
513×cube-prod_binary64
462×fma-def_binary64
415×*-commutative_binary64
368×pow-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
029303
168267
2166263
3543261
41807261
52948261
63554261
73812261
84041261
94336261
104707261
115169261
125671261
136245261
146584261
156792261
167000261
177212261
187422261
Stop Event
node limit
Counts
60 → 49
Calls
Call 1
Inputs
(cos.f64 re)
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/2 (pow.f64 re 2))))
(+.f64 (*.f64 1/24 (pow.f64 re 4)) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/2 (pow.f64 re 2)))))
(+.f64 (*.f64 1/24 (pow.f64 re 4)) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/2 (pow.f64 re 2)) (*.f64 -1/720 (pow.f64 re 6))))))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
Outputs
(cos.f64 re)
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 im im)) 1)
(fma.f64 1/2 (*.f64 im im) 1)
(+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/2 (pow.f64 re 2))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 -1/2 (*.f64 re re))))
(+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 re (*.f64 re -1/2))))
(fma.f64 re (*.f64 re -1/2) (fma.f64 1/2 (*.f64 im im) 1))
(+.f64 (*.f64 1/24 (pow.f64 re 4)) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/2 (pow.f64 re 2)))))
(fma.f64 1/24 (pow.f64 re 4) (+.f64 1 (fma.f64 1/2 (*.f64 im im) (*.f64 -1/2 (*.f64 re re)))))
(+.f64 (fma.f64 1/2 (*.f64 im im) (*.f64 re (*.f64 re -1/2))) (fma.f64 1/24 (pow.f64 re 4) 1))
(fma.f64 1/24 (pow.f64 re 4) (fma.f64 re (*.f64 re -1/2) (fma.f64 1/2 (*.f64 im im) 1)))
(fma.f64 re (*.f64 re -1/2) (fma.f64 1/24 (pow.f64 re 4) (fma.f64 1/2 (*.f64 im im) 1)))
(fma.f64 re (*.f64 re -1/2) (fma.f64 1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 re 4) 1)))
(+.f64 (*.f64 1/24 (pow.f64 re 4)) (+.f64 1 (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/2 (pow.f64 re 2)) (*.f64 -1/720 (pow.f64 re 6))))))
(fma.f64 1/24 (pow.f64 re 4) (+.f64 1 (fma.f64 1/2 (*.f64 im im) (fma.f64 -1/2 (*.f64 re re) (*.f64 -1/720 (pow.f64 re 6))))))
(+.f64 (fma.f64 1/2 (*.f64 im im) (fma.f64 -1/2 (*.f64 re re) (*.f64 -1/720 (pow.f64 re 6)))) (fma.f64 1/24 (pow.f64 re 4) 1))
(+.f64 (fma.f64 re (*.f64 re -1/2) (fma.f64 -1/720 (pow.f64 re 6) (*.f64 1/2 (*.f64 im im)))) (fma.f64 1/24 (pow.f64 re 4) 1))
(fma.f64 re (*.f64 re -1/2) (fma.f64 1/24 (pow.f64 re 4) (fma.f64 1/2 (*.f64 im im) (fma.f64 -1/720 (pow.f64 re 6) 1))))
(fma.f64 re (*.f64 re -1/2) (fma.f64 1/24 (pow.f64 re 4) (fma.f64 -1/720 (pow.f64 re 6) (fma.f64 1/2 (*.f64 im im) 1))))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))

localize23.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
0.2b
(*.f64 1/24 (cos.f64 re))
Compiler

Compiled 23 to 14 computations (39.1% saved)

series9.0ms (0.1%)

Counts
2 → 28
Calls

9 calls:

TimeVariablePointExpression
1.0ms
re
@inf
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
1.0ms
re
@-inf
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
1.0ms
re
@0
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
1.0ms
im
@0
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
1.0ms
im
@inf
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))

rewrite83.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
803×pow1_binary64
742×add-log-exp_binary64
742×log1p-expm1-u_binary64
742×expm1-log1p-u_binary64
726×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0918
118618
2206318
Stop Event
node limit
Counts
2 → 24
Calls
Call 1
Inputs
(*.f64 1/24 (cos.f64 re))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/24 (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/24 (cos.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 1/24 (cos.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/576 (pow.f64 (cos.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/24 (cos.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/24 (cos.f64 re))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 im im) (sqrt.f64 (*.f64 1/24 (cos.f64 re)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 im 8) (*.f64 1/576 (pow.f64 (cos.f64 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 1/24 (cos.f64 re)) 3) (pow.f64 (pow.f64 im 4) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 im 4) 3) (pow.f64 (*.f64 1/24 (cos.f64 re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))))))))

simplify184.0ms (1.6%)

Algorithm
egg-herbie
Rules
880×fma-def_binary64
840×unswap-sqr_binary64
708×distribute-rgt-in_binary64
577×distribute-lft-in_binary64
408×sqr-pow_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
035398
185380
2258356
31035356
42756356
54435356
64653356
75017356
85551356
96280356
107093356
117443356
127884356
Stop Event
node limit
Counts
52 → 40
Calls
Call 1
Inputs
1/24
(+.f64 1/24 (*.f64 -1/48 (pow.f64 re 2)))
(+.f64 1/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4))))
(+.f64 (*.f64 -1/17280 (pow.f64 re 6)) (+.f64 1/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4)))))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (pow.f64 im 4))
(+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (*.f64 1/24 (pow.f64 im 4)))
(+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4)))))
(+.f64 (*.f64 -1/17280 (*.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4))))))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
Outputs
1/24
(+.f64 1/24 (*.f64 -1/48 (pow.f64 re 2)))
(+.f64 1/24 (*.f64 -1/48 (*.f64 re re)))
(fma.f64 -1/48 (*.f64 re re) 1/24)
(fma.f64 re (*.f64 -1/48 re) 1/24)
(+.f64 1/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4))))
(+.f64 1/24 (fma.f64 -1/48 (*.f64 re re) (*.f64 1/576 (pow.f64 re 4))))
(fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24))
(+.f64 (*.f64 -1/17280 (pow.f64 re 6)) (+.f64 1/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4)))))
(fma.f64 -1/17280 (pow.f64 re 6) (+.f64 1/24 (fma.f64 -1/48 (*.f64 re re) (*.f64 1/576 (pow.f64 re 4)))))
(+.f64 (fma.f64 -1/48 (*.f64 re re) (*.f64 1/576 (pow.f64 re 4))) (fma.f64 -1/17280 (pow.f64 re 6) 1/24))
(fma.f64 -1/17280 (pow.f64 re 6) (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24)))
(fma.f64 -1/48 (*.f64 re re) (fma.f64 -1/17280 (pow.f64 re 6) (fma.f64 1/576 (pow.f64 re 4) 1/24)))
(fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) (fma.f64 -1/17280 (pow.f64 re 6) 1/24)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (pow.f64 im 4))
(+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (*.f64 1/24 (pow.f64 im 4)))
(fma.f64 -1/48 (*.f64 (*.f64 re re) (pow.f64 im 4)) (*.f64 1/24 (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (fma.f64 -1/48 (*.f64 re re) 1/24))
(*.f64 (fma.f64 re (*.f64 -1/48 re) 1/24) (pow.f64 im 4))
(*.f64 (fma.f64 -1/48 (*.f64 re re) 1/24) (pow.f64 im 4))
(+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4)))))
(fma.f64 -1/48 (*.f64 (*.f64 re re) (pow.f64 im 4)) (fma.f64 1/24 (pow.f64 im 4) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4)))))
(fma.f64 (*.f64 -1/48 (*.f64 re re)) (pow.f64 im 4) (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 1/576 (pow.f64 re 4)))))
(*.f64 (pow.f64 im 4) (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24)))
(*.f64 (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24)) (pow.f64 im 4))
(+.f64 (*.f64 -1/17280 (*.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4))))))
(fma.f64 -1/17280 (*.f64 (pow.f64 re 6) (pow.f64 im 4)) (fma.f64 -1/48 (*.f64 (*.f64 re re) (pow.f64 im 4)) (fma.f64 1/24 (pow.f64 im 4) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4))))))
(+.f64 (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 1/576 (pow.f64 re 4)))) (*.f64 (pow.f64 im 4) (+.f64 (*.f64 -1/17280 (pow.f64 re 6)) (*.f64 -1/48 (*.f64 re re)))))
(*.f64 (pow.f64 im 4) (fma.f64 -1/17280 (pow.f64 re 6) (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24))))
(*.f64 (pow.f64 im 4) (fma.f64 -1/48 (*.f64 re re) (fma.f64 -1/17280 (pow.f64 re 6) (fma.f64 1/576 (pow.f64 re 4) 1/24))))
(*.f64 (pow.f64 im 4) (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) (fma.f64 -1/17280 (pow.f64 re 6) 1/24))))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))

eval175.0ms (1.5%)

Compiler

Compiled 4387 to 2571 computations (41.4% saved)

prune83.0ms (0.7%)

Pruning

14 alts after pruning (4 fresh and 10 done)

PrunedKeptTotal
New2824286
Fresh101
Picked011
Done099
Total28314297
Error
0b
Counts
297 → 14
Alt Table
Click to see full alt table
StatusErrorProgram
30.3b
(fma.f64 im (*.f64 im 1/2) 1)
30.1b
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
0.7b
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
61.6b
(*.f64 (pow.f64 im 4) (-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1))
61.8b
(*.f64 (pow.f64 im 4) 1/24)
61.6b
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
0.7b
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
61.3b
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
1.1b
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
1.2b
(cos.f64 re)
1.2b
(/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))
61.6b
(*.f64 1/2 (*.f64 im im))
0.7b
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
Compiler

Compiled 170 to 126 computations (25.9% saved)

localize11.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 1/2 (*.f64 im im))
Compiler

Compiled 12 to 6 computations (50% saved)

localize13.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (pow.f64 im 4) 1/24)
Compiler

Compiled 13 to 10 computations (23.1% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
im
@0
(*.f64 (pow.f64 im 4) 1/24)
0.0ms
im
@inf
(*.f64 (pow.f64 im 4) 1/24)
0.0ms
im
@-inf
(*.f64 (pow.f64 im 4) 1/24)

rewrite53.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
498×pow1_binary64
485×add-sqr-sqrt_binary64
465×add-log-exp_binary64
465×log1p-expm1-u_binary64
465×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11267
213177
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (pow.f64 im 4) 1/24)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (pow.f64 im 4) 1/24)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 im 4) 1/24) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (pow.f64 im 4) 1/24) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (pow.f64 im 4) 1/24)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 im im) (sqrt.f64 1/24)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/576 (pow.f64 im 8)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/24) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (pow.f64 im 4) 1/24) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 im 4) 1/24)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 im 4) 1/24)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (pow.f64 im 4) 1/24)))))))

simplify206.0ms (1.7%)

Algorithm
egg-herbie
Rules
1319×sqr-pow_binary64
659×pow-sqr_binary64
576×cube-prod_binary64
430×associate-*l*_binary64
399×fabs-mul_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0684
11184
22184
34384
410284
531084
6114784
7181584
8193984
9210884
10230784
11257884
12293784
13339084
14392184
15454584
16529884
17560484
18582684
19602684
20608084
21610284
22693684
23784984
Stop Event
node limit
Counts
23 → 12
Calls
Call 1
Inputs
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
Outputs
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))
(*.f64 1/24 (pow.f64 im 4))

localize38.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 1 (*.f64 1/24 (cos.f64 re)))
0.1b
(*.f64 (pow.f64 im 4) (-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1))
0.2b
(*.f64 1/24 (cos.f64 re))
3.4b
(-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1)
Compiler

Compiled 42 to 29 computations (31% saved)

series7.0ms (0.1%)

Counts
3 → 40
Calls

12 calls:

TimeVariablePointExpression
1.0ms
re
@0
(-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1)
1.0ms
re
@0
(*.f64 (pow.f64 im 4) (-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1))
1.0ms
re
@0
(+.f64 1 (*.f64 1/24 (cos.f64 re)))
1.0ms
re
@inf
(-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1)
0.0ms
im
@-inf
(*.f64 (pow.f64 im 4) (-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1))

rewrite133.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
486×log-prod_binary64
421×prod-diff_binary64
420×fma-def_binary64
302×pow-prod-down_binary64
288×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01239
126025
2330025
Stop Event
node limit
Counts
3 → 169
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1)
(*.f64 (pow.f64 im 4) (-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1))
(+.f64 1 (*.f64 1/24 (cos.f64 re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (fma.f64 1/24 (cos.f64 re) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (fma.f64 1/24 (cos.f64 re) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/24 (cos.f64 re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 1/24 (cos.f64 re) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/24 (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (fma.f64 1/24 (cos.f64 re) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 1/24 (cos.f64 re) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 1/24 (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/24 (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 re) 1/24)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/24 (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cos.f64 re) 2)) (*.f64 (cbrt.f64 (cos.f64 re)) 1/24))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) (pow.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 2) (cbrt.f64 (*.f64 1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) 1/24))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 1/24 (cos.f64 re))) (sqrt.f64 (*.f64 1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1) (/.f64 1 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (fma.f64 1/24 (cos.f64 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) -1) (/.f64 1 (fma.f64 1/24 (cos.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1) (-.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/24 (cbrt.f64 (pow.f64 (cos.f64 re) 2))) (cbrt.f64 (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/24 (sqrt.f64 (cos.f64 re))) (sqrt.f64 (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (fma.f64 1/24 (cos.f64 re) 2)) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 1/24 (cos.f64 re) 2) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (fma.f64 1/24 (cos.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (-.f64 1 (*.f64 (fma.f64 1/24 (cos.f64 re) 1) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) -1) (fma.f64 1/24 (cos.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1)) (neg.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (fma.f64 1/24 (cos.f64 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) -1)) (neg.f64 (fma.f64 1/24 (cos.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (fma.f64 1/24 (cos.f64 re) -1) 3)) (+.f64 1 (-.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) -1) 2) (fma.f64 1/24 (cos.f64 re) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (fma.f64 1/24 (cos.f64 re) -1) 2)) (-.f64 1 (fma.f64 1/24 (cos.f64 re) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/24 (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 1/24 (cos.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/24 (cos.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (fma.f64 1/24 (cos.f64 re) 2)) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 1/24 (cos.f64 re) 2) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) -1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 1/24 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/24 (cos.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (*.f64 1/24 (cos.f64 re))) (sqrt.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (fma.f64 1/24 (cos.f64 re) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (*.f64 (log1p.f64 (*.f64 1/24 (cos.f64 re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 1/24 (cos.f64 re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/24 (cos.f64 re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 1/24 (cos.f64 re) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 1/24 (cos.f64 re) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/24 (cos.f64 re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) 1/24 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/24 (cos.f64 re)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/24 (cos.f64 re) 1) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (cos.f64 re) 2)) (*.f64 (cbrt.f64 (cos.f64 re)) 1/24) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) (pow.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 2) (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) (pow.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 2) (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 2) (*.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) 1/24) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 1/24 (cos.f64 re))) (sqrt.f64 (*.f64 1/24 (cos.f64 re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) (*.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1) (/.f64 1 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (fma.f64 1/24 (cos.f64 re) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (pow.f64 (cos.f64 re) 3) 1/13824 1) (/.f64 1 (fma.f64 (*.f64 1/24 (cos.f64 re)) (fma.f64 1/24 (cos.f64 re) -1) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) -1) (/.f64 1 (fma.f64 1/24 (cos.f64 re) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576)) (/.f64 1 (+.f64 1 (*.f64 -1/24 (cos.f64 re)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) -1)) 2) (cbrt.f64 (fma.f64 1/24 (cos.f64 re) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) -1)) (sqrt.f64 (fma.f64 1/24 (cos.f64 re) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1) (-.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (sqrt.f64 (cos.f64 re)) (sqrt.f64 1/24) 1) (-.f64 (sqrt.f64 (*.f64 1/24 (cos.f64 re))) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/24 (cbrt.f64 (pow.f64 (cos.f64 re) 2))) (cbrt.f64 (cos.f64 re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/24 (sqrt.f64 (cos.f64 re))) (sqrt.f64 (cos.f64 re)) 0)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 im 4) (*.f64 (fma.f64 1/24 (cos.f64 re) -1) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 im 4) (*.f64 (pow.f64 im 4) (fma.f64 1/24 (cos.f64 re) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (fma.f64 1/24 (cos.f64 re) 1) (pow.f64 im 4)) (*.f64 -1 (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 4) (fma.f64 1/24 (cos.f64 re) 1)) (*.f64 (pow.f64 im 4) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)) (pow.f64 im 4))) 2)) (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)) (pow.f64 im 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)) (pow.f64 im 4)))) (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)) (pow.f64 im 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1) (pow.f64 im 4)) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (fma.f64 1/24 (cos.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) -1) (pow.f64 im 4)) (fma.f64 1/24 (cos.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 4) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1)) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (fma.f64 1/24 (cos.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 4) (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) -1)) (fma.f64 1/24 (cos.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 im 8) (*.f64 (pow.f64 (cos.f64 re) 2) 1/576)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 im 12) (pow.f64 (*.f64 1/24 (cos.f64 re)) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 im im) (sqrt.f64 (*.f64 1/24 (cos.f64 re)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 im 8) (*.f64 (pow.f64 (cos.f64 re) 2) 1/576)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 1/24) (cos.f64 re)) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 im 12) (pow.f64 (*.f64 1/24 (cos.f64 re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 1/24 (cos.f64 re)) (pow.f64 im 4))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (pow.f64 im 4) (*.f64 (fma.f64 1/24 (cos.f64 re) -1) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (pow.f64 im 4) (*.f64 (pow.f64 im 4) (fma.f64 1/24 (cos.f64 re) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/24 (cos.f64 re) 1) (pow.f64 im 4) (*.f64 -1 (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 im 4) 1 (*.f64 (fma.f64 1/24 (cos.f64 re) -1) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 im 4) 1 (*.f64 (pow.f64 im 4) (fma.f64 1/24 (cos.f64 re) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 im 4) (fma.f64 1/24 (cos.f64 re) 1) (*.f64 (pow.f64 im 4) -1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) (*.f64 im im) (*.f64 (fma.f64 1/24 (cos.f64 re) -1) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) (*.f64 im im) (*.f64 (pow.f64 im 4) (fma.f64 1/24 (cos.f64 re) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 im) 4) (cbrt.f64 (pow.f64 im 8)) (*.f64 (fma.f64 1/24 (cos.f64 re) -1) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 im) 4) (cbrt.f64 (pow.f64 im 8)) (*.f64 (pow.f64 im 4) (fma.f64 1/24 (cos.f64 re) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 im 8)) (pow.f64 (cbrt.f64 im) 4) (*.f64 (fma.f64 1/24 (cos.f64 re) -1) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 im 8)) (pow.f64 (cbrt.f64 im) 4) (*.f64 (pow.f64 im 4) (fma.f64 1/24 (cos.f64 re) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 im) 8) (pow.f64 (cbrt.f64 im) 4) (*.f64 (fma.f64 1/24 (cos.f64 re) -1) (pow.f64 im 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 im) 8) (pow.f64 (cbrt.f64 im) 4) (*.f64 (pow.f64 im 4) (fma.f64 1/24 (cos.f64 re) -1)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (fma.f64 1/24 (cos.f64 re) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1 (+.f64 1 (*.f64 -1/24 (cos.f64 re)))) (/.f64 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576) (+.f64 1 (*.f64 -1/24 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/24 (cos.f64 re) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/24 (cos.f64 re) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) (pow.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 2) (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 2) (*.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) (*.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 (cos.f64 re) 3) 1/13824 1) (/.f64 1 (fma.f64 (*.f64 1/24 (cos.f64 re)) (fma.f64 1/24 (cos.f64 re) -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576)) (/.f64 1 (+.f64 1 (*.f64 -1/24 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 1/24 (cos.f64 re)) (fma.f64 1/24 (cos.f64 re) -1) 1) (fma.f64 (pow.f64 (cos.f64 re) 3) 1/13824 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 1 (*.f64 -1/24 (cos.f64 re))) (-.f64 1 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (cos.f64 re) 3) 1/13824 1) (fma.f64 (*.f64 1/24 (cos.f64 re)) (fma.f64 1/24 (cos.f64 re) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (cos.f64 re) 3) 1/13824 1) (fma.f64 (pow.f64 (cos.f64 re) 2) 1/576 (+.f64 1 (*.f64 -1/24 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576)) (+.f64 1 (*.f64 -1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 (cos.f64 re) 3) 1/13824 1)) (neg.f64 (fma.f64 (*.f64 1/24 (cos.f64 re)) (fma.f64 1/24 (cos.f64 re) -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576))) (neg.f64 (+.f64 1 (*.f64 -1/24 (cos.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (cos.f64 re) 2) 1/576 -1) (fma.f64 1/24 (cos.f64 re) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 (pow.f64 (cos.f64 re) 3) 1/13824 1) 1) (fma.f64 (*.f64 1/24 (cos.f64 re)) (fma.f64 1/24 (cos.f64 re) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576)) 1) (+.f64 1 (*.f64 -1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 1/24 (cos.f64 re)) (fma.f64 1/24 (cos.f64 re) -1) 1) (fma.f64 (pow.f64 (cos.f64 re) 3) 1/13824 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 1 (*.f64 -1/24 (cos.f64 re))) (-.f64 1 (*.f64 (pow.f64 (cos.f64 re) 2) 1/576))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/24 (cos.f64 re) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 1/24 (cos.f64 re) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/24 (cos.f64 re) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/24 (cos.f64 re) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (*.f64 1/24 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (*.f64 1/24 (cos.f64 re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/24 (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 1/24 (cos.f64 re) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/24 (cos.f64 re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 re) 1/24 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/24 (cos.f64 re)) 1 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (cos.f64 re) 2)) (*.f64 (cbrt.f64 (cos.f64 re)) 1/24) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) (pow.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 2) (cbrt.f64 (*.f64 1/24 (cos.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) 1/24) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 1/24 (cos.f64 re))) (sqrt.f64 (*.f64 1/24 (cos.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 3) -1) (/.f64 1 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) (fma.f64 1/24 (cos.f64 re) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 1/24 (cos.f64 re) 1) 2) -1) (/.f64 1 (fma.f64 1/24 (cos.f64 re) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/24 (cos.f64 re) 2) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 2)) 2) (cbrt.f64 (fma.f64 1/24 (cos.f64 re) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 2)) (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1) (-.f64 (sqrt.f64 (fma.f64 1/24 (cos.f64 re) 1)) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/24 (cbrt.f64 (pow.f64 (cos.f64 re) 2))) (cbrt.f64 (cos.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/24 (sqrt.f64 (cos.f64 re))) (sqrt.f64 (cos.f64 re)) 1)))))

simplify205.0ms (1.7%)

Algorithm
egg-herbie
Rules
998×fma-def_binary64
838×unswap-sqr_binary64
708×distribute-rgt-in_binary64
577×distribute-lft-in_binary64
408×sqr-pow_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
040498
197478
2291450
31129450
42959450
54648450
64935450
75299450
85833450
96562450
107375450
117725450
Stop Event
node limit
Counts
209 → 191
Calls
Call 1
Inputs
1/24
(+.f64 1/24 (*.f64 -1/48 (pow.f64 re 2)))
(+.f64 1/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4))))
(+.f64 (*.f64 -1/17280 (pow.f64 re 6)) (+.f64 1/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4)))))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (pow.f64 im 4))
(+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (*.f64 1/24 (pow.f64 im 4)))
(+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4)))))
(+.f64 (*.f64 -1/17280 (*.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4))))))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
25/24
(+.f64 25/24 (*.f64 -1/48 (pow.f64 re 2)))
(+.f64 25/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4))))
(+.f64 (*.f64 -1/17280 (pow.f64 re 6)) (+.f64 25/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4)))))
Outputs
1/24
(+.f64 1/24 (*.f64 -1/48 (pow.f64 re 2)))
(+.f64 1/24 (*.f64 -1/48 (*.f64 re re)))
(fma.f64 -1/48 (*.f64 re re) 1/24)
(+.f64 1/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4))))
(+.f64 1/24 (fma.f64 -1/48 (*.f64 re re) (*.f64 1/576 (pow.f64 re 4))))
(+.f64 (fma.f64 -1/48 (*.f64 re re) 1/24) (*.f64 1/576 (pow.f64 re 4)))
(fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24))
(+.f64 (*.f64 -1/17280 (pow.f64 re 6)) (+.f64 1/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4)))))
(fma.f64 -1/17280 (pow.f64 re 6) (+.f64 1/24 (fma.f64 -1/48 (*.f64 re re) (*.f64 1/576 (pow.f64 re 4)))))
(+.f64 (fma.f64 -1/48 (*.f64 re re) (*.f64 1/576 (pow.f64 re 4))) (fma.f64 -1/17280 (pow.f64 re 6) 1/24))
(fma.f64 -1/17280 (pow.f64 re 6) (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24)))
(fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) (fma.f64 -1/17280 (pow.f64 re 6) 1/24)))
(fma.f64 (*.f64 re re) (fma.f64 re (*.f64 re 1/576) -1/48) (fma.f64 -1/17280 (pow.f64 re 6) 1/24))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (cos.f64 re))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (pow.f64 im 4))
(+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (*.f64 1/24 (pow.f64 im 4)))
(fma.f64 -1/48 (*.f64 (*.f64 re re) (pow.f64 im 4)) (*.f64 1/24 (pow.f64 im 4)))
(*.f64 (pow.f64 im 4) (fma.f64 -1/48 (*.f64 re re) 1/24))
(*.f64 (fma.f64 -1/48 (*.f64 re re) 1/24) (pow.f64 im 4))
(+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4)))))
(fma.f64 -1/48 (*.f64 (*.f64 re re) (pow.f64 im 4)) (fma.f64 1/24 (pow.f64 im 4) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4)))))
(+.f64 (*.f64 (pow.f64 im 4) (fma.f64 -1/48 (*.f64 re re) 1/24)) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4))))
(*.f64 (pow.f64 im 4) (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24)))
(*.f64 (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24)) (pow.f64 im 4))
(+.f64 (*.f64 -1/17280 (*.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 -1/48 (*.f64 (pow.f64 re 2) (pow.f64 im 4))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4))))))
(fma.f64 -1/17280 (*.f64 (pow.f64 re 6) (pow.f64 im 4)) (fma.f64 -1/48 (*.f64 (*.f64 re re) (pow.f64 im 4)) (fma.f64 1/24 (pow.f64 im 4) (*.f64 1/576 (*.f64 (pow.f64 re 4) (pow.f64 im 4))))))
(+.f64 (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 1/576 (pow.f64 re 4)))) (*.f64 (pow.f64 im 4) (+.f64 (*.f64 -1/17280 (pow.f64 re 6)) (*.f64 -1/48 (*.f64 re re)))))
(*.f64 (pow.f64 im 4) (fma.f64 -1/17280 (pow.f64 re 6) (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 1/24))))
(*.f64 (pow.f64 im 4) (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) (fma.f64 -1/17280 (pow.f64 re 6) 1/24))))
(*.f64 (pow.f64 im 4) (fma.f64 (*.f64 re re) (fma.f64 re (*.f64 re 1/576) -1/48) (fma.f64 -1/17280 (pow.f64 re 6) 1/24)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
(*.f64 1/24 (*.f64 (cos.f64 re) (pow.f64 im 4)))
25/24
(+.f64 25/24 (*.f64 -1/48 (pow.f64 re 2)))
(+.f64 (*.f64 -1/48 (*.f64 re re)) 25/24)
(fma.f64 -1/48 (*.f64 re re) 25/24)
(+.f64 25/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4))))
(+.f64 (fma.f64 -1/48 (*.f64 re re) (*.f64 1/576 (pow.f64 re 4))) 25/24)
(+.f64 (*.f64 1/576 (pow.f64 re 4)) (fma.f64 -1/48 (*.f64 re re) 25/24))
(fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 25/24))
(+.f64 (*.f64 -1/17280 (pow.f64 re 6)) (+.f64 25/24 (+.f64 (*.f64 -1/48 (pow.f64 re 2)) (*.f64 1/576 (pow.f64 re 4)))))
(fma.f64 -1/17280 (pow.f64 re 6) (+.f64 (fma.f64 -1/48 (*.f64 re re) (*.f64 1/576 (pow.f64 re 4))) 25/24))
(+.f64 (fma.f64 -1/48 (*.f64 re re) (*.f64 1/576 (pow.f64 re 4))) (fma.f64 -1/17280 (pow.f64 re 6) 25/24))
(fma.f64 -1/17280 (pow.f64 re 6) (fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) 25/24)))
(fma.f64 -1/48 (*.f64 re re) (fma.f64 1/576 (pow.f64 re 4) (fma.f64 -1/17280 (pow.f64 re 6) 25/24)))

localize98.0ms (0.8%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(pow.f64 (*.f64 im (*.f64 im 1/2)) 2)
0.2b
(/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))
0.2b
(*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))
0.4b
(pow.f64 (cos.f64 re) 3)
Compiler

Compiled 126 to 72 computations (42.9% saved)

series37.0ms (0.3%)

Counts
4 → 64
Calls

18 calls:

TimeVariablePointExpression
8.0ms
re
@0
(/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))
6.0ms
re
@inf
(pow.f64 (cos.f64 re) 3)
4.0ms
re
@inf
(/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))
3.0ms
im
@0
(*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))
2.0ms
im
@0
(/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))

rewrite165.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
434×fma-neg_binary64
357×expm1-udef_binary64
357×log1p-udef_binary64
220×add-sqr-sqrt_binary64
215×pow1_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02080
145669
2608969
Stop Event
node limit
Counts
4 → 103
Calls
Call 1
Inputs
(pow.f64 (cos.f64 re) 3)
(*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))
(/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))
(pow.f64 (*.f64 im (*.f64 im 1/2)) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (cos.f64 re) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 re) (pow.f64 (cos.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 re) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cos.f64 re) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 re) 2) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) (*.f64 (cbrt.f64 (cos.f64 re)) (pow.f64 (cos.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 re)) (*.f64 (sqrt.f64 (cos.f64 re)) (pow.f64 (cos.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 re) 3/2) (pow.f64 (cos.f64 re) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cos.f64 re)) 2) 3) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (cos.f64 re)) 3) (pow.f64 (sqrt.f64 (cos.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cos.f64 re) 2) 1) (cos.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cos.f64 re) 2) (pow.f64 (cbrt.f64 (cos.f64 re)) 2)) (cbrt.f64 (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cos.f64 re) 2) (sqrt.f64 (cos.f64 re))) (sqrt.f64 (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cos.f64 re) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cos.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (cos.f64 re) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cos.f64 re) 9))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cos.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cos.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (cos.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (cos.f64 re))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 (cos.f64 re) 2) (*.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 (cos.f64 re) 2) (*.f64 (*.f64 (*.f64 im im) -1/2) (cos.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (cos.f64 re) 3) (*.f64 (pow.f64 im 6) 1/8)) (cos.f64 re)) (+.f64 (pow.f64 (cos.f64 re) 2) (*.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (cos.f64 re) 2) (*.f64 (pow.f64 im 4) 1/4)) (cos.f64 re)) (+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (-.f64 (pow.f64 (cos.f64 re) 3) (*.f64 (pow.f64 im 6) 1/8))) (+.f64 (pow.f64 (cos.f64 re) 2) (*.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (-.f64 (pow.f64 (cos.f64 re) 2) (*.f64 (pow.f64 im 4) 1/4))) (+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cos.f64 re)) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (/.f64 1 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))) (pow.f64 (cbrt.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))) 2) (cbrt.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) 2) (*.f64 (cbrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) (/.f64 1 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))) (sqrt.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) (*.f64 (sqrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) (/.f64 1 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) (/.f64 1 (neg.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))) (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) 2) 1) (/.f64 (cbrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) 1) (/.f64 (sqrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))) 2)) (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (cbrt.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) 2) (pow.f64 (cbrt.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))) 2)) (cbrt.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) (pow.f64 (cbrt.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))) 2)) (/.f64 (sqrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) (cbrt.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))) (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (sqrt.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) 2) (sqrt.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))) (/.f64 (cbrt.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) (sqrt.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 1/64 (pow.f64 (pow.f64 im 6) 2)) (pow.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))) 3))) (+.f64 (pow.f64 (*.f64 1/2 (*.f64 im im)) 4) (*.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))) (-.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (-.f64 (pow.f64 (*.f64 1/2 (*.f64 im im)) 4) (pow.f64 (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2))) 2))) (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)) (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (neg.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) 3) (pow.f64 (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (fma.f64 (pow.f64 im 6) 1/8 (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (pow.f64 im 4) 1/4))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (*.f64 (*.f64 im 1/2) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (*.f64 im (*.f64 (*.f64 im im) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im 1/2) (*.f64 im (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (*.f64 im im)) (*.f64 1/2 (*.f64 im im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im im) (*.f64 (*.f64 im im) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 im 4) 1/4) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (pow.f64 im 4) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 im 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4)) (pow.f64 (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4)) (*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 im im))) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4)) 2) (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 im 4)) (*.f64 (pow.f64 (cbrt.f64 im) 2) (*.f64 (*.f64 im im) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (pow.f64 im 6) 1/8)) (*.f64 im (sqrt.f64 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im (sqrt.f64 1/2)) (*.f64 (*.f64 im (sqrt.f64 1/2)) (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 im im) 1/4) (*.f64 im im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 1/2 (*.f64 im im)) im) (*.f64 im 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 1/2 (*.f64 im im)) (*.f64 im 1/2)) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 1/2 (*.f64 im im)) (*.f64 im im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 1/2 (*.f64 im im)) (cbrt.f64 (*.f64 (pow.f64 im 4) 1/4))) (cbrt.f64 (*.f64 1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 1/2 (*.f64 im im)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (pow.f64 im 4) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 im 4) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 1/64 (pow.f64 (pow.f64 im 6) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 im 4) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 im 4) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (pow.f64 im 4) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 im 4) 1/4)) 1))))))

simplify193.0ms (1.6%)

Algorithm
egg-herbie
Rules
682×fma-neg_binary64
581×fma-def_binary64
447×associate-*r*_binary64
415×associate-*l*_binary64
345×distribute-rgt-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01382358
14242214
213741949
372001949
Stop Event
node limit
Counts
167 → 143
Calls
Call 1
Inputs
1
(+.f64 1 (*.f64 -3/2 (pow.f64 re 2)))
(+.f64 (*.f64 7/8 (pow.f64 re 4)) (+.f64 1 (*.f64 -3/2 (pow.f64 re 2))))
(+.f64 (*.f64 7/8 (pow.f64 re 4)) (+.f64 1 (+.f64 (*.f64 -61/240 (pow.f64 re 6)) (*.f64 -3/2 (pow.f64 re 2)))))
(-.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(-.f64 (+.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (pow.f64 re 2)) 1) (*.f64 1/2 (pow.f64 im 2)))
(-.f64 (+.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (pow.f64 re 2)) (+.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (pow.f64 re 4)) 1)) (*.f64 1/2 (pow.f64 im 2)))
(-.f64 (+.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (pow.f64 re 2)) (+.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (pow.f64 re 4)) (+.f64 1 (*.f64 (-.f64 (*.f64 -1/720 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 31/720) (pow.f64 re 6))))) (*.f64 1/2 (pow.f64 im 2)))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(pow.f64 (cos.f64 re) 2)
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(cos.f64 re)
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1 (/.f64 (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2))) (pow.f64 im 2)))))
(+.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2))) (pow.f64 im 2))) (*.f64 -2 (/.f64 (*.f64 (cos.f64 re) (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2)))) (pow.f64 im 4))))))
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1 (/.f64 (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2))) (pow.f64 im 2)))))
(+.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2))) (pow.f64 im 2))) (*.f64 -2 (/.f64 (*.f64 (cos.f64 re) (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2)))) (pow.f64 im 4))))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))) (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (pow.f64 re 2))) (*.f64 1/8 (/.f64 (pow.f64 im 6) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))))))
(+.f64 (*.f64 (-.f64 (*.f64 7/8 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (*.f64 -1 (/.f64 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2)))) (pow.f64 re 4)) (+.f64 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))) (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (pow.f64 re 2))) (*.f64 1/8 (/.f64 (pow.f64 im 6) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))))))
(+.f64 (*.f64 (-.f64 (*.f64 7/8 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (*.f64 -1 (/.f64 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2)))) (pow.f64 re 4)) (+.f64 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))) (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (pow.f64 re 2))) (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (/.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2)))) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (/.f64 (*.f64 (-.f64 (*.f64 7/8 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (/.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1)) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2)) (*.f64 -1 (/.f64 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))))) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))) (+.f64 (*.f64 61/240 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/720 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 31/720) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))))) (pow.f64 re 6))) (*.f64 1/8 (/.f64 (pow.f64 im 6) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))))))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 1/4 (pow.f64 im 4))
Outputs
1
(+.f64 1 (*.f64 -3/2 (pow.f64 re 2)))
(+.f64 1 (*.f64 -3/2 (*.f64 re re)))
(fma.f64 -3/2 (*.f64 re re) 1)
(+.f64 (*.f64 7/8 (pow.f64 re 4)) (+.f64 1 (*.f64 -3/2 (pow.f64 re 2))))
(fma.f64 7/8 (pow.f64 re 4) (+.f64 1 (*.f64 -3/2 (*.f64 re re))))
(fma.f64 7/8 (pow.f64 re 4) (fma.f64 -3/2 (*.f64 re re) 1))
(+.f64 (*.f64 7/8 (pow.f64 re 4)) (+.f64 1 (+.f64 (*.f64 -61/240 (pow.f64 re 6)) (*.f64 -3/2 (pow.f64 re 2)))))
(fma.f64 7/8 (pow.f64 re 4) (+.f64 1 (fma.f64 -61/240 (pow.f64 re 6) (*.f64 -3/2 (*.f64 re re)))))
(+.f64 (fma.f64 -61/240 (pow.f64 re 6) (*.f64 -3/2 (*.f64 re re))) (fma.f64 7/8 (pow.f64 re 4) 1))
(fma.f64 7/8 (pow.f64 re 4) (fma.f64 -3/2 (*.f64 re re) (fma.f64 -61/240 (pow.f64 re 6) 1)))
(-.f64 1 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 1 (*.f64 -1/2 (*.f64 im im)))
(+.f64 1 (*.f64 (*.f64 im im) -1/2))
(fma.f64 (*.f64 im im) -1/2 1)
(-.f64 (+.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (pow.f64 re 2)) 1) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (fma.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (*.f64 re re) 1) (*.f64 -1/2 (*.f64 im im)))
(+.f64 (fma.f64 (*.f64 re re) (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) 1) (*.f64 (*.f64 im im) -1/2))
(fma.f64 re (*.f64 re (+.f64 -1 (*.f64 im (*.f64 im 1/4)))) (fma.f64 (*.f64 im im) -1/2 1))
(-.f64 (+.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (pow.f64 re 2)) (+.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (pow.f64 re 4)) 1)) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (fma.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (*.f64 re re) (fma.f64 (+.f64 7/24 (*.f64 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) 1/24)) (pow.f64 re 4) 1)) (*.f64 -1/2 (*.f64 im im)))
(+.f64 (fma.f64 (*.f64 re re) (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (fma.f64 (pow.f64 re 4) (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) 1/24 7/24) 1)) (*.f64 (*.f64 im im) -1/2))
(fma.f64 re (*.f64 re (+.f64 -1 (*.f64 im (*.f64 im 1/4)))) (fma.f64 (pow.f64 re 4) (+.f64 1/3 (*.f64 (*.f64 im im) -1/48)) (fma.f64 (*.f64 im im) -1/2 1)))
(-.f64 (+.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (pow.f64 re 2)) (+.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (pow.f64 re 4)) (+.f64 1 (*.f64 (-.f64 (*.f64 -1/720 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 31/720) (pow.f64 re 6))))) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (fma.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (*.f64 re re) (+.f64 (fma.f64 (+.f64 7/24 (*.f64 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) 1/24)) (pow.f64 re 4) 1) (*.f64 (pow.f64 re 6) (fma.f64 -1/720 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -31/720)))) (*.f64 -1/2 (*.f64 im im)))
(fma.f64 (*.f64 re re) (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (+.f64 (fma.f64 (pow.f64 re 4) (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) 1/24 7/24) (fma.f64 (pow.f64 re 6) (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/720 -31/720) 1)) (*.f64 (*.f64 im im) -1/2)))
(fma.f64 (*.f64 im im) -1/2 (fma.f64 re (*.f64 re (+.f64 -1 (*.f64 im (*.f64 im 1/4)))) (fma.f64 (pow.f64 re 4) (+.f64 1/3 (*.f64 (*.f64 im im) -1/48)) (fma.f64 (pow.f64 re 6) (+.f64 -2/45 (*.f64 (*.f64 im im) 1/1440)) 1))))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(pow.f64 (cos.f64 re) 2)
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 -1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 (*.f64 im im) (*.f64 -1/2 (cos.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 -1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(*.f64 (*.f64 im im) (*.f64 -1/2 (cos.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (pow.f64 (cos.f64 re) 2))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)))
(*.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)))
(cos.f64 re)
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 im im)) (cos.f64 re))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 im im)) (cos.f64 re))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 im im)) (cos.f64 re))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 im im)) (cos.f64 re))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1 (/.f64 (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2))) (pow.f64 im 2)))))
(+.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) (neg.f64 (/.f64 (*.f64 (pow.f64 (cos.f64 re) 2) 0) (*.f64 im im)))))
(+.f64 (fma.f64 1/2 (*.f64 im im) (cos.f64 re)) (/.f64 0 (*.f64 im im)))
(+.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 0))
(+.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2))) (pow.f64 im 2))) (*.f64 -2 (/.f64 (*.f64 (cos.f64 re) (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2)))) (pow.f64 im 4))))))
(+.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) (neg.f64 (/.f64 (*.f64 (pow.f64 (cos.f64 re) 2) 0) (*.f64 im im)))))
(+.f64 (fma.f64 1/2 (*.f64 im im) (cos.f64 re)) (/.f64 0 (*.f64 im im)))
(+.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 0))
(*.f64 1/2 (pow.f64 im 2))
(*.f64 1/2 (*.f64 im im))
(+.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 im im)) (cos.f64 re))
(fma.f64 1/2 (*.f64 im im) (cos.f64 re))
(+.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1 (/.f64 (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2))) (pow.f64 im 2)))))
(+.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) (neg.f64 (/.f64 (*.f64 (pow.f64 (cos.f64 re) 2) 0) (*.f64 im im)))))
(+.f64 (fma.f64 1/2 (*.f64 im im) (cos.f64 re)) (/.f64 0 (*.f64 im im)))
(+.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 0))
(+.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2))) (pow.f64 im 2))) (*.f64 -2 (/.f64 (*.f64 (cos.f64 re) (+.f64 (*.f64 -2 (pow.f64 (cos.f64 re) 2)) (*.f64 2 (pow.f64 (cos.f64 re) 2)))) (pow.f64 im 4))))))
(+.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) (neg.f64 (/.f64 (*.f64 (pow.f64 (cos.f64 re) 2) 0) (*.f64 im im)))))
(+.f64 (fma.f64 1/2 (*.f64 im im) (cos.f64 re)) (/.f64 0 (*.f64 im im)))
(+.f64 (cos.f64 re) (fma.f64 1/2 (*.f64 im im) 0))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) 1) (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) 1) (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) 1) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))
(+.f64 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))) (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (pow.f64 re 2))) (*.f64 1/8 (/.f64 (pow.f64 im 6) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))))))
(+.f64 (/.f64 1 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (fma.f64 -1 (*.f64 (*.f64 re re) (+.f64 (/.f64 3/2 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (/.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1))))) (/.f64 (*.f64 1/8 (pow.f64 im 6)) (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))))))
(+.f64 (/.f64 1 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (-.f64 (/.f64 1/8 (/.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) (pow.f64 im 6))) (*.f64 (*.f64 re re) (+.f64 (/.f64 3/2 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (/.f64 (*.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (fma.f64 1/8 (pow.f64 im 6) 1)) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2))))))
(-.f64 (fma.f64 1/8 (/.f64 (pow.f64 im 6) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (/.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (*.f64 (*.f64 re re) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))))))
(+.f64 (*.f64 (-.f64 (*.f64 7/8 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (*.f64 -1 (/.f64 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2)))) (pow.f64 re 4)) (+.f64 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))) (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (pow.f64 re 2))) (*.f64 1/8 (/.f64 (pow.f64 im 6) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))))))
(fma.f64 (-.f64 (/.f64 7/8 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (fma.f64 -1 (/.f64 (+.f64 (/.f64 3/2 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (/.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1)))) (/.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2))) (/.f64 (+.f64 7/24 (*.f64 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) 1/24)) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1))))) (pow.f64 re 4) (+.f64 (/.f64 1 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (fma.f64 -1 (*.f64 (*.f64 re re) (+.f64 (/.f64 3/2 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (/.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1))))) (/.f64 (*.f64 1/8 (pow.f64 im 6)) (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))))))
(+.f64 (-.f64 (/.f64 1/8 (/.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) (pow.f64 im 6))) (*.f64 (*.f64 re re) (+.f64 (/.f64 3/2 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (/.f64 (*.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (fma.f64 1/8 (pow.f64 im 6) 1)) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2))))) (fma.f64 (pow.f64 re 4) (-.f64 (/.f64 7/8 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (-.f64 (*.f64 (/.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) 1/24 7/24) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2)) (fma.f64 1/8 (pow.f64 im 6) 1)) (/.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (/.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) (+.f64 (/.f64 3/2 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (/.f64 (*.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (fma.f64 1/8 (pow.f64 im 6) 1)) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2))))))) (/.f64 1 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))))))
(fma.f64 (pow.f64 re 4) (+.f64 (*.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))))) (-.f64 (/.f64 7/8 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (*.f64 (/.f64 (fma.f64 1/8 (pow.f64 im 6) 1) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (+.f64 1/3 (*.f64 (*.f64 im im) -1/48))))) (-.f64 (fma.f64 1/8 (/.f64 (pow.f64 im 6) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (/.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (*.f64 (*.f64 re re) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))))))
(fma.f64 (pow.f64 re 4) (+.f64 (/.f64 7/8 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (*.f64 (/.f64 (+.f64 1/3 (*.f64 (*.f64 im im) -1/48)) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (neg.f64 (fma.f64 1/8 (pow.f64 im 6) 1))))) (-.f64 (fma.f64 1/8 (/.f64 (pow.f64 im 6) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (/.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (*.f64 (*.f64 re re) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))))))
(+.f64 (*.f64 (-.f64 (*.f64 7/8 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (*.f64 -1 (/.f64 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2)))) (pow.f64 re 4)) (+.f64 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))) (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (pow.f64 re 2))) (+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (/.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2)))) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (/.f64 (*.f64 (-.f64 (*.f64 7/8 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (/.f64 (*.f64 (+.f64 7/24 (*.f64 1/24 (-.f64 1 (*.f64 1/2 (pow.f64 im 2))))) (+.f64 (*.f64 1/8 (pow.f64 im 6)) 1)) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2)) (*.f64 -1 (/.f64 (*.f64 (+.f64 (*.f64 3/2 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))))) (-.f64 (*.f64 -1/2 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 1/2)) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))) (+.f64 (*.f64 61/240 (/.f64 1 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))))) (/.f64 (*.f64 (-.f64 (*.f64 -1/720 (-.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 31/720) (+.f64 1 (*.f64 1/8 (pow.f64 im 6)))) (pow.f64 (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2))) 2))))) (pow.f64 re 6))) (*.f64 1/8 (/.f64 (pow.f64 im 6) (-.f64 (+.f64 1 (*.f64 1/4 (pow.f64 im 4))) (*.f64 1/2 (pow.f64 im 2)))))))))
(fma.f64 (-.f64 (/.f64 7/8 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (fma.f64 -1 (/.f64 (+.f64 (/.f64 3/2 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (/.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1)))) (/.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2))) (/.f64 (+.f64 7/24 (*.f64 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) 1/24)) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1))))) (pow.f64 re 4) (+.f64 (/.f64 1 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (fma.f64 -1 (*.f64 (*.f64 re re) (+.f64 (/.f64 3/2 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (/.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1))))) (fma.f64 -1 (*.f64 (pow.f64 re 6) (fma.f64 -1 (/.f64 (+.f64 7/24 (*.f64 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) 1/24)) (/.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) (+.f64 (/.f64 3/2 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (/.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1)))))) (+.f64 (/.f64 (-.f64 (/.f64 7/8 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (fma.f64 -1 (/.f64 (+.f64 (/.f64 3/2 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (/.f64 (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1)))) (/.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2))) (/.f64 (+.f64 7/24 (*.f64 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) 1/24)) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1))))) (/.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) (fma.f64 -1/2 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -1/2))) (+.f64 (/.f64 61/240 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im))))) (/.f64 (fma.f64 -1/720 (+.f64 1 (*.f64 -1/2 (*.f64 im im))) -31/720) (/.f64 (pow.f64 (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))) 2) (fma.f64 1/8 (pow.f64 im 6) 1))))))) (/.f64 (*.f64 1/8 (pow.f64 im 6)) (+.f64 1 (-.f64 (*.f64 (pow.f64 im 4) 1/4) (*.f64 1/2 (*.f64 im im)))))))))
(+.f64 (-.f64 (-.f64 (/.f64 1/8 (/.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) (pow.f64 im 6))) (*.f64 (pow.f64 re 6) (-.f64 (+.f64 (/.f64 (-.f64 (/.f64 7/8 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (-.f64 (*.f64 (/.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) 1/24 7/24) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2)) (fma.f64 1/8 (pow.f64 im 6) 1)) (/.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (/.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) (+.f64 (/.f64 3/2 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (/.f64 (*.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (fma.f64 1/8 (pow.f64 im 6) 1)) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2))))))) (/.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2))) (+.f64 (/.f64 61/240 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (/.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/720 -31/720) (/.f64 (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2) (fma.f64 1/8 (pow.f64 im 6) 1))))) (*.f64 (/.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) 1/24 7/24) (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (+.f64 (/.f64 3/2 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (/.f64 (*.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (fma.f64 1/8 (pow.f64 im 6) 1)) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2))))))) (*.f64 (*.f64 re re) (+.f64 (/.f64 3/2 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (/.f64 (*.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (fma.f64 1/8 (pow.f64 im 6) 1)) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2))))) (fma.f64 (pow.f64 re 4) (-.f64 (/.f64 7/8 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (-.f64 (*.f64 (/.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) 1/24 7/24) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2)) (fma.f64 1/8 (pow.f64 im 6) 1)) (/.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (/.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) (+.f64 (/.f64 3/2 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2)))) (/.f64 (*.f64 (fma.f64 (+.f64 1 (*.f64 (*.f64 im im) -1/2)) -1/2 -1/2) (fma.f64 1/8 (pow.f64 im 6) 1)) (pow.f64 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))) 2))))))) (/.f64 1 (+.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (*.f64 (*.f64 im im) -1/2))))))
(fma.f64 (pow.f64 re 4) (+.f64 (*.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))))) (-.f64 (/.f64 7/8 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (*.f64 (/.f64 (fma.f64 1/8 (pow.f64 im 6) 1) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (+.f64 1/3 (*.f64 (*.f64 im im) -1/48))))) (fma.f64 -1 (fma.f64 re (*.f64 re (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))))) (*.f64 (pow.f64 re 6) (fma.f64 (/.f64 (+.f64 (*.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))))) (-.f64 (/.f64 7/8 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (*.f64 (/.f64 (fma.f64 1/8 (pow.f64 im 6) 1) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (+.f64 1/3 (*.f64 (*.f64 im im) -1/48))))) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (-.f64 (fma.f64 (/.f64 (+.f64 -2/45 (*.f64 (*.f64 im im) 1/1440)) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 61/240 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (*.f64 (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (/.f64 (+.f64 1/3 (*.f64 (*.f64 im im) -1/48)) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))))))) (fma.f64 1/8 (/.f64 (pow.f64 im 6) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (/.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))))))
(fma.f64 (pow.f64 re 4) (+.f64 (/.f64 7/8 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (*.f64 (/.f64 (+.f64 1/3 (*.f64 (*.f64 im im) -1/48)) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (neg.f64 (fma.f64 1/8 (pow.f64 im 6) 1))))) (fma.f64 -1 (fma.f64 re (*.f64 re (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))))) (*.f64 (pow.f64 re 6) (fma.f64 (/.f64 (+.f64 (/.f64 7/8 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (*.f64 (/.f64 (+.f64 1/3 (*.f64 (*.f64 im im) -1/48)) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (neg.f64 (fma.f64 1/8 (pow.f64 im 6) 1))))) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (-.f64 (fma.f64 (/.f64 (+.f64 -2/45 (*.f64 (*.f64 im im) 1/1440)) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 61/240 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (*.f64 (fma.f64 (/.f64 (+.f64 -1 (*.f64 im (*.f64 im 1/4))) (pow.f64 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)) 2)) (fma.f64 1/8 (pow.f64 im 6) 1) (/.f64 3/2 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))) (/.f64 (+.f64 1/3 (*.f64 (*.f64 im im) -1/48)) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1)))))))) (fma.f64 1/8 (/.f64 (pow.f64 im 6) (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))) (/.f64 1 (fma.f64 (pow.f64 im 4) 1/4 (fma.f64 (*.f64 im im) -1/2 1))))))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))) (cos.f64 re) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))) (cos.f64 re) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))) (cos.f64 re) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))) (cos.f64 re) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))) (cos.f64 re) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))) (cos.f64 re) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))) (cos.f64 re) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (+.f64 (*.f64 1/8 (pow.f64 im 6)) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (-.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))) (cos.f64 re)) (*.f64 1/4 (pow.f64 im 4))))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (+.f64 (cos.f64 re) (*.f64 -1/2 (*.f64 im im))) (cos.f64 re) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (+.f64 (cos.f64 re) (*.f64 (*.f64 im im) -1/2)) (*.f64 (pow.f64 im 4) 1/4)))
(/.f64 (fma.f64 1/8 (pow.f64 im 6) (pow.f64 (cos.f64 re) 3)) (fma.f64 (cos.f64 re) (fma.f64 (*.f64 im im) -1/2 (cos.f64 re)) (*.f64 (pow.f64 im 4) 1/4)))
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)
(*.f64 1/4 (pow.f64 im 4))
(*.f64 (pow.f64 im 4) 1/4)

eval1.1s (9.7%)

Compiler

Compiled 10193 to 7056 computations (30.8% saved)

prune177.0ms (1.5%)

Pruning

15 alts after pruning (2 fresh and 13 done)

PrunedKeptTotal
New3832385
Fresh000
Picked101
Done01313
Total38415399
Error
0b
Counts
399 → 15
Alt Table
Click to see full alt table
StatusErrorProgram
30.3b
(fma.f64 im (*.f64 im 1/2) 1)
30.1b
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
0.7b
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
61.6b
(*.f64 (pow.f64 im 4) (-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1))
61.8b
(*.f64 (pow.f64 im 4) 1/24)
61.6b
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.2b
(/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (*.f64 (*.f64 im im) 1/4) (*.f64 im im)) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))
0.7b
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
0.7b
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
61.3b
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
1.1b
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
1.2b
(cos.f64 re)
61.8b
(*.f64 (pow.f64 im 4) (-.f64 25/24 1))
61.6b
(*.f64 1/2 (*.f64 im im))
Compiler

Compiled 181 to 132 computations (27.1% saved)

regimes109.0ms (0.9%)

Counts
18 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 im im))
(cos.f64 re)
(*.f64 (pow.f64 im 4) 1/24)
(fma.f64 im (*.f64 im 1/2) 1)
(*.f64 (pow.f64 im 4) (-.f64 25/24 1))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (pow.f64 im 4) (-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1))
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (*.f64 (*.f64 (*.f64 im im) 1/4) (*.f64 im im)) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))
(/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 im im) 3) 1/8) (pow.f64 (cos.f64 re) 3)) (+.f64 (pow.f64 (*.f64 im (*.f64 im 1/2)) 2) (*.f64 (cos.f64 re) (-.f64 (cos.f64 re) (*.f64 im (*.f64 im 1/2))))))
(/.f64 (+.f64 (pow.f64 (cos.f64 re) 3) (*.f64 (pow.f64 (cos.f64 re) 3) (*.f64 1/8 (pow.f64 im 6)))) (+.f64 (pow.f64 (cos.f64 re) 2) (-.f64 (pow.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) 2) (*.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im)))))))
Outputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Calls

6 calls:

21.0ms
im
19.0ms
re
17.0ms
(*.f64 1/2 (cos.f64 re))
17.0ms
(cos.f64 re)
15.0ms
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Results
ErrorSegmentsBranch
0.0b1re
0.0b1im
0.0b1(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
0.0b1(*.f64 1/2 (cos.f64 re))
0.0b1(cos.f64 re)
0.0b1(+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Compiler

Compiled 276 to 164 computations (40.6% saved)

regimes52.0ms (0.4%)

Counts
14 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 im im))
(cos.f64 re)
(*.f64 (pow.f64 im 4) 1/24)
(fma.f64 im (*.f64 im 1/2) 1)
(*.f64 (pow.f64 im 4) (-.f64 25/24 1))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (pow.f64 im 4) (-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1))
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
Outputs
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
Calls

3 calls:

30.0ms
re
10.0ms
(cos.f64 re)
7.0ms
im
Results
ErrorSegmentsBranch
0.7b1re
0.7b1im
0.7b1(cos.f64 re)
Compiler

Compiled 129 to 79 computations (38.8% saved)

regimes37.0ms (0.3%)

Counts
12 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 im im))
(cos.f64 re)
(*.f64 (pow.f64 im 4) 1/24)
(fma.f64 im (*.f64 im 1/2) 1)
(*.f64 (pow.f64 im 4) (-.f64 25/24 1))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (pow.f64 im 4) (-.f64 (+.f64 1 (*.f64 1/24 (cos.f64 re))) 1))
Outputs
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
Calls

3 calls:

20.0ms
im
7.0ms
re
6.0ms
(cos.f64 re)
Results
ErrorSegmentsBranch
0.7b1re
0.7b1im
0.7b1(cos.f64 re)
Compiler

Compiled 102 to 63 computations (38.2% saved)

regimes25.0ms (0.2%)

Counts
10 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 im im))
(cos.f64 re)
(*.f64 (pow.f64 im 4) 1/24)
(fma.f64 im (*.f64 im 1/2) 1)
(*.f64 (pow.f64 im 4) (-.f64 25/24 1))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
(*.f64 (pow.f64 im 4) (*.f64 1/24 (cos.f64 re)))
(*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
Outputs
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
Calls

3 calls:

8.0ms
re
8.0ms
(cos.f64 re)
6.0ms
im
Results
ErrorSegmentsBranch
0.7b1re
0.7b1im
0.7b1(cos.f64 re)
Compiler

Compiled 79 to 50 computations (36.7% saved)

regimes16.0ms (0.1%)

Counts
7 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 im im))
(cos.f64 re)
(*.f64 (pow.f64 im 4) 1/24)
(fma.f64 im (*.f64 im 1/2) 1)
(*.f64 (pow.f64 im 4) (-.f64 25/24 1))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
Outputs
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
Calls

3 calls:

5.0ms
re
5.0ms
im
4.0ms
(cos.f64 re)
Results
ErrorSegmentsBranch
1.1b1re
1.1b1im
1.1b1(cos.f64 re)
Compiler

Compiled 53 to 34 computations (35.8% saved)

regimes18.0ms (0.2%)

Accuracy

Total -60.9b remaining (-5179.7%)

Threshold costs -60.9b (-5179.7%)

Counts
6 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 im im))
(cos.f64 re)
(*.f64 (pow.f64 im 4) 1/24)
(fma.f64 im (*.f64 im 1/2) 1)
(*.f64 (pow.f64 im 4) (-.f64 25/24 1))
(*.f64 1/2 (*.f64 (*.f64 im im) (cos.f64 re)))
Outputs
(cos.f64 re)
Calls

3 calls:

5.0ms
re
5.0ms
im
4.0ms
(cos.f64 re)
Results
ErrorSegmentsBranch
1.2b1re
1.2b1im
1.2b1(cos.f64 re)
Compiler

Compiled 45 to 30 computations (33.3% saved)

simplify13.0ms (0.1%)

Algorithm
egg-herbie
Rules
10×*-commutative_binary64
+-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02896
14896
25096
35196
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
(cos.f64 re)
(*.f64 1/2 (*.f64 im im))
Outputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) (+.f64 1 (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 1 (*.f64 1/2 (*.f64 im im))))
(*.f64 (cos.f64 re) (+.f64 (*.f64 1/2 (*.f64 im im)) 1))
(+.f64 (*.f64 im (*.f64 im 1/2)) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 im (*.f64 1/2 im)))
(cos.f64 re)
(*.f64 1/2 (*.f64 im im))
Compiler

Compiled 77 to 56 computations (27.3% saved)

soundness0.0ms (0%)

end72.0ms (0.6%)

Compiler

Compiled 65 to 36 computations (44.6% saved)

Profiling

Loading profile data...