Details

Time bar (total: 7.2s)

analyze67.0ms (0.9%)

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%21.9%3.2%6
74.9%20.3%4.8%7
74.9%18%7.1%8
74.9%16.8%8.3%9
74.9%15.4%9.7%10
74.9%14.7%10.3%11
74.9%14%11.1%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample2.2s (30.2%)

Results
804.0ms6117×body256valid
650.0ms1425×body1024valid
296.0ms680×body1024invalid
232.0ms708×body512valid
128.0ms326×body512invalid
61.0ms478×body256invalid
5.0msbody2048valid

preprocess22.0ms (0.3%)

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) (sin.f64 im))
(*.f64 (exp.f64 im) (sin.f64 re))
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (exp.f64 im) (sin.f64 re))
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify6.0ms (0.1%)

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) (sin.f64 im))
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

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
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
Compiler

Compiled 7 to 5 computations (28.6% saved)

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
Compiler

Compiled 13 to 5 computations (61.5% saved)

series5.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite47.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
530×pow1_binary64
504×add-sqr-sqrt_binary64
483×add-log-exp_binary64
483×log1p-expm1-u_binary64
483×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify93.0ms (1.3%)

Algorithm
egg-herbie
Rules
828×distribute-lft-out_binary64
812×fma-def_binary64
569×unswap-sqr_binary64
547×distribute-rgt-in_binary64
403×associate-*l*_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
044296
1122294
2312274
3917250
42885249
53749249
65943249
77045249
87825249
Stop Event
node limit
Counts
35 → 27
Calls
Call 1
Inputs
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) im)
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (*.f64 (exp.f64 re) im))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (*.f64 (exp.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7))) (*.f64 (exp.f64 re) im))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
Outputs
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 re 1) (sin.f64 im))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 re 1))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)))))
(+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (*.f64 (*.f64 re re) (*.f64 (sin.f64 im) 1/2)))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 re (*.f64 re 1/2) 1)))
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re))))))
(+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (fma.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 (sin.f64 im) (*.f64 (pow.f64 re 3) 1/6))))
(fma.f64 (+.f64 re 1) (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (*.f64 1/6 (pow.f64 re 3)))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
(*.f64 (sin.f64 im) (+.f64 (fma.f64 re (*.f64 re 1/2) 1) (fma.f64 1/6 (pow.f64 re 3) re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) im)
(*.f64 im (exp.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (*.f64 (exp.f64 re) im))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (*.f64 im (exp.f64 re)))
(fma.f64 im (exp.f64 re) (*.f64 (pow.f64 im 3) (*.f64 (exp.f64 re) -1/6)))
(*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) im))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (*.f64 (exp.f64 re) im)))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (*.f64 im (exp.f64 re))))
(fma.f64 (exp.f64 re) (*.f64 1/120 (pow.f64 im 5)) (*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (exp.f64 re) (+.f64 (fma.f64 1/120 (pow.f64 im 5) im) (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (fma.f64 1/120 (pow.f64 im 5) im)))
(*.f64 (exp.f64 re) (+.f64 im (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7))) (*.f64 (exp.f64 re) im))))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (fma.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7)) (*.f64 im (exp.f64 re)))))
(+.f64 (*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (exp.f64 re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (exp.f64 re) (+.f64 (fma.f64 -1/6 (pow.f64 im 3) im) (fma.f64 -1/5040 (pow.f64 im 7) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (exp.f64 re) (+.f64 (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5))) (fma.f64 -1/5040 (pow.f64 im 7) im)))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))

eval6.0ms (0.1%)

Compiler

Compiled 292 to 144 computations (50.7% saved)

prune9.0ms (0.1%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New22527
Fresh000
Picked011
Done000
Total22628
Error
0.0b
Counts
28 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
22.4b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
20.5b
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
20.5b
(*.f64 (sin.f64 im) (+.f64 re 1))
20.8b
(sin.f64 im)
23.0b
(*.f64 (exp.f64 re) im)
Compiler

Compiled 89 to 61 computations (31.5% saved)

localize13.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
2.2b
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
Compiler

Compiled 27 to 13 computations (51.9% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
im
@inf
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
1.0ms
im
@0
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
1.0ms
re
@-inf
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
1.0ms
re
@inf
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
1.0ms
im
@-inf
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))

rewrite66.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
769×pow1_binary64
706×add-log-exp_binary64
706×log1p-expm1-u_binary64
706×expm1-log1p-u_binary64
690×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify75.0ms (1%)

Algorithm
egg-herbie
Rules
810×associate-+l+_binary64
652×associate-+r+_binary64
559×associate-*l*_binary64
468×associate-*r*_binary64
376×distribute-lft-out_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
046494
1139450
2374450
31418418
46152396
57787396
Stop Event
node limit
Counts
45 → 39
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)) 1/6) (pow.f64 im 3)) (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im))
(+.f64 (*.f64 (+.f64 1/120 (*.f64 1/120 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))) (pow.f64 im 5)) (+.f64 (*.f64 (-.f64 (*.f64 -1/6 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)) 1/6) (pow.f64 im 3)) (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)))
(+.f64 (*.f64 (+.f64 1/120 (*.f64 1/120 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))) (pow.f64 im 5)) (+.f64 (*.f64 (-.f64 (*.f64 -1/6 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)) 1/6) (pow.f64 im 3)) (+.f64 (*.f64 (-.f64 (*.f64 -1/5040 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)) 1/5040) (pow.f64 im 7)) (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im))))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
Outputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im)
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) im)
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)) 1/6) (pow.f64 im 3)) (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im))
(fma.f64 (fma.f64 -1/6 (fma.f64 1/2 (*.f64 re re) re) -1/6) (pow.f64 im 3) (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im))
(fma.f64 (fma.f64 -1/6 (fma.f64 1/2 (*.f64 re re) re) -1/6) (pow.f64 im 3) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im))
(fma.f64 (fma.f64 (*.f64 re re) -1/12 (fma.f64 re -1/6 -1/6)) (pow.f64 im 3) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 1/120 (*.f64 1/120 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))) (pow.f64 im 5)) (+.f64 (*.f64 (-.f64 (*.f64 -1/6 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)) 1/6) (pow.f64 im 3)) (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)))
(fma.f64 (+.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) re) 1/120)) (pow.f64 im 5) (fma.f64 (fma.f64 -1/6 (fma.f64 1/2 (*.f64 re re) re) -1/6) (pow.f64 im 3) (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)))
(fma.f64 (fma.f64 (fma.f64 1/2 (*.f64 re re) re) 1/120 1/120) (pow.f64 im 5) (fma.f64 (fma.f64 -1/6 (fma.f64 1/2 (*.f64 re re) re) -1/6) (pow.f64 im 3) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im)))
(fma.f64 (fma.f64 (*.f64 re re) -1/12 (fma.f64 re -1/6 -1/6)) (pow.f64 im 3) (fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im (*.f64 (fma.f64 (fma.f64 1/2 (*.f64 re re) re) 1/120 1/120) (pow.f64 im 5))))
(fma.f64 (fma.f64 (*.f64 re re) 1/240 (fma.f64 re 1/120 1/120)) (pow.f64 im 5) (*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (+.f64 (+.f64 im (*.f64 -1/6 (pow.f64 im 3))) (*.f64 1/120 (pow.f64 im 5))))
(+.f64 (*.f64 (+.f64 1/120 (*.f64 1/120 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))) (pow.f64 im 5)) (+.f64 (*.f64 (-.f64 (*.f64 -1/6 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)) 1/6) (pow.f64 im 3)) (+.f64 (*.f64 (-.f64 (*.f64 -1/5040 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)) 1/5040) (pow.f64 im 7)) (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im))))
(fma.f64 (+.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) re) 1/120)) (pow.f64 im 5) (fma.f64 (fma.f64 -1/6 (fma.f64 1/2 (*.f64 re re) re) -1/6) (pow.f64 im 3) (fma.f64 (fma.f64 -1/5040 (fma.f64 1/2 (*.f64 re re) re) -1/5040) (pow.f64 im 7) (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im))))
(fma.f64 (fma.f64 (fma.f64 1/2 (*.f64 re re) re) 1/120 1/120) (pow.f64 im 5) (fma.f64 (fma.f64 -1/6 (fma.f64 1/2 (*.f64 re re) re) -1/6) (pow.f64 im 3) (fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im (*.f64 (fma.f64 (fma.f64 1/2 (*.f64 re re) re) -1/5040 -1/5040) (pow.f64 im 7)))))
(fma.f64 (fma.f64 (*.f64 re re) -1/12 (fma.f64 re -1/6 -1/6)) (pow.f64 im 3) (fma.f64 (fma.f64 (fma.f64 1/2 (*.f64 re re) re) 1/120 1/120) (pow.f64 im 5) (fma.f64 (fma.f64 (*.f64 re re) -1/10080 (fma.f64 re -1/5040 -1/5040)) (pow.f64 im 7) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im))))
(+.f64 (*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(fma.f64 re (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 re 1) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 1/2 (*.f64 re re)) (sin.f64 im))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 1/2 (*.f64 re re)) (sin.f64 im))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (sin.f64 im))

