Details

Time bar (total: 3.2s)

analyze207.0ms (6.5%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
50%50%0.1%2
50%50%0.1%3
74.9%25%0.1%4
74.9%25%0.1%5
74.9%18.7%6.3%6
74.9%18.7%6.3%7
74.9%15.6%9.5%8
74.9%15.6%9.5%9
74.9%14%11%10
74.9%14%11%11
74.9%13.3%11.8%12
74.9%13.3%11.8%13
74.9%12.9%12.2%14
Compiler

Compiled 8 to 6 computations (25% saved)

sample2.0s (63.6%)

Results
630.0ms5753×body128valid
624.0ms1414×body1024valid
267.0ms695×body1024invalid
230.0ms739×body512valid
98.0ms343×body512invalid
80.0ms349×body256valid
42.0ms182×body256invalid
30.0ms208×body128invalid
1.0msbody2048valid

preprocess14.0ms (0.4%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0916
11116
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 im) (cos.f64 re))
Outputs
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 im) (cos.f64 re))
Compiler

Compiled 7 to 5 computations (28.6% saved)

simplify6.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
178
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (cos.f64 im))
Outputs
(*.f64 (exp.f64 re) (cos.f64 im))

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.0b
Counts
2 → 1
Alt Table
StatusErrorProgram
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))
Compiler

Compiled 21 to 15 computations (28.6% saved)

localize6.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 im)
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))

series5.0ms (0.2%)

Counts
2 → 12
Calls

9 calls:

TimeVariablePointExpression
1.0ms
re
@inf
(*.f64 (exp.f64 re) (cos.f64 im))
1.0ms
im
@0
(*.f64 (exp.f64 re) (cos.f64 im))
1.0ms
re
@0
(*.f64 (exp.f64 re) (cos.f64 im))
1.0ms
re
@-inf
(*.f64 (exp.f64 re) (cos.f64 im))
0.0ms
im
@inf
(*.f64 (exp.f64 re) (cos.f64 im))

rewrite32.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
530×pow1_binary64
483×add-log-exp_binary64
483×log1p-expm1-u_binary64
483×expm1-log1p-u_binary64
471×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify27.0ms (0.9%)