localize4.0ms (0.1%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 10 to 4 computations (60% saved)

series3.0ms (0%)

Counts
1 → 4
Calls

6 calls:

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

rewrite39.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
435×pow1_binary64
414×add-sqr-sqrt_binary64
409×*-un-lft-identity_binary64
397×add-log-exp_binary64
397×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify121.0ms (1.7%)

Algorithm
egg-herbie
Rules
709×distribute-lft-out_binary64
619×*-commutative_binary64
531×associate-+l+_binary64
442×sqr-pow_binary64
431×fma-def_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01846
15346
213642
340437
4149937
5239837
6402337
7415537
8440037
9475637
10550237
11634637
12710737
13763837
Stop Event
node limit
Counts
18 → 21
Calls
Call 1
Inputs
im
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)))
Outputs
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(fma.f64 im re (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 im re (fma.f64 1/2 (*.f64 im (*.f64 re re)) im)))
(fma.f64 im (fma.f64 1/6 (pow.f64 re 3) re) (*.f64 im (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/6 (pow.f64 re 3) (*.f64 re (fma.f64 re 1/2 1))) im)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
Compiler

Compiled 16 to 9 computations (43.8% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
im
@0
(*.f64 (sin.f64 im) (+.f64 re 1))
1.0ms
im
@inf
(*.f64 (sin.f64 im) (+.f64 re 1))
0.0ms
im
@-inf
(*.f64 (sin.f64 im) (+.f64 re 1))
0.0ms
re
@-inf
(*.f64 (sin.f64 im) (+.f64 re 1))
0.0ms
re
@inf
(*.f64 (sin.f64 im) (+.f64 re 1))

rewrite50.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
729×pow1_binary64
676×log1p-expm1-u_binary64
676×expm1-log1p-u_binary64
675×add-log-exp_binary64
660×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify106.0ms (1.5%)

Algorithm
egg-herbie
Rules
1174×distribute-rgt-in_binary64
845×distribute-lft-in_binary64
736×fma-def_binary64
426×unswap-sqr_binary64
372×distribute-lft-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
030274
184274
2249254
3929240
43139240
54762240
65206240
75914240
86015240
96155240
106349240
Stop Event
node limit
Counts
48 → 37
Calls
Call 1
Inputs
(*.f64 (+.f64 1 re) im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im)))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 re) im) (*.f64 -1/5040 (*.f64 (+.f64 1 re) (pow.f64 im 7))))))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (sin.f64 im) re)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (sin.f64 im) re)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
Outputs
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im))
(fma.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3)) (*.f64 (+.f64 1 re) im))
(fma.f64 (+.f64 1 re) im (*.f64 (+.f64 1 re) (*.f64 (pow.f64 im 3) -1/6)))
(*.f64 (+.f64 1 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (+.f64 1 re) (fma.f64 -1/6 (pow.f64 im 3) im))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im)))
(fma.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3)) (*.f64 (+.f64 1 re) im)))
(fma.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5)) (fma.f64 (+.f64 1 re) im (*.f64 (+.f64 1 re) (*.f64 (pow.f64 im 3) -1/6))))
(fma.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6) (*.f64 (+.f64 1 re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(*.f64 (+.f64 1 re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (fma.f64 -1/6 (pow.f64 im 3) im)))
(*.f64 (+.f64 1 re) (+.f64 im (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5)))))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 re) im) (*.f64 -1/5040 (*.f64 (+.f64 1 re) (pow.f64 im 7))))))
(fma.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3)) (fma.f64 (+.f64 1 re) im (*.f64 -1/5040 (*.f64 (+.f64 1 re) (pow.f64 im 7))))))
(fma.f64 (pow.f64 im 5) (fma.f64 re 1/120 1/120) (fma.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6) (fma.f64 (pow.f64 im 7) (fma.f64 re -1/5040 -1/5040) (fma.f64 re im im))))
(*.f64 (+.f64 1 re) (+.f64 (fma.f64 -1/6 (pow.f64 im 3) im) (fma.f64 -1/5040 (pow.f64 im 7) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (+.f64 1 re) (+.f64 (fma.f64 -1/6 (pow.f64 im 3) (*.f64 -1/5040 (pow.f64 im 7))) (fma.f64 1/120 (pow.f64 im 5) im)))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) re)
(*.f64 re (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) re)
(*.f64 re (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))

localize12.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
0.2b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
0.3b
(sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))
Compiler

Compiled 28 to 9 computations (67.9% saved)

series9.0ms (0.1%)

Counts
2 → 40
Calls

12 calls:

TimeVariablePointExpression
1.0ms
im
@0
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
1.0ms
im
@0
(sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))
1.0ms
re
@0
(sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))
1.0ms
re
@0
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
1.0ms
im
@inf
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)

rewrite53.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
681×pow1_binary64
626×add-log-exp_binary64
626×log1p-expm1-u_binary64
626×expm1-log1p-u_binary64
610×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0918
117918
2177018
Stop Event
node limit
Counts
2 → 52
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) (cbrt.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))) (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 1/4) (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (+.f64 re (log.f64 (sin.f64 im))) 1/2))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (exp.f64 re) (sin.f64 im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (exp.f64 re) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 im) (exp.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (exp.f64 re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (*.f64 (cbrt.f64 (sin.f64 im)) (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) (pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))) (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2) (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (exp.f64 re)) 2) (*.f64 (cbrt.f64 (exp.f64 re)) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sqrt.f64 (exp.f64 re)) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 1/4) (*.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 1/4) (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 1/4)) (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (exp.f64 re) (pow.f64 (cbrt.f64 (sin.f64 im)) 2)) (cbrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (exp.f64 re) (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 im) (pow.f64 (cbrt.f64 (exp.f64 re)) 2)) (cbrt.f64 (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (sqrt.f64 (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))) (cbrt.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) (sqrt.f64 (exp.f64 re))) (sqrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 im)) (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (exp.f64 re) 3) (pow.f64 (sin.f64 im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (exp.f64 re) (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (exp.f64 re) (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 re (log.f64 (sin.f64 im))))))))

simplify55.0ms (0.8%)