Algorithm
egg-herbie
Rules
945×fma-def_binary64
688×associate-*l*_binary64
514×distribute-rgt-out_binary64
434×associate-*r*_binary64
390×unswap-sqr_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
049204
1131200
2331182
31045165
43792160
Stop Event
node limit
Counts
41 → 50
Calls
Call 1
Inputs
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im)))
(+.f64 (*.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))))
(exp.f64 re)
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (exp.f64 re))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (exp.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (+.f64 (exp.f64 re) (*.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6))))))
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 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6)))))
Outputs
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(fma.f64 (cos.f64 im) re (cos.f64 im))
(*.f64 (+.f64 re 1) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re 1))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im)))
(fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (fma.f64 (cos.f64 im) re (cos.f64 im)))
(fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (*.f64 (+.f64 re 1) (cos.f64 im)))
(*.f64 (cos.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 re 1)))
(fma.f64 (cos.f64 im) (fma.f64 re (*.f64 re 1/2) re) (cos.f64 im))
(fma.f64 (cos.f64 im) (fma.f64 1/2 (*.f64 re re) re) (cos.f64 im))
(+.f64 (*.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))))
(fma.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (fma.f64 (cos.f64 im) re (cos.f64 im))))
(fma.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (*.f64 (+.f64 re 1) (cos.f64 im))))
(fma.f64 (cos.f64 im) (*.f64 1/6 (pow.f64 re 3)) (*.f64 (cos.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 re 1))))
(*.f64 (cos.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
(*.f64 (cos.f64 im) (+.f64 (fma.f64 1/2 (*.f64 re re) re) (fma.f64 1/6 (pow.f64 re 3) 1)))
(exp.f64 re)
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (exp.f64 re))
(fma.f64 -1/2 (*.f64 (exp.f64 re) (*.f64 im im)) (exp.f64 re))
(fma.f64 (*.f64 (exp.f64 re) -1/2) (*.f64 im im) (exp.f64 re))
(*.f64 (fma.f64 -1/2 (*.f64 im im) 1) (exp.f64 re))
(*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) 1))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (exp.f64 re)))
(fma.f64 -1/2 (*.f64 (exp.f64 re) (*.f64 im im)) (fma.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4)) (exp.f64 re)))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) (*.f64 1/24 (pow.f64 im 4)))))
(*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) (fma.f64 1/24 (pow.f64 im 4) 1)))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (+.f64 (exp.f64 re) (*.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6))))))
(fma.f64 -1/2 (*.f64 (exp.f64 re) (*.f64 im im)) (+.f64 (fma.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4)) (exp.f64 re)) (*.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6)))))
(fma.f64 -1/2 (*.f64 (exp.f64 re) (*.f64 im im)) (fma.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4)) (fma.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6)) (exp.f64 re))))
(+.f64 (*.f64 (fma.f64 1/24 (pow.f64 im 4) 1) (exp.f64 re)) (*.f64 (exp.f64 re) (fma.f64 -1/2 (*.f64 im im) (*.f64 -1/720 (pow.f64 im 6)))))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) (fma.f64 -1/720 (pow.f64 im 6) (*.f64 1/24 (pow.f64 im 4))))))
(*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 -1/720 (pow.f64 im 6) 1))))
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 im -1/2) 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 (fma.f64 -1/2 (*.f64 im im) 1) (*.f64 1/24 (pow.f64 im 4)))
(fma.f64 im (*.f64 im -1/2) (fma.f64 1/24 (pow.f64 im 4) 1))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6)))))
(+.f64 1 (fma.f64 -1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) (*.f64 -1/720 (pow.f64 im 6)))))
(+.f64 (fma.f64 -1/2 (*.f64 im im) 1) (fma.f64 -1/720 (pow.f64 im 6) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 (fma.f64 -1/2 (*.f64 im im) 1) (fma.f64 1/24 (pow.f64 im 4) (*.f64 -1/720 (pow.f64 im 6))))
(fma.f64 im (*.f64 im -1/2) (fma.f64 1/24 (pow.f64 im 4) (fma.f64 -1/720 (pow.f64 im 6) 1)))

prune69.0ms (2.2%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New48250
Fresh000
Picked011
Done000
Total48351
Error
0b
Counts
51 → 3
Alt Table
StatusErrorProgram
0.1b
(*.f64 (exp.f64 re) (log1p.f64 (expm1.f64 (cos.f64 im))))
0.2b
(*.f64 (exp.f64 re) (cbrt.f64 (pow.f64 (cos.f64 im) 3)))
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))
Compiler

Compiled 565 to 304 computations (46.2% saved)

localize7.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 im)
0.0b
(*.f64 (exp.f64 re) (log1p.f64 (expm1.f64 (cos.f64 im))))
0.2b
(log1p.f64 (expm1.f64 (cos.f64 im)))
0.6b
(expm1.f64 (cos.f64 im))

series4.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
im
@0
(expm1.f64 (cos.f64 im))
0.0ms
im
@inf
(expm1.f64 (cos.f64 im))
0.0ms
im
@-inf
(expm1.f64 (cos.f64 im))
0.0ms
im
@0
(log1p.f64 (expm1.f64 (cos.f64 im)))
0.0ms
im
@0
(*.f64 (exp.f64 re) (log1p.f64 (expm1.f64 (cos.f64 im))))

rewrite35.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
611×pow1_binary64
559×expm1-log1p-u_binary64
558×add-log-exp_binary64
558×log1p-expm1-u_binary64
66×*-un-lft-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify46.0ms (1.4%)

Algorithm
egg-herbie
Rules
772×fma-neg_binary64
404×*-commutative_binary64
399×fma-def_binary64
392×cancel-sign-sub-inv_binary64
272×distribute-lft-out_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
069488
1191476
2493452
31642435
42577430
54065428
Stop Event
node limit
Counts
97 → 80
Calls
Call 1
Inputs
(-.f64 (E.f64) 1)
(-.f64 (+.f64 (E.f64) (*.f64 -1/2 (*.f64 (E.f64) (pow.f64 im 2)))) 1)
(-.f64 (+.f64 (E.f64) (+.f64 (*.f64 -1/2 (*.f64 (E.f64) (pow.f64 im 2))) (*.f64 1/6 (*.f64 (E.f64) (pow.f64 im 4))))) 1)
(-.f64 (+.f64 (E.f64) (+.f64 (*.f64 -31/720 (*.f64 (E.f64) (pow.f64 im 6))) (+.f64 (*.f64 -1/2 (*.f64 (E.f64) (pow.f64 im 2))) (*.f64 1/6 (*.f64 (E.f64) (pow.f64 im 4)))))) 1)
(-.f64 (exp.f64 (cos.f64 im)) 1)
(-.f64 (exp.f64 (cos.f64 im)) 1)
(-.f64 (exp.f64 (cos.f64 im)) 1)
(-.f64 (exp.f64 (cos.f64 im)) 1)
(-.f64 (exp.f64 (cos.f64 im)) 1)
(-.f64 (exp.f64 (cos.f64 im)) 1)
(-.f64 (exp.f64 (cos.f64 im)) 1)
(-.f64 (exp.f64 (cos.f64 im)) 1)
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 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6)))))
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im)))
(+.f64 (*.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(exp.f64 re)
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (exp.f64 re))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (exp.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (+.f64 (exp.f64 re) (*.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6))))))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
Outputs
(-.f64 (E.f64) 1)
(+.f64 (E.f64) -1)
(expm1.f64 1)
(-.f64 (+.f64 (E.f64) (*.f64 -1/2 (*.f64 (E.f64) (pow.f64 im 2)))) 1)
(+.f64 (E.f64) (-.f64 (*.f64 -1/2 (*.f64 (E.f64) (*.f64 im im))) 1))
(+.f64 (E.f64) (fma.f64 (*.f64 (E.f64) -1/2) (*.f64 im im) -1))
(fma.f64 (E.f64) (*.f64 im (*.f64 -1/2 im)) (expm1.f64 1))
(fma.f64 (fma.f64 -1/2 (*.f64 im im) 1) (E.f64) -1)
(fma.f64 (E.f64) (fma.f64 -1/2 (*.f64 im im) 1) -1)
(-.f64 (+.f64 (E.f64) (+.f64 (*.f64 -1/2 (*.f64 (E.f64) (pow.f64 im 2))) (*.f64 1/6 (*.f64 (E.f64) (pow.f64 im 4))))) 1)
(+.f64 (E.f64) (-.f64 (fma.f64 -1/2 (*.f64 (E.f64) (*.f64 im im)) (*.f64 1/6 (*.f64 (E.f64) (pow.f64 im 4)))) 1))
(+.f64 (fma.f64 -1/2 (*.f64 (E.f64) (*.f64 im im)) (*.f64 (*.f64 1/6 (pow.f64 im 4)) (E.f64))) (expm1.f64 1))
(+.f64 (*.f64 (E.f64) (+.f64 (*.f64 im (*.f64 -1/2 im)) (*.f64 1/6 (pow.f64 im 4)))) (expm1.f64 1))
(+.f64 (*.f64 (E.f64) (+.f64 (*.f64 1/6 (pow.f64 im 4)) (fma.f64 -1/2 (*.f64 im im) 1))) -1)
(fma.f64 (E.f64) (+.f64 (fma.f64 -1/2 (*.f64 im im) 1) (*.f64 1/6 (pow.f64 im 4))) -1)
(-.f64 (+.f64 (E.f64) (+.f64 (*.f64 -31/720 (*.f64 (E.f64) (pow.f64 im 6))) (+.f64 (*.f64 -1/2 (*.f64 (E.f64) (pow.f64 im 2))) (*.f64 1/6 (*.f64 (E.f64) (pow.f64 im 4)))))) 1)
(+.f64 (E.f64) (-.f64 (fma.f64 -31/720 (*.f64 (E.f64) (pow.f64 im 6)) (fma.f64 -1/2 (*.f64 (E.f64) (*.f64 im im)) (*.f64 1/6 (*.f64 (E.f64) (pow.f64 im 4))))) 1))
(+.f64 (fma.f64 -31/720 (*.f64 (E.f64) (pow.f64 im 6)) (fma.f64 -1/2 (*.f64 (E.f64) (*.f64 im im)) (*.f64 (*.f64 1/6 (pow.f64 im 4)) (E.f64)))) (expm1.f64 1))
(+.f64 (fma.f64 (E.f64) (*.f64 im (*.f64 -1/2 im)) (*.f64 (E.f64) (+.f64 (*.f64 1/6 (pow.f64 im 4)) (*.f64 -31/720 (pow.f64 im 6))))) (expm1.f64 1))
(+.f64 (*.f64 (E.f64) (+.f64 (*.f64 -1/2 (*.f64 im im)) (+.f64 (*.f64 1/6 (pow.f64 im 4)) (*.f64 -31/720 (pow.f64 im 6))))) (expm1.f64 1))
(+.f64 (*.f64 (E.f64) (+.f64 (fma.f64 -1/2 (*.f64 im im) 1) (+.f64 (*.f64 1/6 (pow.f64 im 4)) (*.f64 -31/720 (pow.f64 im 6))))) -1)
(fma.f64 (E.f64) (+.f64 (fma.f64 -1/2 (*.f64 im im) 1) (+.f64 (*.f64 1/6 (pow.f64 im 4)) (*.f64 -31/720 (pow.f64 im 6)))) -1)
(-.f64 (exp.f64 (cos.f64 im)) 1)
(expm1.f64 (cos.f64 im))
(-.f64 (exp.f64 (cos.f64 im)) 1)
(expm1.f64 (cos.f64 im))
(-.f64 (exp.f64 (cos.f64 im)) 1)
(expm1.f64 (cos.f64 im))
(-.f64 (exp.f64 (cos.f64 im)) 1)
(expm1.f64 (cos.f64 im))
(-.f64 (exp.f64 (cos.f64 im)) 1)
(expm1.f64 (cos.f64 im))
(-.f64 (exp.f64 (cos.f64 im)) 1)
(expm1.f64 (cos.f64 im))
(-.f64 (exp.f64 (cos.f64 im)) 1)
(expm1.f64 (cos.f64 im))
(-.f64 (exp.f64 (cos.f64 im)) 1)
(expm1.f64 (cos.f64 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)
(+.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 (pow.f64 im 4) 1/24)))
(+.f64 1 (fma.f64 (pow.f64 im 4) 1/24 (*.f64 im (*.f64 im -1/2))))
(fma.f64 -1/2 (*.f64 im im) (fma.f64 (pow.f64 im 4) 1/24 1))
(fma.f64 (pow.f64 im 4) 1/24 (fma.f64 -1/2 (*.f64 im im) 1))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6)))))
(+.f64 1 (fma.f64 -1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) (*.f64 (pow.f64 im 6) -1/720))))
(+.f64 (fma.f64 -1/2 (*.f64 im im) 1) (fma.f64 (pow.f64 im 4) 1/24 (*.f64 (pow.f64 im 6) -1/720)))
(+.f64 (fma.f64 (pow.f64 im 4) 1/24 (*.f64 im (*.f64 -1/2 im))) (fma.f64 (pow.f64 im 6) -1/720 1))
(+.f64 1 (fma.f64 (pow.f64 im 4) 1/24 (fma.f64 -1/2 (*.f64 im im) (*.f64 (pow.f64 im 6) -1/720))))
(+.f64 1 (fma.f64 -1/2 (*.f64 im im) (fma.f64 (pow.f64 im 4) 1/24 (*.f64 (pow.f64 im 6) -1/720))))
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(fma.f64 (cos.f64 im) re (cos.f64 im))
(*.f64 (+.f64 re 1) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 1 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im)))
(fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (fma.f64 (cos.f64 im) re (cos.f64 im)))
(fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (*.f64 (+.f64 re 1) (cos.f64 im)))
(*.f64 (cos.f64 im) (+.f64 (+.f64 1 re) (*.f64 re (*.f64 re 1/2))))
(*.f64 (cos.f64 im) (+.f64 re (+.f64 1 (*.f64 re (*.f64 re 1/2)))))
(+.f64 (*.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))))
(fma.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (fma.f64 (cos.f64 im) re (cos.f64 im))))
(fma.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (*.f64 (+.f64 re 1) (cos.f64 im))))
(fma.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3)) (*.f64 (cos.f64 im) (+.f64 (+.f64 1 re) (*.f64 re (*.f64 re 1/2)))))
(*.f64 (cos.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re)))))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(exp.f64 re)
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (exp.f64 re))
(fma.f64 -1/2 (*.f64 (*.f64 im im) (exp.f64 re)) (exp.f64 re))
(*.f64 (fma.f64 -1/2 (*.f64 im im) 1) (exp.f64 re))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (exp.f64 re)))
(fma.f64 -1/2 (*.f64 (*.f64 im im) (exp.f64 re)) (fma.f64 1/24 (*.f64 (pow.f64 im 4) (exp.f64 re)) (exp.f64 re)))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (fma.f64 (pow.f64 im 4) 1/24 (*.f64 im (*.f64 -1/2 im)))))
(*.f64 (exp.f64 re) (fma.f64 (pow.f64 im 4) 1/24 (fma.f64 -1/2 (*.f64 im im) 1)))
(*.f64 (exp.f64 re) (fma.f64 -1/2 (*.f64 im im) (fma.f64 (pow.f64 im 4) 1/24 1)))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (+.f64 (exp.f64 re) (*.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6))))))
(fma.f64 -1/2 (*.f64 (*.f64 im im) (exp.f64 re)) (fma.f64 1/24 (*.f64 (pow.f64 im 4) (exp.f64 re)) (+.f64 (exp.f64 re) (*.f64 (*.f64 -1/720 (exp.f64 re)) (pow.f64 im 6)))))
(fma.f64 -1/2 (*.f64 (*.f64 im im) (exp.f64 re)) (fma.f64 1/24 (*.f64 (pow.f64 im 4) (exp.f64 re)) (fma.f64 -1/720 (*.f64 (pow.f64 im 6) (exp.f64 re)) (exp.f64 re))))
(+.f64 (*.f64 (fma.f64 (pow.f64 im 6) -1/720 1) (exp.f64 re)) (*.f64 (exp.f64 re) (fma.f64 (pow.f64 im 4) 1/24 (*.f64 im (*.f64 -1/2 im)))))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (fma.f64 (pow.f64 im 4) 1/24 (fma.f64 -1/2 (*.f64 im im) (*.f64 (pow.f64 im 6) -1/720)))))
(*.f64 (exp.f64 re) (+.f64 1 (fma.f64 -1/2 (*.f64 im im) (fma.f64 (pow.f64 im 4) 1/24 (*.f64 (pow.f64 im 6) -1/720)))))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))