Algorithm
egg-herbie
Rules
725×fma-neg_binary64
404×*-commutative_binary64
381×distribute-rgt-in_binary64
368×distribute-lft-in_binary64
326×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
050568
1136554
2404512
31884462
45611462
Stop Event
node limit
Counts
92 → 67
Calls
Call 1
Inputs
(sqrt.f64 (sin.f64 im))
(+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re)))
(+.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2)) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 (sin.f64 im))))) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re))))
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (sin.f64 im))) (*.f64 (pow.f64 re 3) (-.f64 (*.f64 1/6 (sin.f64 im)) (*.f64 1/2 (-.f64 (*.f64 1/2 (sin.f64 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2))))))) (+.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2)) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 (sin.f64 im))))) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re)))))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 (-.f64 (+.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/4 (sin.f64 im))) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2)) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 (-.f64 (+.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/4 (sin.f64 im))) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2)) (pow.f64 re 2)) (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
Outputs
(sqrt.f64 (sin.f64 im))
(+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re)))
(fma.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re) (sqrt.f64 (sin.f64 im)))
(*.f64 (+.f64 (*.f64 1/2 re) 1) (sqrt.f64 (sin.f64 im)))
(*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 1 (*.f64 1/2 re)))
(+.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2)) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 (sin.f64 im))))) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re))))
(+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (+.f64 (*.f64 (-.f64 (*.f64 (sin.f64 im) 1/2) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)) (*.f64 (*.f64 re re) (sqrt.f64 (/.f64 1 (sin.f64 im))))) (*.f64 (sqrt.f64 (sin.f64 im)) re))))
(fma.f64 1/2 (fma.f64 (-.f64 (*.f64 (sin.f64 im) 1/2) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)) (*.f64 (*.f64 re re) (sqrt.f64 (/.f64 1 (sin.f64 im)))) (*.f64 (sqrt.f64 (sin.f64 im)) re)) (sqrt.f64 (sin.f64 im)))
(fma.f64 1/2 (fma.f64 (sqrt.f64 (sin.f64 im)) re (*.f64 re (*.f64 re (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (sin.f64 im) -1/4)) (sqrt.f64 (/.f64 1 (sin.f64 im))))))) (sqrt.f64 (sin.f64 im)))
(fma.f64 1/2 (*.f64 re (+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (/.f64 1 (sin.f64 im))) (*.f64 re (*.f64 (sin.f64 im) 1/4))))) (sqrt.f64 (sin.f64 im)))
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (sin.f64 im))) (*.f64 (pow.f64 re 3) (-.f64 (*.f64 1/6 (sin.f64 im)) (*.f64 1/2 (-.f64 (*.f64 1/2 (sin.f64 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2))))))) (+.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2)) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 (sin.f64 im))))) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re)))))
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (sin.f64 im))) (*.f64 (pow.f64 re 3) (-.f64 (*.f64 (sin.f64 im) 1/6) (*.f64 1/2 (-.f64 (*.f64 (sin.f64 im) 1/2) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)))))) (+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (+.f64 (*.f64 (-.f64 (*.f64 (sin.f64 im) 1/2) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)) (*.f64 (*.f64 re re) (sqrt.f64 (/.f64 1 (sin.f64 im))))) (*.f64 (sqrt.f64 (sin.f64 im)) re)))))
(fma.f64 1/2 (*.f64 (fma.f64 (sin.f64 im) 1/6 (*.f64 (-.f64 (*.f64 (sin.f64 im) 1/2) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)) -1/2)) (*.f64 (sqrt.f64 (/.f64 1 (sin.f64 im))) (pow.f64 re 3))) (fma.f64 1/2 (fma.f64 (-.f64 (*.f64 (sin.f64 im) 1/2) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)) (*.f64 (*.f64 re re) (sqrt.f64 (/.f64 1 (sin.f64 im)))) (*.f64 (sqrt.f64 (sin.f64 im)) re)) (sqrt.f64 (sin.f64 im))))
(fma.f64 1/2 (*.f64 (pow.f64 re 3) (*.f64 (sqrt.f64 (/.f64 1 (sin.f64 im))) (fma.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (sin.f64 im) -1/4)) -1/2 (*.f64 (sin.f64 im) 1/6)))) (fma.f64 1/2 (fma.f64 (sqrt.f64 (sin.f64 im)) re (*.f64 re (*.f64 re (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (sin.f64 im) -1/4)) (sqrt.f64 (/.f64 1 (sin.f64 im))))))) (sqrt.f64 (sin.f64 im))))
(+.f64 (*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 1 (*.f64 1/2 re))) (*.f64 (*.f64 1/2 (*.f64 re (*.f64 re (sqrt.f64 (/.f64 1 (sin.f64 im)))))) (+.f64 (*.f64 re (fma.f64 1/2 (*.f64 (sin.f64 im) -1/4) (*.f64 (sin.f64 im) 1/6))) (*.f64 (sin.f64 im) 1/4))))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 re 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 re 1))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 (-.f64 (+.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/4 (sin.f64 im))) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2)) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 (*.f64 re re) (-.f64 (*.f64 (sin.f64 im) 3/4) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)))))
(+.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (-.f64 (*.f64 (sin.f64 im) 3/4) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)) (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) re (fma.f64 (*.f64 re re) (fma.f64 (sin.f64 im) 3/4 (*.f64 (sin.f64 im) -1/4)) (sin.f64 im)))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 (-.f64 (+.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/4 (sin.f64 im))) (pow.f64 (*.f64 1/2 (sqrt.f64 (sin.f64 im))) 2)) (pow.f64 re 2)) (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (fma.f64 (-.f64 (*.f64 (sin.f64 im) 3/4) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)) (*.f64 re re) (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))))))
(+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (fma.f64 (*.f64 re re) (-.f64 (*.f64 (sin.f64 im) 3/4) (pow.f64 (*.f64 (sqrt.f64 (sin.f64 im)) 1/2) 2)) (*.f64 (sin.f64 im) (*.f64 1/6 (pow.f64 re 3)))))
(+.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 (sin.f64 im) 3/4 (*.f64 (sin.f64 im) -1/4)) (*.f64 (sin.f64 im) (+.f64 (*.f64 (pow.f64 re 3) 1/6) re))))
(fma.f64 (+.f64 re 1) (sin.f64 im) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) (+.f64 (*.f64 re 1/6) 1/2)))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))

eval47.0ms (0.6%)

Compiler

Compiled 2589 to 1284 computations (50.4% saved)

prune39.0ms (0.5%)

Pruning

14 alts after pruning (10 fresh and 4 done)

PrunedKeptTotal
New18110191
Fresh000
Picked101
Done145
Total18314197
Error
0.0b
Counts
197 → 14
Alt Table
Click to see full alt table
StatusErrorProgram
42.6b
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
0.0b
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (sqrt.f64 (exp.f64 re)))
61.3b
(*.f64 (sin.f64 im) re)
42.5b
(+.f64 (*.f64 re im) im)
42.4b
im
20.5b
(*.f64 (sin.f64 im) (+.f64 re 1))
34.1b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) im)) 2)
36.8b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
42.5b
(*.f64 (+.f64 1 re) im)
20.8b
(sin.f64 im)
61.3b
(*.f64 (*.f64 1/2 (*.f64 re re)) (sin.f64 im))
20.5b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
23.0b
(*.f64 (exp.f64 re) im)
Compiler

Compiled 212 to 148 computations (30.2% saved)

localize11.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (exp.f64 re))
0.0b
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (sqrt.f64 (exp.f64 re)))
0.0b
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))
Compiler

Compiled 27 to 7 computations (74.1% saved)

series7.0ms (0.1%)

Counts
3 → 36
Calls

15 calls:

TimeVariablePointExpression
1.0ms
im
@-inf
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))
1.0ms
im
@0
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))
1.0ms
re
@-inf
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))
1.0ms
re
@inf
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))
1.0ms
im
@inf
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))

rewrite54.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
709×pow1_binary64
649×add-log-exp_binary64
649×log1p-expm1-u_binary64
649×expm1-log1p-u_binary64
632×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0823
115423
2181723
Stop Event
node limit
Counts
3 → 47
Calls
Call 1
Inputs
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (sqrt.f64 (exp.f64 re)))
(sqrt.f64 (exp.f64 re))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (exp.f64 re) (pow.f64 (sin.f64 im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sqrt.f64 (exp.f64 re))) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (exp.f64 re) 3/2) (pow.f64 (sin.f64 im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 re 1/2) (log.f64 (sin.f64 im))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 im)) (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (sin.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/2) (pow.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) 3) (pow.f64 (exp.f64 re) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 im) (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (sin.f64 im)) re))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (exp.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (exp.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (exp.f64 re)) (cbrt.f64 (sqrt.f64 (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (exp.f64 re))) (cbrt.f64 (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 re) 1/4) (pow.f64 (exp.f64 re) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (exp.f64 re)) 2)) (sqrt.f64 (cbrt.f64 (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (exp.f64 re)) 2) 1/2) (pow.f64 (cbrt.f64 (exp.f64 re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 re) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (exp.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 re) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (exp.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 re) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (exp.f64 re) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 re 1/2))))))

simplify121.0ms (1.7%)