prune245.0ms (7.7%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New1030103
Fresh011
Picked011
Done011
Total1033106
Error
0b
Counts
106 → 3
Alt Table
StatusErrorProgram
0.1b
(*.f64 (exp.f64 re) (log1p.f64 (expm1.f64 (cos.f64 im))))
0.2b
(*.f64 (exp.f64 re) (cbrt.f64 (pow.f64 (cos.f64 im) 3)))
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))
Compiler

Compiled 1216 to 646 computations (46.9% saved)

localize7.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (exp.f64 re) (cbrt.f64 (pow.f64 (cos.f64 im) 3)))
0.0b
(cos.f64 im)
0.3b
(cbrt.f64 (pow.f64 (cos.f64 im) 3))
0.3b
(pow.f64 (cos.f64 im) 3)

series5.0ms (0.1%)

Counts
3 → 40
Calls

12 calls:

TimeVariablePointExpression
1.0ms
im
@0
(pow.f64 (cos.f64 im) 3)
1.0ms
im
@-inf
(pow.f64 (cos.f64 im) 3)
1.0ms
im
@inf
(pow.f64 (cos.f64 im) 3)
0.0ms
re
@0
(*.f64 (exp.f64 re) (cbrt.f64 (pow.f64 (cos.f64 im) 3)))
0.0ms
im
@0
(*.f64 (exp.f64 re) (cbrt.f64 (pow.f64 (cos.f64 im) 3)))

rewrite46.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
700×pow1_binary64
651×add-log-exp_binary64
651×log1p-expm1-u_binary64
651×expm1-log1p-u_binary64
79×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify62.0ms (2%)

Algorithm
egg-herbie
Rules
1884×fma-def_binary64
421×*-commutative_binary64
236×distribute-lft-out_binary64
179×unswap-sqr_binary64
178×sqr-pow_binary64
Iterations

Useful iterations: 8 (0.0ms)

IterNodesCost
060408
1155402
2396380
31259367
41889365
52650365
62868365
73139365
83673353
Stop Event
node limit
Counts
95 → 83
Calls
Call 1
Inputs
1
(+.f64 1 (*.f64 -3/2 (pow.f64 im 2)))
(+.f64 1 (+.f64 (*.f64 -3/2 (pow.f64 im 2)) (*.f64 7/8 (pow.f64 im 4))))
(+.f64 (*.f64 -61/240 (pow.f64 im 6)) (+.f64 1 (+.f64 (*.f64 -3/2 (pow.f64 im 2)) (*.f64 7/8 (pow.f64 im 4)))))
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 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6)))))
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im)))
(+.f64 (*.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(exp.f64 re)
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (exp.f64 re))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (exp.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (+.f64 (exp.f64 re) (*.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6))))))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
Outputs
1
(+.f64 1 (*.f64 -3/2 (pow.f64 im 2)))
(+.f64 1 (*.f64 -3/2 (*.f64 im im)))
(fma.f64 -3/2 (*.f64 im im) 1)
(+.f64 1 (+.f64 (*.f64 -3/2 (pow.f64 im 2)) (*.f64 7/8 (pow.f64 im 4))))
(+.f64 1 (fma.f64 -3/2 (*.f64 im im) (*.f64 7/8 (pow.f64 im 4))))
(+.f64 (fma.f64 -3/2 (*.f64 im im) 1) (*.f64 7/8 (pow.f64 im 4)))
(fma.f64 -3/2 (*.f64 im im) (fma.f64 7/8 (pow.f64 im 4) 1))
(+.f64 (*.f64 -61/240 (pow.f64 im 6)) (+.f64 1 (+.f64 (*.f64 -3/2 (pow.f64 im 2)) (*.f64 7/8 (pow.f64 im 4)))))
(fma.f64 -61/240 (pow.f64 im 6) (+.f64 1 (fma.f64 -3/2 (*.f64 im im) (*.f64 7/8 (pow.f64 im 4)))))
(+.f64 (fma.f64 -3/2 (*.f64 im im) (*.f64 7/8 (pow.f64 im 4))) (fma.f64 -61/240 (pow.f64 im 6) 1))
(fma.f64 -61/240 (pow.f64 im 6) (fma.f64 -3/2 (*.f64 im im) (fma.f64 7/8 (pow.f64 im 4) 1)))
(fma.f64 -3/2 (*.f64 im im) (fma.f64 -61/240 (pow.f64 im 6) (fma.f64 7/8 (pow.f64 im 4) 1)))
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 1/24 (pow.f64 im 4))))
(+.f64 1 (fma.f64 -1/2 (*.f64 im im) (*.f64 (pow.f64 im 4) 1/24)))
(+.f64 (fma.f64 (*.f64 im im) -1/2 1) (*.f64 (pow.f64 im 4) 1/24))
(fma.f64 im (*.f64 im -1/2) (fma.f64 (pow.f64 im 4) 1/24 1))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6)))))
(+.f64 1 (fma.f64 -1/2 (*.f64 im im) (fma.f64 1/24 (pow.f64 im 4) (*.f64 (pow.f64 im 6) -1/720))))
(+.f64 (fma.f64 (*.f64 im im) -1/2 1) (fma.f64 (pow.f64 im 4) 1/24 (*.f64 (pow.f64 im 6) -1/720)))
(+.f64 (fma.f64 im (*.f64 im -1/2) (*.f64 (pow.f64 im 4) 1/24)) (fma.f64 (pow.f64 im 6) -1/720 1))
(+.f64 (fma.f64 im (*.f64 im -1/2) 1) (fma.f64 (pow.f64 im 4) 1/24 (*.f64 (pow.f64 im 6) -1/720)))
(fma.f64 im (*.f64 im -1/2) (fma.f64 (pow.f64 im 4) 1/24 (fma.f64 (pow.f64 im 6) -1/720 1)))
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(fma.f64 (cos.f64 im) re (cos.f64 im))
(*.f64 (+.f64 re 1) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 1 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im)))
(fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (fma.f64 (cos.f64 im) re (cos.f64 im)))
(fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (*.f64 (+.f64 re 1) (cos.f64 im)))
(*.f64 (cos.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)))
(*.f64 (cos.f64 im) (+.f64 1 (+.f64 re (*.f64 1/2 (*.f64 re re)))))
(*.f64 (cos.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1))
(+.f64 (*.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))))
(fma.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (fma.f64 (cos.f64 im) re (cos.f64 im))))
(fma.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (cos.f64 im) (*.f64 re re)) (*.f64 (+.f64 re 1) (cos.f64 im))))
(fma.f64 (cos.f64 im) (*.f64 1/6 (pow.f64 re 3)) (*.f64 (cos.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re))))
(*.f64 (cos.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
(*.f64 (cos.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(fma.f64 (cos.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (cos.f64 im))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(exp.f64 re)
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (exp.f64 re))
(fma.f64 -1/2 (*.f64 (*.f64 im im) (exp.f64 re)) (exp.f64 re))
(fma.f64 -1/2 (*.f64 im (*.f64 im (exp.f64 re))) (exp.f64 re))
(*.f64 (fma.f64 im (*.f64 im -1/2) 1) (exp.f64 re))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (exp.f64 re)))
(fma.f64 -1/2 (*.f64 (*.f64 im im) (exp.f64 re)) (fma.f64 1/24 (*.f64 (pow.f64 im 4) (exp.f64 re)) (exp.f64 re)))
(fma.f64 -1/2 (*.f64 im (*.f64 im (exp.f64 re))) (fma.f64 1/24 (*.f64 (pow.f64 im 4) (exp.f64 re)) (exp.f64 re)))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) (*.f64 (pow.f64 im 4) 1/24))))
(*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) (fma.f64 (pow.f64 im 4) 1/24 1)))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (+.f64 (exp.f64 re) (*.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6))))))
(fma.f64 -1/2 (*.f64 (*.f64 im im) (exp.f64 re)) (fma.f64 1/24 (*.f64 (pow.f64 im 4) (exp.f64 re)) (+.f64 (exp.f64 re) (*.f64 -1/720 (*.f64 (pow.f64 im 6) (exp.f64 re))))))
(fma.f64 -1/2 (*.f64 im (*.f64 im (exp.f64 re))) (fma.f64 1/24 (*.f64 (pow.f64 im 4) (exp.f64 re)) (fma.f64 -1/720 (*.f64 (pow.f64 im 6) (exp.f64 re)) (exp.f64 re))))
(+.f64 (*.f64 (fma.f64 (pow.f64 im 4) 1/24 1) (exp.f64 re)) (*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) (*.f64 (pow.f64 im 6) -1/720))))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) (fma.f64 (pow.f64 im 4) 1/24 (*.f64 (pow.f64 im 6) -1/720)))))
(*.f64 (exp.f64 re) (+.f64 (fma.f64 im (*.f64 im -1/2) 1) (fma.f64 (pow.f64 im 4) 1/24 (*.f64 (pow.f64 im 6) -1/720))))
(*.f64 (exp.f64 re) (fma.f64 im (*.f64 im -1/2) (fma.f64 (pow.f64 im 4) 1/24 (fma.f64 (pow.f64 im 6) -1/720 1))))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (cos.f64 im) (exp.f64 re))