Algorithm
egg-herbie
Rules
477×fma-def_binary64
456×*-commutative_binary64
411×distribute-lft-out_binary64
381×cube-div_binary64
320×associate-/l/_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
074536
1209530
2579472
31799437
42588435
53163435
63732435
73961435
84458435
96179435
107187435
Stop Event
node limit
Counts
83 → 83
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (exp.f64 re)) im)
(+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 3))) (*.f64 (sqrt.f64 (exp.f64 re)) im))
(+.f64 (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 3))) (*.f64 (sqrt.f64 (exp.f64 re)) im)))
(+.f64 (*.f64 -1/5040 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 7))) (+.f64 (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 3))) (*.f64 (sqrt.f64 (exp.f64 re)) im))))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 1/2 (*.f64 (sin.f64 im) re)))
(+.f64 (sin.f64 im) (+.f64 (*.f64 1/8 (*.f64 (sin.f64 im) (pow.f64 re 2))) (*.f64 1/2 (*.f64 (sin.f64 im) re))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 1/8 (*.f64 (sin.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 im) re)) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))))
(*.f64 (exp.f64 re) im)
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (*.f64 (exp.f64 re) im))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (*.f64 (exp.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7))) (*.f64 (exp.f64 re) im))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
1
(+.f64 1 (*.f64 1/2 re))
(+.f64 1 (+.f64 (*.f64 1/2 re) (*.f64 1/8 (pow.f64 re 2))))
(+.f64 (*.f64 1/48 (pow.f64 re 3)) (+.f64 1 (+.f64 (*.f64 1/2 re) (*.f64 1/8 (pow.f64 re 2)))))
Outputs
(*.f64 (sqrt.f64 (exp.f64 re)) im)
(+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 3))) (*.f64 (sqrt.f64 (exp.f64 re)) im))
(fma.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 3)) (*.f64 (sqrt.f64 (exp.f64 re)) im))
(fma.f64 (sqrt.f64 (exp.f64 re)) im (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (pow.f64 im 3) -1/6)))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 3))) (*.f64 (sqrt.f64 (exp.f64 re)) im)))
(fma.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 3)) (*.f64 (sqrt.f64 (exp.f64 re)) im)))
(fma.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 5)) (fma.f64 (sqrt.f64 (exp.f64 re)) im (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (pow.f64 im 3) -1/6))))
(fma.f64 (sqrt.f64 (exp.f64 re)) im (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 -1/5040 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 7))) (+.f64 (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 3))) (*.f64 (sqrt.f64 (exp.f64 re)) im))))
(fma.f64 -1/5040 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 7)) (fma.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 3)) (*.f64 (sqrt.f64 (exp.f64 re)) im))))
(fma.f64 -1/5040 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 7)) (fma.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 5)) (fma.f64 (sqrt.f64 (exp.f64 re)) im (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (pow.f64 im 3) -1/6)))))
(+.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))) (+.f64 im (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 im (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))))))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 1/2 (*.f64 (sin.f64 im) re)))
(+.f64 (sin.f64 im) (*.f64 1/2 (*.f64 re (sin.f64 im))))
(fma.f64 1/2 (*.f64 re (sin.f64 im)) (sin.f64 im))
(*.f64 (fma.f64 re 1/2 1) (sin.f64 im))
(*.f64 (sin.f64 im) (fma.f64 re 1/2 1))
(+.f64 (sin.f64 im) (+.f64 (*.f64 1/8 (*.f64 (sin.f64 im) (pow.f64 re 2))) (*.f64 1/2 (*.f64 (sin.f64 im) re))))
(+.f64 (sin.f64 im) (fma.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 1/2 (*.f64 re (sin.f64 im)))))
(+.f64 (fma.f64 1/2 (*.f64 re (sin.f64 im)) (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 1/8 (*.f64 re re))))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 re (+.f64 1/2 (*.f64 re 1/8)))))
(*.f64 (sin.f64 im) (fma.f64 re 1/2 (fma.f64 re (*.f64 re 1/8) 1)))
(*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/8) (fma.f64 re 1/2 1)))
(+.f64 (sin.f64 im) (+.f64 (*.f64 1/8 (*.f64 (sin.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 im) re)) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))))
(+.f64 (sin.f64 im) (fma.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re)) (fma.f64 1/2 (*.f64 re (sin.f64 im)) (*.f64 (*.f64 1/48 (sin.f64 im)) (pow.f64 re 3)))))
(+.f64 (sin.f64 im) (fma.f64 1/8 (*.f64 re (*.f64 re (sin.f64 im))) (fma.f64 1/2 (*.f64 re (sin.f64 im)) (*.f64 (pow.f64 re 3) (*.f64 (sin.f64 im) 1/48)))))
(+.f64 (*.f64 (fma.f64 re 1/2 1) (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 (*.f64 re re) (+.f64 1/8 (*.f64 re 1/48)))))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48)))))))
(*.f64 (sin.f64 im) (fma.f64 1/48 (pow.f64 re 3) (fma.f64 re 1/2 (fma.f64 re (*.f64 re 1/8) 1))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48)))))))
(*.f64 (sin.f64 im) (fma.f64 1/48 (pow.f64 re 3) (fma.f64 re (*.f64 re 1/8) (fma.f64 re 1/2 1))))
(*.f64 (exp.f64 re) im)
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (*.f64 (exp.f64 re) im))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (*.f64 (exp.f64 re) im))
(fma.f64 (exp.f64 re) im (*.f64 (pow.f64 im 3) (*.f64 (exp.f64 re) -1/6)))
(*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (*.f64 (exp.f64 re) im)))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (*.f64 (exp.f64 re) im)))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 (exp.f64 re) im (*.f64 (exp.f64 re) (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 (exp.f64 re) im (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (exp.f64 re) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7))) (*.f64 (exp.f64 re) im))))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (fma.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7)) (*.f64 (exp.f64 re) im))))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (fma.f64 (exp.f64 re) im (*.f64 (exp.f64 re) (*.f64 (pow.f64 im 7) -1/5040)))))
(+.f64 (*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (exp.f64 re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (exp.f64 re) (+.f64 (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5))) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (exp.f64 re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (exp.f64 re) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (exp.f64 re) (+.f64 im (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 re 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 re 1))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)))))
(+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 (*.f64 re re) 1/2)))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 (fma.f64 re 1/2 1) re)))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (fma.f64 re 1/2 1))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re))))))
(+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 (pow.f64 re 3) (*.f64 (sin.f64 im) 1/6))))
(fma.f64 (+.f64 re 1) (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 (pow.f64 re 3) 1/6) (*.f64 1/2 (*.f64 re re)))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) (sin.f64 im))
1
(+.f64 1 (*.f64 1/2 re))
(+.f64 1 (*.f64 re 1/2))
(fma.f64 re 1/2 1)
(+.f64 1 (+.f64 (*.f64 1/2 re) (*.f64 1/8 (pow.f64 re 2))))
(+.f64 1 (fma.f64 1/2 re (*.f64 1/8 (*.f64 re re))))
(+.f64 1 (fma.f64 re 1/2 (*.f64 1/8 (*.f64 re re))))
(fma.f64 re 1/2 (fma.f64 re (*.f64 re 1/8) 1))
(fma.f64 re (*.f64 re 1/8) (fma.f64 re 1/2 1))
(+.f64 (*.f64 1/48 (pow.f64 re 3)) (+.f64 1 (+.f64 (*.f64 1/2 re) (*.f64 1/8 (pow.f64 re 2)))))
(fma.f64 1/48 (pow.f64 re 3) (+.f64 1 (fma.f64 1/2 re (*.f64 1/8 (*.f64 re re)))))
(+.f64 (fma.f64 re 1/2 (*.f64 1/8 (*.f64 re re))) (fma.f64 1/48 (pow.f64 re 3) 1))
(fma.f64 1/48 (pow.f64 re 3) (fma.f64 re 1/2 (fma.f64 re (*.f64 re 1/8) 1)))
(+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48))))))
(fma.f64 1/48 (pow.f64 re 3) (fma.f64 re (*.f64 re 1/8) (fma.f64 re 1/2 1)))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series3.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite45.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
604×pow1_binary64
560×add-log-exp_binary64
560×log1p-expm1-u_binary64
560×expm1-log1p-u_binary64
549×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
14×fma-def_binary64
associate-*r*_binary64
associate-*l*_binary64
*-lft-identity_binary64
*-rgt-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0654
11154
21654
32254
42854
54154
64554
74754
Stop Event
saturated
Counts
31 → 23
Calls
Call 1
Inputs
im
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(*.f64 re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
Outputs
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 re im)
(*.f64 im re)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 re im)
(*.f64 im re)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (sin.f64 im) re)
Compiler

Compiled 10 to 4 computations (60% saved)

series6.0ms (0.1%)

Counts
1 → 4
Calls

6 calls:

TimeVariablePointExpression
3.0ms
im
@0
(*.f64 (sin.f64 im) re)
0.0ms
re
@inf
(*.f64 (sin.f64 im) re)
0.0ms
re
@0
(*.f64 (sin.f64 im) re)
0.0ms
re
@-inf
(*.f64 (sin.f64 im) re)
0.0ms
im
@inf
(*.f64 (sin.f64 im) re)

rewrite37.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
462×pow1_binary64
440×add-sqr-sqrt_binary64
435×*-un-lft-identity_binary64
422×add-log-exp_binary64
422×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify109.0ms (1.5%)

Algorithm
egg-herbie
Rules
1106×fma-def_binary64
690×unswap-sqr_binary64
654×sqr-pow_binary64
596×cube-prod_binary64
429×fabs-mul_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
02376
16476
216673
348762
4140360
5227758
6257458
7311458
8404558
9418858
10441558
11480158
12539758
13627058
14737758
Stop Event
node limit
Counts
15 → 18
Calls
Call 1
Inputs
(*.f64 re im)
(+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (*.f64 re im))
(+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 re (pow.f64 im 5))) (*.f64 re im)))
(+.f64 (*.f64 -1/5040 (*.f64 re (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 re (pow.f64 im 5))) (*.f64 re im))))
Outputs
(*.f64 re im)
(+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (*.f64 re im))
(fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (*.f64 re im))
(fma.f64 re im (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(*.f64 re (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 re (fma.f64 -1/6 (pow.f64 im 3) im))
(+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 re (pow.f64 im 5))) (*.f64 re im)))
(fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (fma.f64 1/120 (*.f64 re (pow.f64 im 5)) (*.f64 re im)))
(fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (fma.f64 re im (*.f64 re (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 re (*.f64 -1/6 (pow.f64 im 3)) (*.f64 re (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(*.f64 re (+.f64 im (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 re (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) im)))
(*.f64 re (fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/6 (pow.f64 im 3) im)))
(+.f64 (*.f64 -1/5040 (*.f64 re (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 re (pow.f64 im 5))) (*.f64 re im))))
(fma.f64 -1/5040 (*.f64 re (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (fma.f64 1/120 (*.f64 re (pow.f64 im 5)) (*.f64 re im))))
(fma.f64 -1/5040 (*.f64 re (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (fma.f64 re im (*.f64 re (*.f64 (pow.f64 im 5) 1/120)))))
(fma.f64 re (*.f64 -1/6 (pow.f64 im 3)) (fma.f64 re (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 re (+.f64 (*.f64 1/120 (pow.f64 im 5)) im))))
(*.f64 re (+.f64 (fma.f64 1/120 (pow.f64 im 5) im) (fma.f64 -1/5040 (pow.f64 im 7) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 re (+.f64 im (fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/5040 (pow.f64 im 7) (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 re (fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/5040 (pow.f64 im 7) (fma.f64 -1/6 (pow.f64 im 3) im))))
(*.f64 re (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/5040 (pow.f64 im 7) im))))
(*.f64 re (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 -1/5040 (pow.f64 im 7) (fma.f64 1/120 (pow.f64 im 5) im))))

localize14.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
0.3b
(+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1)))
3.8b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
Compiler

Compiled 34 to 21 computations (38.2% saved)

series4.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite82.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
883×prod-diff_binary64
568×fma-def_binary64
422×log-prod_binary64
280×fma-neg_binary64
242×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify132.0ms (1.8%)

Algorithm
egg-herbie
Rules
1286×distribute-rgt-in_binary64
979×fma-def_binary64
426×unswap-sqr_binary64
383×distribute-lft-in_binary64
375×distribute-lft-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
038532
1108530
2301500
31092478
43742478
55459478
65921478
76640478
86743478
96883478
107077478
Stop Event
node limit
Counts
240 → 215
Calls
Call 1
Inputs
(*.f64 (+.f64 1 re) im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im)))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 re) im) (*.f64 -1/5040 (*.f64 (+.f64 1 re) (pow.f64 im 7))))))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (sin.f64 im) re)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (sin.f64 im) re)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
1
(+.f64 1 (*.f64 (+.f64 1 re) im))
(+.f64 1 (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im)))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 1 (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(+.f64 (sin.f64 im) 1)
(+.f64 1 (+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))
(+.f64 1 (+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))
(+.f64 1 (+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))
(*.f64 (sin.f64 im) re)
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(*.f64 (sin.f64 im) re)
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
Outputs
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im))
(fma.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3)) (*.f64 (+.f64 1 re) im))
(fma.f64 (+.f64 1 re) im (*.f64 (pow.f64 im 3) (+.f64 -1/6 (*.f64 -1/6 re))))
(*.f64 (+.f64 1 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (+.f64 1 re) (fma.f64 -1/6 (pow.f64 im 3) im))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im)))
(fma.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3)) (*.f64 (+.f64 1 re) im)))
(fma.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5)) (fma.f64 (+.f64 1 re) im (*.f64 (pow.f64 im 3) (+.f64 -1/6 (*.f64 -1/6 re)))))
(fma.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6) (fma.f64 (pow.f64 im 5) (fma.f64 re 1/120 1/120) (fma.f64 re im im)))
(*.f64 (+.f64 1 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (fma.f64 1/120 (pow.f64 im 5) im)))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 re) im) (*.f64 -1/5040 (*.f64 (+.f64 1 re) (pow.f64 im 7))))))
(fma.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3)) (fma.f64 (+.f64 1 re) im (*.f64 -1/5040 (*.f64 (+.f64 1 re) (pow.f64 im 7))))))
(fma.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3)) (fma.f64 (+.f64 1 re) im (*.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 1 re)))))
(fma.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6) (fma.f64 (pow.f64 im 5) (fma.f64 re 1/120 1/120) (*.f64 (+.f64 1 re) (+.f64 im (*.f64 -1/5040 (pow.f64 im 7))))))
(*.f64 (+.f64 1 re) (+.f64 (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5))) (fma.f64 -1/5040 (pow.f64 im 7) im)))
(*.f64 (+.f64 1 re) (+.f64 (fma.f64 -1/6 (pow.f64 im 3) im) (fma.f64 -1/5040 (pow.f64 im 7) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) re)
(*.f64 re (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) re)
(*.f64 re (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 1 re) (sin.f64 im))
1
(+.f64 1 (*.f64 (+.f64 1 re) im))
(fma.f64 (+.f64 1 re) im 1)
(+.f64 1 (fma.f64 re im im))
(+.f64 1 (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im)))
(+.f64 1 (fma.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3)) (*.f64 (+.f64 1 re) im)))
(+.f64 1 (fma.f64 (+.f64 1 re) im (*.f64 (pow.f64 im 3) (+.f64 -1/6 (*.f64 -1/6 re)))))
(+.f64 (fma.f64 re im im) (fma.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6) 1))
(fma.f64 (+.f64 1 re) (fma.f64 -1/6 (pow.f64 im 3) im) 1)
(+.f64 (*.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5))) (+.f64 1 (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3))) (*.f64 (+.f64 1 re) im))))
(fma.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5)) (+.f64 1 (fma.f64 -1/6 (*.f64 (+.f64 1 re) (pow.f64 im 3)) (*.f64 (+.f64 1 re) im))))
(+.f64 1 (fma.f64 1/120 (*.f64 (+.f64 1 re) (pow.f64 im 5)) (fma.f64 (+.f64 1 re) im (*.f64 (pow.f64 im 3) (+.f64 -1/6 (*.f64 -1/6 re))))))
(+.f64 1 (fma.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6) (fma.f64 (pow.f64 im 5) (fma.f64 re 1/120 1/120) (fma.f64 re im im))))
(+.f64 1 (*.f64 (+.f64 1 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (fma.f64 1/120 (pow.f64 im 5) im))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1)
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (sin.f64 im) 1)
(+.f64 1 (sin.f64 im))
(+.f64 1 (+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 1 (+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 1 (+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(*.f64 (sin.f64 im) re)
(*.f64 re (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(*.f64 (sin.f64 im) re)
(*.f64 re (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(fma.f64 (sin.f64 im) (+.f64 1 re) 1)
(fma.f64 (+.f64 1 re) (sin.f64 im) 1)

localize18.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 46 to 28 computations (39.1% saved)

series8.0ms (0.1%)

Counts
3 → 22
Calls

18 calls:

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

rewrite80.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
642×fma-def_binary64
599×log-prod_binary64
336×fma-neg_binary64
315×pow2_binary64
217×pow1/3_binary64
Iterations

Useful iterations: 2 (0.0ms)

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

simplify134.0ms (1.8%)

Algorithm
egg-herbie
Rules
520×fma-def_binary64
498×unsub-neg_binary64
412×distribute-rgt-neg-in_binary64
373×distribute-rgt-neg-out_binary64
281×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
026326
167276
2167240
3492240
41389240
53099240
65188240
76618240
86896240
97113240
107640240
117910240
Stop Event
node limit
Counts
160 → 149
Calls
Call 1
Inputs
im
(+.f64 (*.f64 re im) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
Outputs
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 (*.f64 1/2 (*.f64 im re)) re)
(*.f64 re (*.f64 im (*.f64 re 1/2)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (*.f64 re (*.f64 re 1/2))))
(*.f64 im (fma.f64 re (*.f64 re 1/2) re))
(*.f64 (fma.f64 re 1/2 1) (*.f64 im re))
(*.f64 re (fma.f64 (*.f64 im re) 1/2 im))
(*.f64 re (*.f64 im (fma.f64 re 1/2 1)))
(*.f64 im (*.f64 re (fma.f64 re 1/2 1)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 (*.f64 1/2 (*.f64 im re)) re)
(*.f64 re (*.f64 im (*.f64 re 1/2)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (*.f64 re (*.f64 re 1/2))))
(*.f64 im (fma.f64 re (*.f64 re 1/2) re))
(*.f64 (fma.f64 re 1/2 1) (*.f64 im re))
(*.f64 re (fma.f64 (*.f64 im re) 1/2 im))
(*.f64 re (*.f64 im (fma.f64 re 1/2 1)))
(*.f64 im (*.f64 re (fma.f64 re 1/2 1)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(fma.f64 re (fma.f64 (*.f64 im re) 1/2 im) im)
(fma.f64 (fma.f64 re 1/2 1) (*.f64 im re) im)

eval178.0ms (2.5%)

Compiler

Compiled 8369 to 4428 computations (47.1% saved)

prune142.0ms (2%)

Pruning

19 alts after pruning (12 fresh and 7 done)

PrunedKeptTotal
New5439552
Fresh235
Picked101
Done178
Total54719566
Error
0b
Counts
566 → 19
Alt Table
Click to see full alt table
StatusErrorProgram
20.5b
(*.f64 (sin.f64 im) (+.f64 re 1))
34.1b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) im)) 2)
0.0b
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (exp.f64 (*.f64 re 1/2)))
20.4b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
61.7b
(*.f64 im (*.f64 re (*.f64 re 1/2)))
42.6b
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
42.9b
(-.f64 1 1)
61.3b
(*.f64 (*.f64 1/2 (*.f64 re re)) (sin.f64 im))
20.5b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
42.5b
(+.f64 (*.f64 re im) im)
42.4b
im
23.0b
(*.f64 (exp.f64 re) im)
36.8b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
42.5b
(*.f64 (+.f64 1 re) im)
61.6b
(*.f64 re im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
61.3b
(*.f64 (sin.f64 im) re)
20.8b
(sin.f64 im)
0.1b
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (cbrt.f64 (pow.f64 (exp.f64 re) 3/2)))
Compiler

Compiled 295 to 211 computations (28.5% saved)

localize19.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (exp.f64 re))
0.0b
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (exp.f64 (*.f64 re 1/2)))
0.0b
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))
Compiler

Compiled 36 to 16 computations (55.6% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
im
@0
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (exp.f64 (*.f64 re 1/2)))
1.0ms
im
@inf
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (exp.f64 (*.f64 re 1/2)))
1.0ms
re
@inf
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (exp.f64 (*.f64 re 1/2)))
1.0ms
im
@-inf
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (exp.f64 (*.f64 re 1/2)))
1.0ms
re
@-inf
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (exp.f64 (*.f64 re 1/2)))