prune299.0ms (9.4%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New1060106
Fresh000
Picked011
Done022
Total1063109
Error
0b
Counts
109 → 3
Alt Table
StatusErrorProgram
0.1b
(*.f64 (exp.f64 re) (log1p.f64 (expm1.f64 (cos.f64 im))))
0.2b
(*.f64 (exp.f64 re) (cbrt.f64 (pow.f64 (cos.f64 im) 3)))
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))
Compiler

Compiled 1259 to 695 computations (44.8% saved)

regimes16.0ms (0.5%)

Accuracy

Total -0.2b remaining (-2817%)

Threshold costs -0.2b (-2817%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (log1p.f64 (expm1.f64 (cos.f64 im))))
(*.f64 (exp.f64 re) (cbrt.f64 (pow.f64 (cos.f64 im) 3)))
(*.f64 (exp.f64 re) (cos.f64 im))
Outputs
(*.f64 (exp.f64 re) (cos.f64 im))
Results
3.0ms0.0bre
4.0ms0.0bim
3.0ms0.0b(*.f64 (exp.f64 re) (cos.f64 im))
2.0ms0.0b(exp.f64 re)
3.0ms0.0b(cos.f64 im)
Compiler

Compiled 43 to 27 computations (37.2% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
178
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (cos.f64 im))
Outputs
(*.f64 (exp.f64 re) (cos.f64 im))

end14.0ms (0.4%)

Stop Event
done
Compiler

Compiled 14 to 10 computations (28.6% saved)

Profiling

Loading profile data...