rewrite50.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
851×pow1_binary64
779×add-log-exp_binary64
779×log1p-expm1-u_binary64
779×expm1-log1p-u_binary64
761×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify75.0ms (1%)

Algorithm
egg-herbie
Rules
772×unswap-sqr_binary64
755×distribute-lft-out_binary64
376×distribute-rgt-in_binary64
360×*-commutative_binary64
359×associate-/l/_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
053556
1148536
2408460
31780268
43028260
55259260
67003260
Stop Event
node limit
Counts
38 → 31
Calls
Call 1
Inputs
(*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re)))
(+.f64 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re))) (*.f64 -1/6 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 3)) (sqrt.f64 (exp.f64 re)))))
(+.f64 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re))) (+.f64 (*.f64 1/120 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 5)) (sqrt.f64 (exp.f64 re)))) (*.f64 -1/6 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 3)) (sqrt.f64 (exp.f64 re))))))
(+.f64 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re))) (+.f64 (*.f64 1/120 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 5)) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 -1/6 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 -1/5040 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 7)) (sqrt.f64 (exp.f64 re)))))))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/8 (sin.f64 im)) (*.f64 1/24 (sin.f64 im))) (pow.f64 re 3)) (+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
Outputs
(*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (pow.f64 (exp.f64 re) 1/2) im) (sqrt.f64 (exp.f64 re)))
(*.f64 im (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 im (exp.f64 re))
(+.f64 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re))) (*.f64 -1/6 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 3)) (sqrt.f64 (exp.f64 re)))))
(fma.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re)) (*.f64 -1/6 (*.f64 (exp.f64 (*.f64 1/2 re)) (*.f64 (pow.f64 im 3) (sqrt.f64 (exp.f64 re))))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 (pow.f64 (exp.f64 re) 1/2) im) (*.f64 -1/6 (*.f64 (pow.f64 (exp.f64 re) 1/2) (pow.f64 im 3)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re))) (+.f64 (*.f64 1/120 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 5)) (sqrt.f64 (exp.f64 re)))) (*.f64 -1/6 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 3)) (sqrt.f64 (exp.f64 re))))))
(fma.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re)) (fma.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 5))) (*.f64 -1/6 (*.f64 (exp.f64 (*.f64 1/2 re)) (*.f64 (pow.f64 im 3) (sqrt.f64 (exp.f64 re)))))))
(fma.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 im (sqrt.f64 (exp.f64 re))) (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 (exp.f64 re) 1/2) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (pow.f64 (exp.f64 re) 1/2) (pow.f64 im 5))))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (pow.f64 im 5)))))
(fma.f64 1/120 (*.f64 (pow.f64 im 5) (exp.f64 re)) (*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (exp.f64 re) (+.f64 im (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))))
(+.f64 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re))) (+.f64 (*.f64 1/120 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 5)) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 -1/6 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 -1/5040 (*.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 7)) (sqrt.f64 (exp.f64 re)))))))
(fma.f64 (*.f64 (exp.f64 (*.f64 1/2 re)) im) (sqrt.f64 (exp.f64 re)) (fma.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 5))) (fma.f64 -1/6 (*.f64 (exp.f64 (*.f64 1/2 re)) (*.f64 (pow.f64 im 3) (sqrt.f64 (exp.f64 re)))) (*.f64 -1/5040 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (pow.f64 im 7)))))))
(+.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 (exp.f64 re) 1/2) (pow.f64 im 3))) (*.f64 (*.f64 -1/5040 (pow.f64 (exp.f64 re) 1/2)) (pow.f64 im 7)))) (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 (pow.f64 (exp.f64 re) 1/2) im) (*.f64 1/120 (*.f64 (pow.f64 (exp.f64 re) 1/2) (pow.f64 im 5))))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))) (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3))))))
(+.f64 (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1/5040 (pow.f64 im 7)))) (*.f64 (exp.f64 re) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (exp.f64 re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 re 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 re 1))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)))))
(+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 1/2 (*.f64 re re)))))
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 1/2 (*.f64 re re)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/8 (sin.f64 im)) (*.f64 1/24 (sin.f64 im))) (pow.f64 re 3)) (+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(fma.f64 (*.f64 (sin.f64 im) 1/6) (pow.f64 re 3) (+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re))))))
(+.f64 (fma.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 re (sin.f64 im))) (fma.f64 (*.f64 (sin.f64 im) 1/6) (pow.f64 re 3) (sin.f64 im)))
(fma.f64 (+.f64 re 1) (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (*.f64 re re)) (*.f64 (pow.f64 re 3) 1/6))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 1/2 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (exp.f64 (*.f64 1/2 re)) (sin.f64 im)))
(*.f64 (pow.f64 (exp.f64 re) 1/2) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (sqrt.f64 (exp.f64 re))))
(*.f64 (sin.f64 im) (exp.f64 re))

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 re im) im)
Compiler

Compiled 12 to 4 computations (66.7% saved)

series2.0ms (0%)

Counts
1 → 21
Calls

6 calls:

TimeVariablePointExpression
0.0ms
re
@-inf
(+.f64 (*.f64 re im) im)
0.0ms
re
@0
(+.f64 (*.f64 re im) im)
0.0ms
re
@inf
(+.f64 (*.f64 re im) im)
0.0ms
im
@-inf
(+.f64 (*.f64 re im) im)
0.0ms
im
@inf
(+.f64 (*.f64 re im) im)

rewrite54.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
633×pow1_binary64
590×add-log-exp_binary64
589×log1p-expm1-u_binary64
589×expm1-log1p-u_binary64
577×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify16.0ms (0.2%)

Algorithm
egg-herbie
Rules
62×fma-def_binary64
59×fma-neg_binary64
21×unsub-neg_binary64
17×associate-*l*_binary64
15×distribute-rgt-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
013135
13099
26599
313299
422499
532399
638399
Stop Event
saturated
Counts
61 → 46
Calls
Call 1
Inputs
im
(*.f64 re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(*.f64 re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(*.f64 (+.f64 1 re) im)
(*.f64 (+.f64 1 re) im)
(*.f64 (+.f64 1 re) im)
(*.f64 (+.f64 1 re) im)
(*.f64 (+.f64 1 re) im)
(*.f64 (+.f64 1 re) im)
(*.f64 (+.f64 1 re) im)
(*.f64 (+.f64 1 re) im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
Outputs
im
(*.f64 re im)
(*.f64 im re)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 re im)
(*.f64 im re)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(+.f64 im (*.f64 im re))
(fma.f64 im re im)

localize22.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
4.0b
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
7.6b
(*.f64 (*.f64 re re) (*.f64 im 1/2))
Compiler

Compiled 57 to 29 computations (49.1% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite76.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
836×fma-def_binary64
603×log-prod_binary64
409×fma-neg_binary64
311×pow2_binary64
212×pow1/3_binary64
Iterations

Useful iterations: 2 (0.0ms)

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

simplify147.0ms (2%)

Algorithm
egg-herbie
Rules
521×fma-def_binary64
497×unsub-neg_binary64
411×distribute-rgt-neg-in_binary64
367×distribute-rgt-neg-out_binary64
287×distribute-lft-neg-out_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
028564
171544
2169504
3494504
41389504
53104504
65192504
76624504
86908504
97121504
107645504
117915504
Stop Event
node limit
Counts
200 → 164
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
im
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
Outputs
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 (*.f64 re re) im)))
(*.f64 im (+.f64 (*.f64 1/2 (*.f64 re re)) re))
(*.f64 im (fma.f64 1/2 (*.f64 re re) re))
(*.f64 im (*.f64 re (fma.f64 1/2 re 1)))
(*.f64 re (*.f64 im (fma.f64 1/2 re 1)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 im (*.f64 1/2 (*.f64 re re)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 (*.f64 re re) im)))
(*.f64 im (+.f64 (*.f64 1/2 (*.f64 re re)) re))
(*.f64 im (fma.f64 1/2 (*.f64 re re) re))
(*.f64 im (*.f64 re (fma.f64 1/2 re 1)))
(*.f64 re (*.f64 im (fma.f64 1/2 re 1)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 (*.f64 re re) im) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 im (fma.f64 (fma.f64 1/2 re 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 1/2 re 1) 1))
(fma.f64 (fma.f64 1/2 re 1) (*.f64 re im) im)

localize16.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 40 to 21 computations (47.5% saved)

series5.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

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

rewrite76.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
566×log-prod_binary64
546×fma-def_binary64
450×pow-prod-down_binary64
308×pow2_binary64
281×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify145.0ms (2%)

Algorithm
egg-herbie
Rules
1184×distribute-rgt-in_binary64
1069×distribute-lft-in_binary64
837×*-commutative_binary64
434×unswap-sqr_binary64
236×sqr-pow_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
040659
1114657
2372605
31790581
43573581
53993581
64688581
74788581
84896581
95034581
107562581
117944581
Stop Event
node limit
Counts
215 → 194
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5))))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
1
(+.f64 1 re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
Outputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im)
(+.f64 im (*.f64 im (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (*.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 3))))
(fma.f64 -1/6 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5)))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 3)) (*.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 5)))))
(fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im (fma.f64 -1/6 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 1/120 (pow.f64 im 5)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5))))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (fma.f64 -1/5040 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 3)) (*.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 5))))))
(fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im (fma.f64 -1/5040 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 5) 1/120)))))
(+.f64 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5))) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 im (*.f64 -1/6 (pow.f64 im 3))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 re 1) (sin.f64 im))
(fma.f64 re (sin.f64 im) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 re (*.f64 re (*.f64 1/2 (sin.f64 im))))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (sin.f64 im)))
(*.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re re) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 re (*.f64 re (*.f64 1/2 (sin.f64 im))))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (sin.f64 im)))
(*.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re re) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
1
(+.f64 1 re)
(+.f64 re 1)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))

eval227.0ms (3.1%)

Compiler

Compiled 8419 to 4650 computations (44.8% saved)

prune93.0ms (1.3%)

Pruning

19 alts after pruning (9 fresh and 10 done)

PrunedKeptTotal
New4854489
Fresh257
Picked101
Done11011
Total48919508
Error
0b
Counts
508 → 19
Alt Table
Click to see full alt table
StatusErrorProgram
20.5b
(*.f64 (sin.f64 im) (+.f64 re 1))
34.1b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) im)) 2)
61.7b
(*.f64 im (*.f64 re (*.f64 re 1/2)))
42.6b
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
42.9b
(-.f64 1 1)
0.0b
(*.f64 (*.f64 (sin.f64 im) (cbrt.f64 (pow.f64 (exp.f64 re) 3/2))) (exp.f64 (*.f64 re 1/2)))
61.3b
(*.f64 (*.f64 1/2 (*.f64 re re)) (sin.f64 im))
42.4b
im
23.0b
(*.f64 (exp.f64 re) im)
0.0b
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 re 1/2))) (exp.f64 (*.f64 re 1/2)))
36.8b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
42.5b
(*.f64 (+.f64 1 re) im)
61.6b
(*.f64 re im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
61.3b
(*.f64 (sin.f64 im) re)
20.8b
(sin.f64 im)
20.4b
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
20.5b
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 1/2 (*.f64 re re)))))
42.5b
(+.f64 (*.f64 re im) im)
Compiler

Compiled 176 to 128 computations (27.3% saved)

regimes117.0ms (1.6%)

Counts
29 → 1
Calls
Call 1
Inputs
im
im
(-.f64 1 1)
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 (+.f64 1 re) im)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
(sin.f64 im)
(*.f64 (sin.f64 im) re)
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 re 1))
(*.f64 (*.f64 1/2 (*.f64 re re)) (sin.f64 im))
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 1/2 (*.f64 re re)))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
(*.f64 (exp.f64 re) (sin.f64 im))
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) im)) 2)
(*.f64 (*.f64 (sin.f64 im) (exp.f64 (*.f64 re 1/2))) (exp.f64 (*.f64 re 1/2)))
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (exp.f64 (*.f64 re 1/2)))
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (cbrt.f64 (pow.f64 (exp.f64 re) 3/2))) (exp.f64 (*.f64 re 1/2)))
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (cbrt.f64 (pow.f64 (exp.f64 re) 3/2)))
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
Calls

5 calls:

62.0ms
im
16.0ms
(sin.f64 im)
15.0ms
re
11.0ms
(*.f64 (exp.f64 re) (sin.f64 im))
5.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.0b1re
0.0b1im
0.0b1(*.f64 (exp.f64 re) (sin.f64 im))
0.0b1(exp.f64 re)
0.0b1(sin.f64 im)
Compiler

Compiled 260 to 129 computations (50.4% saved)

regimes192.0ms (2.7%)

Counts
20 → 2
Calls
Call 1
Inputs
im
im
(-.f64 1 1)
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 (+.f64 1 re) im)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
(sin.f64 im)
(*.f64 (sin.f64 im) re)
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 re 1))
(*.f64 (*.f64 1/2 (*.f64 re re)) (sin.f64 im))
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 1/2 (*.f64 re re)))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
Outputs
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
Calls

6 calls:

65.0ms
im
48.0ms
(sin.f64 im)
45.0ms
(sin.f64 im)
20.0ms
re
5.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.2b2re
9.9b3im
1.2b2(exp.f64 re)
1.2b2(exp.f64 re)
10.4b5(sin.f64 im)
10.4b5(sin.f64 im)
Compiler

Compiled 172 to 92 computations (46.5% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.7897398267308128
0.9805147731233606
Compiler

Compiled 12 to 9 computations (25% saved)

regimes342.0ms (4.7%)

Counts
18 → 2
Calls
Call 1
Inputs
im
im
(-.f64 1 1)
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 (+.f64 1 re) im)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
(sin.f64 im)
(*.f64 (sin.f64 im) re)
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 re 1))
(*.f64 (*.f64 1/2 (*.f64 re re)) (sin.f64 im))
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 1/2 (*.f64 re re)))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
Outputs
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 1/2 (*.f64 re re)))))
Calls

6 calls:

125.0ms
im
113.0ms
(sin.f64 im)
72.0ms
(sin.f64 im)
18.0ms
re
6.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.3b2re
9.9b3im
1.3b2(exp.f64 re)
1.3b2(exp.f64 re)
10.5b5(sin.f64 im)
10.5b5(sin.f64 im)
Compiler

Compiled 140 to 74 computations (47.1% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.7897398267308128
0.9805147731233606
Compiler

Compiled 12 to 9 computations (25% saved)

regimes243.0ms (3.4%)

Counts
15 → 2
Calls
Call 1
Inputs
im
im
(-.f64 1 1)
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 (+.f64 1 re) im)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
(sin.f64 im)
(*.f64 (sin.f64 im) re)
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 re 1))
(*.f64 (*.f64 1/2 (*.f64 re re)) (sin.f64 im))
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
Outputs
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 re 1))
Calls

6 calls:

119.0ms
im
68.0ms
(sin.f64 im)
24.0ms
(sin.f64 im)
20.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.5b2re
10.1b3im
1.5b2(exp.f64 re)
1.5b2(exp.f64 re)
11.6b3(sin.f64 im)
11.6b3(sin.f64 im)
Compiler

Compiled 103 to 55 computations (46.6% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9980932799715211
0.9999953193429076
Compiler

Compiled 12 to 9 computations (25% saved)

regimes149.0ms (2.1%)

Counts
12 → 2
Calls
Call 1
Inputs
im
im
(-.f64 1 1)
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 (+.f64 1 re) im)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
(sin.f64 im)
(*.f64 (sin.f64 im) re)
(*.f64 (exp.f64 re) im)
Outputs
(*.f64 (exp.f64 re) im)
(sin.f64 im)
Calls

5 calls:

46.0ms
im
35.0ms
(sin.f64 im)
33.0ms
(sin.f64 im)
27.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
2.0b2re
10.3b3im
2.0b2(exp.f64 re)
10.7b5(sin.f64 im)
10.7b5(sin.f64 im)
Compiler

Compiled 75 to 39 computations (48% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9980932799715211
0.9999953193429076
Compiler

Compiled 12 to 9 computations (25% saved)

regimes150.0ms (2.1%)

Counts
11 → 2
Calls
Call 1
Inputs
im
im
(-.f64 1 1)
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 (+.f64 1 re) im)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
(sin.f64 im)
(*.f64 (sin.f64 im) re)
Outputs
(-.f64 1 1)
(sin.f64 im)
Calls

3 calls:

58.0ms
(sin.f64 im)
47.0ms
re
40.0ms
im
Results
ErrorSegmentsBranch
2.3b2re
19.4b3im
19.8b3(sin.f64 im)
Compiler

Compiled 63 to 31 computations (50.8% saved)

bsearch76.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
76.0ms
-1185177.269940907
-1.6117626862022278
Compiler

Compiled 12 to 9 computations (25% saved)

regimes116.0ms (1.6%)

Counts
9 → 2
Calls
Call 1
Inputs
im
im
(-.f64 1 1)
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 (+.f64 1 re) im)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
Outputs
(-.f64 1 1)
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
Calls

2 calls:

89.0ms
im
23.0ms
re
Results
ErrorSegmentsBranch
23.5b2re
31.4b3im
Compiler

Compiled 53 to 26 computations (50.9% saved)

bsearch44.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
44.0ms
-1185177.269940907
-1.6117626862022278
Compiler

Compiled 12 to 9 computations (25% saved)

regimes105.0ms (1.5%)

Counts
8 → 2
Calls
Call 1
Inputs
im
im
(-.f64 1 1)
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 (+.f64 1 re) im)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
Outputs
(-.f64 1 1)
(+.f64 (*.f64 re im) im)
Calls

2 calls:

81.0ms
im
21.0ms
re
Results
ErrorSegmentsBranch
23.6b2re
31.4b3im
Compiler

Compiled 38 to 18 computations (52.6% saved)

bsearch80.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
80.0ms
-1.4016949820713636
-0.23605172101531055
Compiler

Compiled 12 to 9 computations (25% saved)

regimes61.0ms (0.8%)

Counts
4 → 2
Calls
Call 1
Inputs
im
im
(-.f64 1 1)
(*.f64 re im)
Outputs
(-.f64 1 1)
im
Calls

2 calls:

42.0ms
im
16.0ms
re
Results
ErrorSegmentsBranch
23.9b2re
31.5b3im
Compiler

Compiled 16 to 10 computations (37.5% saved)

bsearch49.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
49.0ms
-1185177.269940907
-1.6117626862022278
Compiler

Compiled 12 to 9 computations (25% saved)

regimes10.0ms (0.1%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

Counts
2 → 1
Calls
Call 1
Inputs
im
im
Outputs
im
Calls

2 calls:

5.0ms
im
3.0ms
re
Results
ErrorSegmentsBranch
42.4b1re
42.4b1im
Compiler

Compiled 10 to 6 computations (40% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
11×*-commutative_binary64
10×+-commutative_binary64
+-lft-identity_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
049177
172177
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 3602879701896397/4503599627370496) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))))
(if (<=.f64 (exp.f64 re) 3602879701896397/4503599627370496) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 1/2 (*.f64 re re))))))
(if (<=.f64 (exp.f64 re) 8998192055486251/9007199254740992) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 8998192055486251/9007199254740992) (*.f64 (exp.f64 re) im) (sin.f64 im))
(if (<=.f64 re -5090297614358759/4294967296) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 re -5090297614358759/4294967296) (-.f64 1 1) (+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im)))
(if (<=.f64 re -6312672998943687/4503599627370496) (-.f64 1 1) (+.f64 (*.f64 re im) im))
(if (<=.f64 re -5090297614358759/4294967296) (-.f64 1 1) im)
im
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 3602879701896397/4503599627370496) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))))
(if (<=.f64 (exp.f64 re) 3602879701896397/4503599627370496) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 1/2 (*.f64 re re))))))
(if (<=.f64 (exp.f64 re) 3602879701896397/4503599627370496) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) 1/2)))))
(if (<=.f64 (exp.f64 re) 8998192055486251/9007199254740992) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 8998192055486251/9007199254740992) (*.f64 (exp.f64 re) im) (sin.f64 im))
(if (<=.f64 re -5090297614358759/4294967296) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 re -5090297614358759/4294967296) 0 (sin.f64 im))
(if (<=.f64 re -5090297614358759/4294967296) (-.f64 1 1) (+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im)))
(if (<=.f64 re -5090297614358759/4294967296) 0 (+.f64 (*.f64 re im) (+.f64 im (*.f64 (*.f64 re re) (*.f64 im 1/2)))))
(if (<=.f64 re -6312672998943687/4503599627370496) (-.f64 1 1) (+.f64 (*.f64 re im) im))
(if (<=.f64 re -6312672998943687/4503599627370496) 0 (+.f64 im (*.f64 re im)))
(if (<=.f64 re -5090297614358759/4294967296) (-.f64 1 1) im)
(if (<=.f64 re -5090297614358759/4294967296) 0 im)
im
Compiler

Compiled 139 to 93 computations (33.1% saved)

soundness0.0ms (0%)

end94.0ms (1.3%)

Compiler

Compiled 121 to 60 computations (50.4% saved)

Profiling

Loading profile data...