Details

Time bar (total: 6.7s)

analyze105.0ms (1.6%)

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)

sample1.9s (28.6%)

Results
778.0ms6174×body256valid
573.0ms1392×body1024valid
224.0ms685×body1024invalid
167.0ms685×body512valid
87.0ms508×body256invalid
74.0ms325×body512invalid
3.0msbody2048valid

preprocess15.0ms (0.2%)

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)

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

series4.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))
0.0ms
im
@inf
(*.f64 (exp.f64 re) (sin.f64 im))

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

simplify106.0ms (1.6%)

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

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New21627
Fresh000
Picked011
Done000
Total21728
Error
0.0b
Counts
28 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
21.6b
(+.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))))))
21.7b
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
21.6b
(*.f64 (sin.f64 im) (+.f64 re 1))
21.6b
(sin.f64 im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
0.1b
(log1p.f64 (expm1.f64 (*.f64 (exp.f64 re) (sin.f64 im))))
19.9b
(*.f64 (exp.f64 re) im)
Compiler

Compiled 141 to 93 computations (34% saved)

localize14.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 26 to 7 computations (73.1% saved)

series5.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite50.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
611×pow1_binary64
559×expm1-log1p-u_binary64
558×add-log-exp_binary64
558×log1p-expm1-u_binary64
544×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify54.0ms (0.8%)

Algorithm
egg-herbie
Rules
682×distribute-rgt-out_binary64
682×fma-def_binary64
605×distribute-lft-out_binary64
422×associate-*l*_binary64
394×distribute-rgt-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
093748
1283735
2882692
34222671
Stop Event
node limit
Counts
91 → 74
Calls
Call 1
Inputs
(-.f64 (exp.f64 (sin.f64 im)) 1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re)) (exp.f64 (sin.f64 im))) 1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re)) (+.f64 (exp.f64 (sin.f64 im)) (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/2 (pow.f64 (sin.f64 im) 2))))))) 1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re)) (+.f64 (exp.f64 (sin.f64 im)) (+.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/2 (pow.f64 (sin.f64 im) 2))))) (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (pow.f64 re 3) (+.f64 (*.f64 1/6 (sin.f64 im)) (+.f64 (*.f64 1/2 (pow.f64 (sin.f64 im) 2)) (*.f64 1/6 (pow.f64 (sin.f64 im) 3))))))))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(*.f64 (exp.f64 re) im)
(+.f64 (*.f64 (exp.f64 re) im) (*.f64 1/2 (*.f64 (pow.f64 (exp.f64 re) 2) (pow.f64 im 2))))
(+.f64 (*.f64 (exp.f64 re) im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 (exp.f64 re) 2) (pow.f64 im 2))) (*.f64 (+.f64 (*.f64 -1/6 (exp.f64 re)) (*.f64 1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 (exp.f64 re) 2)) (*.f64 1/24 (pow.f64 (exp.f64 re) 4))) (pow.f64 im 4)) (+.f64 (*.f64 (exp.f64 re) im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 (exp.f64 re) 2) (pow.f64 im 2))) (*.f64 (+.f64 (*.f64 -1/6 (exp.f64 re)) (*.f64 1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 3)))))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(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
(-.f64 (exp.f64 (sin.f64 im)) 1)
(expm1.f64 (sin.f64 im))
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re)) (exp.f64 (sin.f64 im))) 1)
(+.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re)) (expm1.f64 (sin.f64 im)))
(fma.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re) (expm1.f64 (sin.f64 im)))
(fma.f64 (fma.f64 (sin.f64 im) re 1) (exp.f64 (sin.f64 im)) -1)
(fma.f64 (exp.f64 (sin.f64 im)) (fma.f64 (sin.f64 im) re 1) -1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re)) (+.f64 (exp.f64 (sin.f64 im)) (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/2 (pow.f64 (sin.f64 im) 2))))))) 1)
(+.f64 (+.f64 (fma.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re) (exp.f64 (sin.f64 im))) (*.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 re re)) (*.f64 1/2 (+.f64 (sin.f64 im) (pow.f64 (sin.f64 im) 2))))) -1)
(+.f64 (fma.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re) (*.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 1/2 (+.f64 (sin.f64 im) (pow.f64 (sin.f64 im) 2)))) 1) (exp.f64 (sin.f64 im)))) -1)
(+.f64 (*.f64 (exp.f64 (sin.f64 im)) (+.f64 (*.f64 (sin.f64 im) re) (fma.f64 (*.f64 re re) (*.f64 1/2 (+.f64 (sin.f64 im) (pow.f64 (sin.f64 im) 2))) 1))) -1)
(+.f64 (expm1.f64 (sin.f64 im)) (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 re (*.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 (sin.f64 im) 1))))))
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re)) (+.f64 (exp.f64 (sin.f64 im)) (+.f64 (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/2 (pow.f64 (sin.f64 im) 2))))) (*.f64 (exp.f64 (sin.f64 im)) (*.f64 (pow.f64 re 3) (+.f64 (*.f64 1/6 (sin.f64 im)) (+.f64 (*.f64 1/2 (pow.f64 (sin.f64 im) 2)) (*.f64 1/6 (pow.f64 (sin.f64 im) 3))))))))) 1)
(+.f64 (+.f64 (fma.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re) (exp.f64 (sin.f64 im))) (*.f64 (exp.f64 (sin.f64 im)) (+.f64 (*.f64 (*.f64 re re) (*.f64 1/2 (+.f64 (sin.f64 im) (pow.f64 (sin.f64 im) 2)))) (*.f64 (pow.f64 re 3) (fma.f64 1/6 (sin.f64 im) (fma.f64 1/2 (pow.f64 (sin.f64 im) 2) (*.f64 1/6 (pow.f64 (sin.f64 im) 3)))))))) -1)
(fma.f64 (exp.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re) (+.f64 (*.f64 (exp.f64 (sin.f64 im)) (fma.f64 (*.f64 re re) (*.f64 1/2 (+.f64 (sin.f64 im) (pow.f64 (sin.f64 im) 2))) (*.f64 (pow.f64 re 3) (fma.f64 (sin.f64 im) 1/6 (fma.f64 1/2 (pow.f64 (sin.f64 im) 2) (*.f64 1/6 (pow.f64 (sin.f64 im) 3))))))) (expm1.f64 (sin.f64 im))))
(+.f64 (*.f64 (exp.f64 (sin.f64 im)) (+.f64 (fma.f64 (sin.f64 im) re 1) (*.f64 (*.f64 re re) (+.f64 (*.f64 1/2 (+.f64 (sin.f64 im) (pow.f64 (sin.f64 im) 2))) (*.f64 re (fma.f64 1/2 (pow.f64 (sin.f64 im) 2) (*.f64 1/6 (+.f64 (sin.f64 im) (pow.f64 (sin.f64 im) 3))))))))) -1)
(fma.f64 (exp.f64 (sin.f64 im)) (+.f64 (*.f64 re (*.f64 re (+.f64 (*.f64 1/2 (+.f64 (sin.f64 im) (pow.f64 (sin.f64 im) 2))) (*.f64 re (*.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) (+.f64 1/2 (*.f64 (sin.f64 im) 1/6))) 1/6)))))) (fma.f64 (sin.f64 im) re 1)) -1)
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(*.f64 (exp.f64 re) im)
(*.f64 im (exp.f64 re))
(+.f64 (*.f64 (exp.f64 re) im) (*.f64 1/2 (*.f64 (pow.f64 (exp.f64 re) 2) (pow.f64 im 2))))
(fma.f64 (exp.f64 re) im (*.f64 1/2 (*.f64 (pow.f64 (exp.f64 re) 2) (*.f64 im im))))
(fma.f64 im (exp.f64 re) (*.f64 1/2 (*.f64 im (*.f64 im (pow.f64 (exp.f64 re) 2)))))
(*.f64 im (+.f64 (exp.f64 re) (*.f64 im (*.f64 1/2 (pow.f64 (exp.f64 re) 2)))))
(*.f64 (exp.f64 re) (+.f64 im (*.f64 (*.f64 im (*.f64 im 1/2)) (exp.f64 re))))
(+.f64 (*.f64 (exp.f64 re) im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 (exp.f64 re) 2) (pow.f64 im 2))) (*.f64 (+.f64 (*.f64 -1/6 (exp.f64 re)) (*.f64 1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 3))))
(fma.f64 (exp.f64 re) im (fma.f64 1/2 (*.f64 (pow.f64 (exp.f64 re) 2) (*.f64 im im)) (*.f64 (fma.f64 -1/6 (exp.f64 re) (*.f64 1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 3))))
(fma.f64 im (exp.f64 re) (fma.f64 1/2 (*.f64 im (*.f64 im (pow.f64 (exp.f64 re) 2))) (*.f64 (fma.f64 1/6 (pow.f64 (exp.f64 re) 3) (*.f64 (exp.f64 re) -1/6)) (pow.f64 im 3))))
(fma.f64 im (exp.f64 re) (*.f64 (*.f64 im im) (+.f64 (*.f64 1/2 (pow.f64 (exp.f64 re) 2)) (*.f64 im (fma.f64 1/6 (pow.f64 (exp.f64 re) 3) (*.f64 (exp.f64 re) -1/6))))))
(*.f64 im (+.f64 (exp.f64 re) (*.f64 im (+.f64 (*.f64 1/2 (pow.f64 (exp.f64 re) 2)) (*.f64 im (fma.f64 1/6 (exp.f64 (*.f64 3 re)) (*.f64 (exp.f64 re) -1/6)))))))
(+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 (exp.f64 re) 2)) (*.f64 1/24 (pow.f64 (exp.f64 re) 4))) (pow.f64 im 4)) (+.f64 (*.f64 (exp.f64 re) im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 (exp.f64 re) 2) (pow.f64 im 2))) (*.f64 (+.f64 (*.f64 -1/6 (exp.f64 re)) (*.f64 1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 3)))))
(fma.f64 (fma.f64 -1/6 (pow.f64 (exp.f64 re) 2) (*.f64 1/24 (pow.f64 (exp.f64 re) 4))) (pow.f64 im 4) (fma.f64 (exp.f64 re) im (fma.f64 1/2 (*.f64 (pow.f64 (exp.f64 re) 2) (*.f64 im im)) (*.f64 (fma.f64 -1/6 (exp.f64 re) (*.f64 1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 3)))))
(fma.f64 (fma.f64 (pow.f64 (exp.f64 re) 2) -1/6 (*.f64 1/24 (pow.f64 (exp.f64 re) 4))) (pow.f64 im 4) (fma.f64 im (exp.f64 re) (fma.f64 1/2 (*.f64 im (*.f64 im (pow.f64 (exp.f64 re) 2))) (*.f64 (fma.f64 1/6 (pow.f64 (exp.f64 re) 3) (*.f64 (exp.f64 re) -1/6)) (pow.f64 im 3)))))
(fma.f64 im (exp.f64 re) (fma.f64 (fma.f64 (pow.f64 (exp.f64 re) 2) -1/6 (*.f64 1/24 (pow.f64 (exp.f64 re) 4))) (pow.f64 im 4) (*.f64 (*.f64 im im) (+.f64 (*.f64 1/2 (pow.f64 (exp.f64 re) 2)) (*.f64 im (fma.f64 1/6 (pow.f64 (exp.f64 re) 3) (*.f64 (exp.f64 re) -1/6)))))))
(fma.f64 im (exp.f64 re) (*.f64 (*.f64 im im) (+.f64 (*.f64 1/2 (pow.f64 (exp.f64 re) 2)) (*.f64 im (+.f64 (fma.f64 1/6 (exp.f64 (*.f64 3 re)) (*.f64 (exp.f64 re) -1/6)) (*.f64 (fma.f64 1/24 (pow.f64 (exp.f64 re) 4) (*.f64 (pow.f64 (exp.f64 re) 2) -1/6)) im))))))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(-.f64 (exp.f64 (*.f64 (sin.f64 im) (exp.f64 re))) 1)
(expm1.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 1 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) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 (*.f64 re re) (*.f64 (sin.f64 im) 1/2))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 re (*.f64 re 1/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) (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 (sin.f64 im) (fma.f64 (sin.f64 im) re (fma.f64 1/2 (*.f64 re (*.f64 (sin.f64 im) re)) (*.f64 (sin.f64 im) (*.f64 1/6 (pow.f64 re 3))))))
(fma.f64 (+.f64 1 re) (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (*.f64 (pow.f64 re 3) 1/6))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 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 (*.f64 (exp.f64 re) -1/6) (pow.f64 im 3) (*.f64 im (exp.f64 re)))
(*.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 im (exp.f64 re))))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 im (exp.f64 re) (*.f64 (exp.f64 re) (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 im (exp.f64 re) (*.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/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)))))
(fma.f64 (*.f64 (exp.f64 re) -1/6) (pow.f64 im 3) (fma.f64 (*.f64 (exp.f64 re) 1/120) (pow.f64 im 5) (fma.f64 im (exp.f64 re) (*.f64 (*.f64 -1/5040 (pow.f64 im 7)) (exp.f64 re)))))
(+.f64 (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) 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 (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) im) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))))
(*.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))

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
1.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
im
@-inf
(*.f64 (exp.f64 re) im)
0.0ms
re
@inf
(*.f64 (exp.f64 re) im)

rewrite43.0ms (0.6%)

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

simplify127.0ms (1.9%)

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.0b
(*.f64 (sin.f64 im) (+.f64 re 1))
Compiler

Compiled 16 to 9 computations (43.8% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
im
@0
(*.f64 (sin.f64 im) (+.f64 re 1))
0.0ms
re
@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
im
@-inf
(*.f64 (sin.f64 im) (+.f64 re 1))

rewrite54.0ms (0.8%)

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

simplify114.0ms (1.7%)

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

localize13.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
2.9b
(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)

series5.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
2.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))

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

simplify76.0ms (1.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))

eval57.0ms (0.9%)

Compiler

Compiled 2709 to 1349 computations (50.2% saved)

prune36.0ms (0.5%)

Pruning

12 alts after pruning (8 fresh and 4 done)

PrunedKeptTotal
New1908198
Fresh101
Picked101
Done145
Total19312205
Error
0b
Counts
205 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
41.4b
(+.f64 (*.f64 re im) im)
21.7b
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 re (*.f64 re 1/2))))
41.3b
im
21.6b
(*.f64 (sin.f64 im) (+.f64 re 1))
19.9b
(*.f64 (exp.f64 re) im)
41.5b
(fma.f64 im (fma.f64 1/6 (pow.f64 re 3) (*.f64 re (fma.f64 re 1/2 1))) im)
21.6b
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re)))))
21.7b
(log1p.f64 (expm1.f64 (sin.f64 im)))
21.6b
(sin.f64 im)
21.7b
(+.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))
0.0b
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (sqrt.f64 (exp.f64 re)))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
Compiler

Compiled 202 to 136 computations (32.7% saved)

localize10.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
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)

series5.0ms (0.1%)

Counts
2 → 32
Calls

12 calls:

TimeVariablePointExpression
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
im
@inf
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))
1.0ms
re
@inf
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))
0.0ms
re
@0
(*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))

rewrite52.0ms (0.8%)

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
0818
115418
2181718
Stop Event
node limit
Counts
2 → 27
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)))
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))))))

simplify126.0ms (1.9%)

Algorithm
egg-herbie
Rules
954×distribute-lft-out_binary64
657×distribute-rgt-out_binary64
634×associate-*r*_binary64
489×unswap-sqr_binary64
421×fma-def_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
066493
1188489
2521445
31638410
43114405
54501403
67048403
77421403
87990403
Stop Event
node limit
Counts
59 → 56
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))
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)) (*.f64 1/120 (pow.f64 im 5)) (*.f64 (sqrt.f64 (exp.f64 re)) (+.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 -1/6 (pow.f64 im 3)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(+.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 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))) (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 im (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (+.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 (sqrt.f64 (exp.f64 re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5))))))
(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 (+.f64 (*.f64 re 1/2) 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re 1/2)))
(fma.f64 re (*.f64 (sin.f64 im) 1/2) (sin.f64 im))
(+.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 (sin.f64 im) (fma.f64 1/8 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (*.f64 (sin.f64 im) 1/2))))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 re 1/2) (*.f64 re (*.f64 re 1/8)))))
(+.f64 (sin.f64 im) (*.f64 (*.f64 re (sin.f64 im)) (+.f64 1/2 (*.f64 re 1/8))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re 1/8)))))
(+.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 1/48 (*.f64 (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 (sin.f64 im) (*.f64 (pow.f64 re 3) 1/48)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) (*.f64 1/48 (pow.f64 re 3)) (*.f64 (sin.f64 im) (+.f64 (*.f64 re 1/2) (*.f64 re (*.f64 re 1/8))))))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 re 1/2) (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/48) 1/8)))))
(+.f64 (sin.f64 im) (*.f64 re (*.f64 (sin.f64 im) (+.f64 (*.f64 re (+.f64 1/8 (*.f64 re 1/48))) 1/2))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48)))))))
(*.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 (exp.f64 re) (*.f64 (pow.f64 im 3) -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 (pow.f64 im 5) (*.f64 (exp.f64 re) 1/120) (*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (exp.f64 re) (+.f64 (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))) im))
(*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.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 im (*.f64 -1/5040 (pow.f64 im 7))) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5))))))
(*.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 (sin.f64 im) (fma.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 re re) (*.f64 re (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2))))
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 re (*.f64 re 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/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) (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 re (*.f64 re 1/2)))))
(*.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))

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

series3.0ms (0%)

Counts
1 → 21
Calls

6 calls:

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

rewrite54.0ms (0.8%)

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

simplify18.0ms (0.3%)

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)

localize17.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 40 to 25 computations (37.5% saved)

series4.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

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

rewrite75.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
588×log-prod_binary64
566×fma-def_binary64
456×pow-prod-down_binary64
311×pow2_binary64
219×fma-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01131
124027
2339123
Stop Event
node limit
Counts
2 → 146
Calls
Call 1
Inputs
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 re (*.f64 re 1/2))))
(+.f64 (+.f64 1 re) (*.f64 re (*.f64 re 1/2)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 im) (*.f64 (*.f64 (fma.f64 re 1/2 1) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 (fma.f64 re 1/2 1) re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1) (*.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re 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)) (fma.f64 (fma.f64 re 1/2 1) re 1))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (fma.f64 re 1/2 1) re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (fma.f64 re 1/2 1) re 1)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (fma.f64 re 1/2 1) re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 3) (pow.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2) 3)) (+.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 2) (-.f64 (pow.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2) 2) (*.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 2) (pow.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2) 2)) (-.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 (pow.f64 re 6) 1/8 (pow.f64 (+.f64 1 re) 3)) (sin.f64 im)) (fma.f64 (*.f64 re (*.f64 re 1/2)) (-.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)) (pow.f64 (+.f64 1 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (+.f64 1 re) 2) (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4)) (sin.f64 im)) (+.f64 1 (-.f64 re (*.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 1 re) 3))) (fma.f64 (*.f64 re (*.f64 re 1/2)) (-.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)) (pow.f64 (+.f64 1 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (-.f64 (pow.f64 (+.f64 1 re) 2) (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4))) (+.f64 1 (-.f64 re (*.f64 re (*.f64 re 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (fma.f64 re 1/2 1) re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2)) (exp.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 im) (fma.f64 (fma.f64 re 1/2 1) re 1))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) 1 (*.f64 (*.f64 (fma.f64 re 1/2 1) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) 1 (*.f64 (sin.f64 im) (*.f64 (fma.f64 re 1/2 1) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (+.f64 1 re) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (*.f64 re (*.f64 re 1/2)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 im) (*.f64 (*.f64 (fma.f64 re 1/2 1) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 (fma.f64 re 1/2 1) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 (*.f64 re 1/2) (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 re) (sin.f64 im) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re 1/2) (*.f64 re (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (*.f64 re 1/2)) (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4)) (*.f64 (cbrt.f64 (*.f64 re (*.f64 re 1/2))) (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (+.f64 1 re) 2)) (*.f64 (cbrt.f64 (+.f64 1 re)) (sin.f64 im)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (sin.f64 im)) (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (*.f64 (*.f64 (fma.f64 re 1/2 1) re) (sin.f64 im)))))) (#(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) (*.f64 (fma.f64 re 1/2 1) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (cbrt.f64 (sin.f64 im)) (*.f64 (*.f64 (fma.f64 re 1/2 1) re) (sin.f64 im)))))) (#(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) (*.f64 (fma.f64 re 1/2 1) 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)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(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 1 re)))))) (#(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 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 re)) (*.f64 (sqrt.f64 (+.f64 1 re)) (sin.f64 im)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)) (*.f64 (*.f64 (fma.f64 re 1/2 1) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 (fma.f64 re 1/2 1) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 1 re)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(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 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1 (*.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2)) 2) (cbrt.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(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))) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(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 1 re)))))) (#(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))) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) re) (*.f64 re 1/2) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (cbrt.f64 (pow.f64 (+.f64 1 re) 2))) (cbrt.f64 (+.f64 1 re)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (sqrt.f64 (+.f64 1 re))) (sqrt.f64 (+.f64 1 re)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(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)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (+.f64 1 re) (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2))))) (#(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 1 re)))))) (#(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 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (*.f64 re 1/2)) re (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (*.f64 re re)) 1/2 (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (cbrt.f64 (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4))) (cbrt.f64 (*.f64 re (*.f64 re 1/2))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(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 1 re)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 (fma.f64 re 1/2 1) re 1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (+.f64 1 re) 2) (+.f64 1 (-.f64 re (*.f64 re (*.f64 re 1/2))))) (/.f64 (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4) (+.f64 1 (-.f64 re (*.f64 re (*.f64 re 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 (fma.f64 re 1/2 1) re 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (fma.f64 re 1/2 1) re 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 (fma.f64 re 1/2 1) re 1)) (cbrt.f64 (pow.f64 (fma.f64 (fma.f64 re 1/2 1) re 1) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (fma.f64 (fma.f64 re 1/2 1) re 1) 2)) (cbrt.f64 (fma.f64 (fma.f64 re 1/2 1) re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (fma.f64 re 1/2 1) re 1)) (sqrt.f64 (fma.f64 (fma.f64 re 1/2 1) re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 re 6) 1/8 (pow.f64 (+.f64 1 re) 3)) (/.f64 1 (fma.f64 (*.f64 re (*.f64 re 1/2)) (-.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)) (pow.f64 (+.f64 1 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (+.f64 1 re) 2) (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4)) (/.f64 1 (+.f64 1 (-.f64 re (*.f64 re (*.f64 re 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 re (*.f64 re 1/2)) (-.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)) (pow.f64 (+.f64 1 re) 2)) (fma.f64 (pow.f64 re 6) 1/8 (pow.f64 (+.f64 1 re) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 1 (-.f64 re (*.f64 re (*.f64 re 1/2)))) (-.f64 (pow.f64 (+.f64 1 re) 2) (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 re 6) 1/8 (pow.f64 (+.f64 1 re) 3)) (fma.f64 (*.f64 re (*.f64 re 1/2)) (-.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)) (pow.f64 (+.f64 1 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 re 6) 1/8 (pow.f64 (+.f64 1 re) 3)) (fma.f64 (pow.f64 (*.f64 re re) 2) 1/4 (-.f64 (pow.f64 (+.f64 1 re) 2) (*.f64 (*.f64 (+.f64 1 re) (*.f64 re re)) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 1 re) 2) (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4)) (+.f64 1 (-.f64 re (*.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 1 re) 3))) (neg.f64 (fma.f64 (*.f64 re (*.f64 re 1/2)) (-.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)) (pow.f64 (+.f64 1 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (+.f64 1 re) 2) (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4))) (neg.f64 (+.f64 1 (-.f64 re (*.f64 re (*.f64 re 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (*.f64 (fma.f64 re 1/2 1) re) 3)) (+.f64 1 (-.f64 (pow.f64 (*.f64 (fma.f64 re 1/2 1) re) 2) (*.f64 (fma.f64 re 1/2 1) re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (*.f64 (fma.f64 re 1/2 1) re) 2)) (-.f64 1 (*.f64 (fma.f64 re 1/2 1) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4) (pow.f64 (+.f64 1 re) 2)) (-.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 (fma.f64 re 1/2 1) re 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (fma.f64 re 1/2 1) re 1) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (fma.f64 re 1/2 1) re 1) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 (fma.f64 re 1/2 1) re 1)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 (fma.f64 re 1/2 1) re 1)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 re (*.f64 re 1/2)) (-.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)) (pow.f64 (+.f64 1 re) 2)) (fma.f64 (pow.f64 re 6) 1/8 (pow.f64 (+.f64 1 re) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 1 (-.f64 re (*.f64 re (*.f64 re 1/2)))) (-.f64 (pow.f64 (+.f64 1 re) 2) (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (fma.f64 re 1/2 1) re 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 (fma.f64 re 1/2 1) re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 (fma.f64 re 1/2 1) re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (+.f64 1 re))) (pow.f64 (sqrt.f64 (exp.f64 re)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (+.f64 1 re)) (+.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 1 re))) (+.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 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (sqrt.f64 (exp.f64 re)) re) (+.f64 1 (expm1.f64 (+.f64 1 re)))))))) (#(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 1 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 (fma.f64 re 1/2 1) re 1) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 (fma.f64 re 1/2 1) re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 (fma.f64 re 1/2 1) re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (*.f64 (fma.f64 re 1/2 1) re)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (*.f64 (fma.f64 re 1/2 1) re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (+.f64 1 (*.f64 re (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 re) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (fma.f64 re 1/2 1) re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re 1 (+.f64 1 (*.f64 re (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 re 1/2) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (+.f64 1 (*.f64 re 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 re) 1 (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 re re) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re 1/2) re (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (*.f64 re 1/2)) 1 (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re re) 1/2 (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 re re) 1/4)) (*.f64 (cbrt.f64 (*.f64 re 1/2)) re) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (+.f64 1 (*.f64 re (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (+.f64 1 (*.f64 re (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (*.f64 (cbrt.f64 re) (*.f64 re 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 re (*.f64 re 1/2))) (cbrt.f64 (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 re (sqrt.f64 1/2)) 4)) (cbrt.f64 (*.f64 re (*.f64 re 1/2))) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (+.f64 1 re)) (cbrt.f64 (pow.f64 (+.f64 1 re) 2)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (+.f64 1 re) 2)) (cbrt.f64 (+.f64 1 re)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 re 1/2)) (*.f64 (sqrt.f64 (*.f64 re 1/2)) re) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (+.f64 1 (*.f64 re (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (*.f64 (sqrt.f64 re) (*.f64 re 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (sqrt.f64 1/2)) (*.f64 re (sqrt.f64 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 re)) (sqrt.f64 (+.f64 1 re)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re 1) 1)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (*.f64 re re)) (/.f64 1 (-.f64 1 re)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 re 1/2 1) re)) 2) (cbrt.f64 (*.f64 (fma.f64 re 1/2 1) re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (fma.f64 re 1/2 1) re)) (sqrt.f64 (*.f64 (fma.f64 re 1/2 1) re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 re 1/2 1) re 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (cbrt.f64 (*.f64 (*.f64 re re) 1/4))) (cbrt.f64 (*.f64 re 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (sqrt.f64 (*.f64 re 1/2))) (sqrt.f64 (*.f64 re 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re 1/2) (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 re) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re 1/2) (sqrt.f64 re)) (sqrt.f64 re) (+.f64 1 re))))))

simplify128.0ms (1.9%)

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
040575
1114573
2372521
31790497
43573497
53993497
64688497
74788497
84896497
95034497
107562497
117944497
Stop Event
node limit
Counts
182 → 173
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))
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))

localize25.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

Compiled 61 to 37 computations (39.3% saved)

series10.0ms (0.1%)

Counts
4 → 48
Calls

15 calls:

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

rewrite101.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
777×fma-def_binary64
752×log-prod_binary64
315×fma-neg_binary64
273×expm1-udef_binary64
272×log1p-udef_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01460
131850
2464250
Stop Event
node limit
Counts
4 → 227
Calls
Call 1
Inputs
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re)))))
(*.f64 1/6 re)
(*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re)))
(+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 im) (*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)))) (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 3) (pow.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) 3)) (fma.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (sin.f64 im) (+.f64 1 re)) (-.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) (*.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (sin.f64 im) (+.f64 1 re))) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))) (-.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 (+.f64 1 re) 3) (pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 3)) (sin.f64 im)) (fma.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) (neg.f64 (+.f64 1 re))) (pow.f64 (+.f64 1 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (+.f64 1 re) 2) (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4))) (sin.f64 im)) (-.f64 (+.f64 1 re) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (+.f64 (pow.f64 (+.f64 1 re) 3) (pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 3))) (fma.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) (neg.f64 (+.f64 1 re))) (pow.f64 (+.f64 1 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (-.f64 (pow.f64 (+.f64 1 re) 2) (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4)))) (-.f64 (+.f64 1 re) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) (exp.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)) 3) (pow.f64 (sin.f64 im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (sin.f64 im)) (log1p.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (+.f64 (log.f64 (sin.f64 im)) (log1p.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) 1 (*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) 1 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (+.f64 1 re) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 im) (*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 (*.f64 re (fma.f64 re 1/6 1/2)) (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 re) (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re re) (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 re 1/6 1/2) (*.f64 (*.f64 re re) (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4))) (*.f64 (cbrt.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (+.f64 1 re) 2)) (*.f64 (cbrt.f64 (+.f64 1 re)) (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (sin.f64 im)) (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (sin.f64 im)) (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (cbrt.f64 (sin.f64 im)) (*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (cbrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (*.f64 (cbrt.f64 (sin.f64 im)) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (*.f64 (cbrt.f64 (sin.f64 im)) (+.f64 1 re)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2))) (*.f64 (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2))) (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 re)) (*.f64 (sqrt.f64 (+.f64 1 re)) (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)) (*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 1 re)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) 1 (*.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) (cbrt.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))) (cbrt.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re))) (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))) (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re))) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) (sqrt.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(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))) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (sin.f64 im)) (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2)))) (*.f64 (sqrt.f64 (sin.f64 im)) (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2)))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2))) (sqrt.f64 (sin.f64 im))) (*.f64 (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2))) (sqrt.f64 (sin.f64 im))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (+.f64 1 re))) (*.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (+.f64 1 re))) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (+.f64 1 re)) (sqrt.f64 (sin.f64 im))) (*.f64 (sqrt.f64 (+.f64 1 re)) (sqrt.f64 (sin.f64 im))) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) re) (*.f64 re (fma.f64 re 1/6 1/2)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (*.f64 re re)) (fma.f64 re 1/6 1/2) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (fma.f64 re 1/6 1/2)) (*.f64 re re) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (cbrt.f64 (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4)))) (cbrt.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2)))) (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2))) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (cbrt.f64 (pow.f64 (sin.f64 im) 2))) (cbrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (cbrt.f64 (pow.f64 (+.f64 1 re) 2))) (cbrt.f64 (+.f64 1 re)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (sqrt.f64 (+.f64 1 re))) (sqrt.f64 (+.f64 1 re)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (+.f64 1 re) (cbrt.f64 (pow.f64 (sin.f64 im) 2))) (cbrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (+.f64 1 re) (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 re 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 re) 1/6)) (cbrt.f64 (pow.f64 (exp.f64 re) 1/6)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 re) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 re) 1/6))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 re) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 re 1/6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 re 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 re 1/6)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 re 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 re 1/6) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 re re) 1/36))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 re 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 re 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 re 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 re 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 re 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 re 1/6)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 re (*.f64 re 1/2)) (*.f64 1/6 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/6 (pow.f64 re 3)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 re (*.f64 re 1/2)) 1) (*.f64 (*.f64 1/6 (pow.f64 re 3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re))) (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 re (*.f64 re 1/2)) 3) (pow.f64 (*.f64 1/6 (pow.f64 re 3)) 3)) (fma.f64 (*.f64 re (*.f64 re 1/2)) (*.f64 re (*.f64 re 1/2)) (-.f64 (*.f64 (*.f64 1/6 (pow.f64 re 3)) (*.f64 1/6 (pow.f64 re 3))) (*.f64 (*.f64 re (*.f64 re 1/2)) (*.f64 1/6 (pow.f64 re 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re 1/2)) (*.f64 re (*.f64 re 1/2))) (*.f64 (*.f64 1/6 (pow.f64 re 3)) (*.f64 1/6 (pow.f64 re 3)))) (-.f64 (*.f64 re (*.f64 re 1/2)) (*.f64 1/6 (pow.f64 re 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 1/216 (pow.f64 re 3) 1/8) (*.f64 re re)) (fma.f64 (*.f64 re 1/6) (fma.f64 re 1/6 -1/2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1/4 (*.f64 (*.f64 re re) 1/36)) (*.f64 re re)) (+.f64 1/2 (*.f64 -1/6 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 re re) (fma.f64 1/216 (pow.f64 re 3) 1/8)) (fma.f64 (*.f64 re 1/6) (fma.f64 re 1/6 -1/2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 re re) (-.f64 1/4 (*.f64 (*.f64 re re) 1/36))) (+.f64 1/2 (*.f64 -1/6 re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 1/6 (pow.f64 re 3))) (exp.f64 (*.f64 re (*.f64 re 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 2 (log.f64 re) (log.f64 (fma.f64 re 1/6 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 2 (log.f64 re) (log.f64 (fma.f64 re 1/6 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 re (*.f64 re 1/2)) (*.f64 1/6 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/6 (pow.f64 re 3)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 re 1/2) (*.f64 1/6 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 re (*.f64 re 1/6)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 1/6 (*.f64 re re)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re re) 1/2 (*.f64 1/6 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re re) (*.f64 re 1/6) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/6 (pow.f64 re 3) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re 1/6) (*.f64 re re) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 re re) 1/36)) (*.f64 (cbrt.f64 (*.f64 re 1/6)) (*.f64 re re)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 re 4)) (*.f64 (pow.f64 (cbrt.f64 re) 2) (*.f64 re 1/6)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 re 4)) (*.f64 (pow.f64 (cbrt.f64 re) 2) 1/2) (*.f64 1/6 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 re 1/6)) (*.f64 (sqrt.f64 (*.f64 re 1/6)) (*.f64 re re)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 re 3) 1/6 (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (*.f64 re 1/2)) 1 (*.f64 (*.f64 1/6 (pow.f64 re 3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 re (*.f64 re 1/2))) (cbrt.f64 (*.f64 re (*.f64 re 1/2)))) (cbrt.f64 (*.f64 re (*.f64 re 1/2))) (*.f64 1/6 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 1/6 (pow.f64 re 3))) (cbrt.f64 (*.f64 1/6 (pow.f64 re 3)))) (cbrt.f64 (*.f64 1/6 (pow.f64 re 3))) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 re (*.f64 re 1/2))) (sqrt.f64 (*.f64 re (*.f64 re 1/2))) (*.f64 1/6 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 1/6 (pow.f64 re 3))) (sqrt.f64 (*.f64 1/6 (pow.f64 re 3))) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (sqrt.f64 (*.f64 re 1/6))) (*.f64 re (sqrt.f64 (*.f64 re 1/6))) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (*.f64 re 1/6)) re) (*.f64 (sqrt.f64 (*.f64 re 1/6)) re) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 re) re (*.f64 1/6 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re 1/6) re) re (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re re) 1/6) re (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re re) (cbrt.f64 (*.f64 (*.f64 re re) 1/36))) (cbrt.f64 (*.f64 re 1/6)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re re) (sqrt.f64 (*.f64 re 1/6))) (sqrt.f64 (*.f64 re 1/6)) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re 1/6) (cbrt.f64 (pow.f64 re 4))) (pow.f64 (cbrt.f64 re) 2) (*.f64 re (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 (cbrt.f64 (pow.f64 re 4))) (pow.f64 (cbrt.f64 re) 2) (*.f64 1/6 (pow.f64 re 3)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (+.f64 1 re) 2) (-.f64 (+.f64 1 re) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) (/.f64 (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4)) (-.f64 (+.f64 1 re) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))) (cbrt.f64 (pow.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)) 2)) (cbrt.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))) (sqrt.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (+.f64 1 re) 3) (pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 3)) (/.f64 1 (fma.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) (neg.f64 (+.f64 1 re))) (pow.f64 (+.f64 1 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (+.f64 1 re) 2) (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4))) (/.f64 1 (-.f64 (+.f64 1 re) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) (neg.f64 (+.f64 1 re))) (pow.f64 (+.f64 1 re) 2)) (+.f64 (pow.f64 (+.f64 1 re) 3) (pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (+.f64 1 re) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (-.f64 (pow.f64 (+.f64 1 re) 2) (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (+.f64 1 re) 3) (pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 3)) (fma.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) (neg.f64 (+.f64 1 re))) (pow.f64 (+.f64 1 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (+.f64 1 re) 3) (pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 3)) (fma.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4) (-.f64 (pow.f64 (+.f64 1 re) 2) (*.f64 (*.f64 (+.f64 1 re) (*.f64 re re)) (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 1 re) 2) (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4))) (-.f64 (+.f64 1 re) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (+.f64 1 re) 3) (pow.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 3))) (neg.f64 (fma.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) (neg.f64 (+.f64 1 re))) (pow.f64 (+.f64 1 re) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (+.f64 1 re) 2) (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4)))) (neg.f64 (-.f64 (+.f64 1 re) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) 3)) (+.f64 1 (-.f64 (*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))) (-.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4)) (pow.f64 (+.f64 1 re) 2)) (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) (neg.f64 (+.f64 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (+.f64 1 re))) (pow.f64 (exp.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (+.f64 1 re)) (+.f64 1 (expm1.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (+.f64 1 re))) (+.f64 1 (expm1.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) (exp.f64 (+.f64 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re)) (+.f64 1 (expm1.f64 (+.f64 1 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))) (+.f64 1 (expm1.f64 (+.f64 1 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (+.f64 1 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 re) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 re (*.f64 re 1/2)) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re 1 (+.f64 1 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 re 1/2) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 re) 1 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re re) 1/2 (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 re 1/6 1/2) (*.f64 re re) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))) 1 (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 re 1/6 1/2)) 2) (*.f64 (cbrt.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (+.f64 1 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (+.f64 1 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (*.f64 (cbrt.f64 re) (*.f64 re (fma.f64 re 1/6 1/2))) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (cbrt.f64 (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4))) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 (fma.f64 re 1/6 1/2) 2) (pow.f64 re 4))) (cbrt.f64 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (+.f64 1 re)) (cbrt.f64 (pow.f64 (+.f64 1 re) 2)) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (+.f64 1 re) 2)) (cbrt.f64 (+.f64 1 re)) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 re 4)) (*.f64 (pow.f64 (cbrt.f64 re) 2) (fma.f64 re 1/6 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 re 4)) (*.f64 (pow.f64 (cbrt.f64 re) 2) 1/2) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 re 1/6 1/2)) (*.f64 (sqrt.f64 (fma.f64 re 1/6 1/2)) (*.f64 re re)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (+.f64 1 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (*.f64 (sqrt.f64 re) (*.f64 re (fma.f64 re 1/6 1/2))) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2))) (*.f64 re (sqrt.f64 (fma.f64 re 1/6 1/2))) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 re)) (sqrt.f64 (+.f64 1 re)) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re 1) 1)) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (*.f64 re re)) (/.f64 1 (-.f64 1 re)) (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (fma.f64 re 1/6 1/2)) re (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (cbrt.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))) (cbrt.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 re (*.f64 re 1/2))) (cbrt.f64 (*.f64 re (*.f64 re 1/2)))) (cbrt.f64 (*.f64 re (*.f64 re 1/2))) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sqrt.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 re (*.f64 re 1/2))) (sqrt.f64 (*.f64 re (*.f64 re 1/2))) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cbrt.f64 (pow.f64 re 4))) (sqrt.f64 (pow.f64 (cbrt.f64 re) 2)) (+.f64 1 (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 re) re (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re re) (pow.f64 (cbrt.f64 (fma.f64 re 1/6 1/2)) 2)) (cbrt.f64 (fma.f64 re 1/6 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re re) (sqrt.f64 (fma.f64 re 1/6 1/2))) (sqrt.f64 (fma.f64 re 1/6 1/2)) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (fma.f64 re 1/6 1/2) (cbrt.f64 (pow.f64 re 4))) (pow.f64 (cbrt.f64 re) 2) (+.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/2 (cbrt.f64 (pow.f64 re 4))) (pow.f64 (cbrt.f64 re) 2) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))))))

simplify175.0ms (2.6%)

Algorithm
egg-herbie
Rules
932×unswap-sqr_binary64
804×*-commutative_binary64
396×distribute-lft-out_binary64
386×fma-def_binary64
377×distribute-rgt-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
058936
1176844
2542733
33003703
43600703
54091703
64676703
74812703
84948703
95606703
105838703
116147703
127803703
Stop Event
node limit
Counts
275 → 263
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5)))))
(+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5))))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(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 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.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) (+.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 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.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) (+.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 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
1
(+.f64 1 re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) (+.f64 1 re)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 (+.f64 (*.f64 1/6 (pow.f64 re 3)) re)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 (+.f64 (*.f64 1/6 (pow.f64 re 3)) re)))
Outputs
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im)
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im)
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im))
(fma.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 3)) (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im))
(fma.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (*.f64 (pow.f64 im 3) -1/6)))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5)))))
(fma.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 3)) (fma.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 5)))))
(fma.f64 -1/6 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (pow.f64 im 3)) (fma.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 (pow.f64 im 3) (fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) -1/6 -1/6) (*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5))))))
(fma.f64 -1/5040 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 3)) (fma.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 5))))))
(fma.f64 -1/5040 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (pow.f64 im 3)) (fma.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (*.f64 (pow.f64 im 5) 1/120)))))
(+.f64 (*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) 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 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.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 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) 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 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 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) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))))
(+.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))
(+.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 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(*.f64 (sin.f64 im) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (*.f64 re re) (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im)))
(*.f64 (fma.f64 re 1/6 1/2) (*.f64 (*.f64 re re) (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)))))
(fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))))
(fma.f64 re (sin.f64 im) (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))))
(*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 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 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(*.f64 (sin.f64 im) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (*.f64 re re) (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im)))
(*.f64 (fma.f64 re 1/6 1/2) (*.f64 (*.f64 re re) (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)))))
(fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))))
(fma.f64 re (sin.f64 im) (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))))
(*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 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 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 (*.f64 re re) 1/2)
(*.f64 re (*.f64 re 1/2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
1
(+.f64 1 re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 1 re))
(+.f64 re (fma.f64 (*.f64 re re) 1/2 1))
(+.f64 1 (fma.f64 re (*.f64 re 1/2) re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) (+.f64 1 re)))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))
(+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re))
(+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) re))
(fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)
(fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 (+.f64 (*.f64 1/6 (pow.f64 re 3)) re)))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))
(+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re))
(+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) re))
(fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)
(fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 (+.f64 (*.f64 1/6 (pow.f64 re 3)) re)))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) (+.f64 1 re)))
(+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re))
(+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(expm1.f64 (sin.f64 im))
0.2b
(log1p.f64 (expm1.f64 (sin.f64 im)))
Compiler

Compiled 12 to 5 computations (58.3% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
im
@0
(log1p.f64 (expm1.f64 (sin.f64 im)))
0.0ms
im
@0
(expm1.f64 (sin.f64 im))
0.0ms
im
@inf
(expm1.f64 (sin.f64 im))
0.0ms
im
@-inf
(expm1.f64 (sin.f64 im))
0.0ms
im
@inf
(log1p.f64 (expm1.f64 (sin.f64 im)))

rewrite47.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
353×pow1_binary64
340×add-sqr-sqrt_binary64
334×*-un-lft-identity_binary64
326×expm1-log1p-u_binary64
325×add-log-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
058
1808
28838
Stop Event
node limit
Counts
2 → 85
Calls
Call 1
Inputs
(log1p.f64 (expm1.f64 (sin.f64 im)))
(expm1.f64 (sin.f64 im))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sin.f64 im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sin.f64 im)))) (log.f64 (sqrt.f64 (exp.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log1p.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 3)) (log.f64 (+.f64 1 (-.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 2) (expm1.f64 (sin.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sin.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (-.f64 1 (pow.f64 (expm1.f64 (sin.f64 im)) 2))) (log.f64 (-.f64 1 (expm1.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 (+.f64 1 im)) (cos.f64 1)) (*.f64 (cos.f64 (+.f64 1 im)) (sin.f64 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 im)) (pow.f64 (cbrt.f64 (sin.f64 im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (cbrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 im) 1/4) (sqrt.f64 (pow.f64 (sin.f64 im) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 5/2)) (pow.f64 (sin.f64 im) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (cbrt.f64 (sin.f64 im))) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (sin.f64 im) 3/2)) (pow.f64 (sin.f64 im) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 5)) (pow.f64 (sin.f64 im) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 (sin.f64 im) (cbrt.f64 (sin.f64 im))) 2) 1/3) (cbrt.f64 (cbrt.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (sin.f64 im) 5/2) 1/3) (pow.f64 (sin.f64 im) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 (cos.f64 (-.f64 im im)) (cos.f64 (+.f64 im im)))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 1 (sin.f64 im)) 3) 1) (+.f64 (*.f64 (+.f64 1 (sin.f64 im)) (+.f64 1 (sin.f64 im))) (+.f64 1 (*.f64 (+.f64 1 (sin.f64 im)) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sin.f64 im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 im) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 im) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sin.f64 im)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (sin.f64 im)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (sin.f64 im)))) (sqrt.f64 (log.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (cbrt.f64 (pow.f64 (log.f64 (sin.f64 im)) 2))) (cbrt.f64 (log.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (sin.f64 im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (sin.f64 im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 im)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (sin.f64 im))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (sin.f64 im))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (sin.f64 im))) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (exp.f64 (sin.f64 im)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (expm1.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (expm1.f64 (sin.f64 im))))) (log.f64 (sqrt.f64 (exp.f64 (expm1.f64 (sin.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (expm1.f64 (sin.f64 im)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (expm1.f64 (sin.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (sin.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (exp.f64 (sin.f64 im)) 3) (+.f64 (pow.f64 (exp.f64 (sin.f64 im)) 2) (+.f64 1 (*.f64 (exp.f64 (sin.f64 im)) 1)))) (/.f64 1 (+.f64 (pow.f64 (exp.f64 (sin.f64 im)) 2) (+.f64 1 (*.f64 (exp.f64 (sin.f64 im)) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (exp.f64 (sin.f64 im)) 2) (+.f64 (exp.f64 (sin.f64 im)) 1)) (/.f64 1 (+.f64 (exp.f64 (sin.f64 im)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (sin.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (expm1.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (expm1.f64 (sin.f64 im))) (pow.f64 (cbrt.f64 (expm1.f64 (sin.f64 im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (expm1.f64 (sin.f64 im))) 2) (cbrt.f64 (expm1.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (expm1.f64 (sin.f64 im))) (sqrt.f64 (expm1.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 1/4) (sqrt.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 (expm1.f64 (sin.f64 im)) (cbrt.f64 (expm1.f64 (sin.f64 im)))) 2)) (cbrt.f64 (cbrt.f64 (expm1.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 5/2)) (pow.f64 (expm1.f64 (sin.f64 im)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 (sin.f64 im))) 5)) (pow.f64 (expm1.f64 (sin.f64 im)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 3/2)) (pow.f64 (expm1.f64 (sin.f64 im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (expm1.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 (expm1.f64 (sin.f64 im)) (cbrt.f64 (expm1.f64 (sin.f64 im)))) 2) 1/3) (cbrt.f64 (cbrt.f64 (expm1.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 5/2) 1/3) (pow.f64 (expm1.f64 (sin.f64 im)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (exp.f64 (sin.f64 im)) 3) 1) (+.f64 (pow.f64 (exp.f64 (sin.f64 im)) 2) (+.f64 1 (*.f64 (exp.f64 (sin.f64 im)) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (exp.f64 (sin.f64 im)) 2) 1) (+.f64 (exp.f64 (sin.f64 im)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (exp.f64 (sin.f64 im)) 3) 1)) (neg.f64 (+.f64 (pow.f64 (exp.f64 (sin.f64 im)) 2) (+.f64 1 (*.f64 (exp.f64 (sin.f64 im)) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (exp.f64 (sin.f64 im)) 2) 1)) (neg.f64 (+.f64 (exp.f64 (sin.f64 im)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (exp.f64 (sin.f64 im)) 3) -1) (+.f64 (pow.f64 (exp.f64 (sin.f64 im)) 2) (-.f64 1 (*.f64 (exp.f64 (sin.f64 im)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (expm1.f64 (sin.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (expm1.f64 (sin.f64 im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (expm1.f64 (sin.f64 im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (expm1.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (cbrt.f64 (pow.f64 (log.f64 (expm1.f64 (sin.f64 im))) 2))) (cbrt.f64 (log.f64 (expm1.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (expm1.f64 (sin.f64 im))))) (sqrt.f64 (log.f64 (expm1.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (expm1.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (expm1.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (expm1.f64 (sin.f64 im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (expm1.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (expm1.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (expm1.f64 (sin.f64 im)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (expm1.f64 (sin.f64 im)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (expm1.f64 (sin.f64 im)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (exp.f64 (sin.f64 im)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (exp.f64 (sin.f64 im))) 2) (cbrt.f64 (exp.f64 (sin.f64 im))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (exp.f64 (sin.f64 im))) (sqrt.f64 (exp.f64 (sin.f64 im))) -1)))))

simplify166.0ms (2.5%)

Algorithm
egg-herbie
Rules
1346×fma-def_binary64
714×sqr-pow_binary64
543×cube-prod_binary64
371×*-commutative_binary64
324×fabs-mul_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
037156
198156
2217156
3587156
41520156
53011156
63235156
73442156
83673156
93953156
104354156
115215156
125779156
136493156
146815156
157205156
167513156
177821156
Stop Event
node limit
Counts
109 → 99
Calls
Call 1
Inputs
im
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
im
(+.f64 (*.f64 1/2 (pow.f64 im 2)) im)
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/8 (pow.f64 im 4)) im))
(+.f64 (*.f64 -1/15 (pow.f64 im 5)) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/8 (pow.f64 im 4)) im)))
(-.f64 (exp.f64 (sin.f64 im)) 1)
(-.f64 (exp.f64 (sin.f64 im)) 1)
(-.f64 (exp.f64 (sin.f64 im)) 1)
(-.f64 (exp.f64 (sin.f64 im)) 1)
(-.f64 (exp.f64 (sin.f64 im)) 1)
(-.f64 (exp.f64 (sin.f64 im)) 1)
(-.f64 (exp.f64 (sin.f64 im)) 1)
(-.f64 (exp.f64 (sin.f64 im)) 1)
Outputs
im
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(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)))
(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)))
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
im
(+.f64 (*.f64 1/2 (pow.f64 im 2)) im)
(fma.f64 1/2 (*.f64 im im) im)
(fma.f64 im (*.f64 im 1/2) im)
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/8 (pow.f64 im 4)) im))
(fma.f64 1/2 (*.f64 im im) (fma.f64 -1/8 (pow.f64 im 4) im))
(fma.f64 im (*.f64 im 1/2) (fma.f64 -1/8 (pow.f64 im 4) im))
(*.f64 im (fma.f64 (pow.f64 im 3) -1/8 (fma.f64 im 1/2 1)))
(*.f64 im (fma.f64 im 1/2 (fma.f64 (pow.f64 im 3) -1/8 1)))
(*.f64 im (fma.f64 im (fma.f64 im (*.f64 im -1/8) 1/2) 1))
(+.f64 (*.f64 -1/15 (pow.f64 im 5)) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/8 (pow.f64 im 4)) im)))
(fma.f64 -1/15 (pow.f64 im 5) (fma.f64 1/2 (*.f64 im im) (fma.f64 -1/8 (pow.f64 im 4) im)))
(fma.f64 (pow.f64 im 5) -1/15 (fma.f64 1/2 (*.f64 im im) (fma.f64 -1/8 (pow.f64 im 4) im)))
(fma.f64 im (*.f64 im 1/2) (fma.f64 (pow.f64 im 5) -1/15 (fma.f64 -1/8 (pow.f64 im 4) im)))
(fma.f64 im (*.f64 im 1/2) (fma.f64 -1/8 (pow.f64 im 4) (fma.f64 (pow.f64 im 5) -1/15 im)))
(-.f64 (exp.f64 (sin.f64 im)) 1)
(expm1.f64 (sin.f64 im))
(-.f64 (exp.f64 (sin.f64 im)) 1)
(expm1.f64 (sin.f64 im))
(-.f64 (exp.f64 (sin.f64 im)) 1)
(expm1.f64 (sin.f64 im))
(-.f64 (exp.f64 (sin.f64 im)) 1)
(expm1.f64 (sin.f64 im))
(-.f64 (exp.f64 (sin.f64 im)) 1)
(expm1.f64 (sin.f64 im))
(-.f64 (exp.f64 (sin.f64 im)) 1)
(expm1.f64 (sin.f64 im))
(-.f64 (exp.f64 (sin.f64 im)) 1)
(expm1.f64 (sin.f64 im))
(-.f64 (exp.f64 (sin.f64 im)) 1)
(expm1.f64 (sin.f64 im))

eval217.0ms (3.2%)

Compiler

Compiled 11169 to 6570 computations (41.2% saved)

prune97.0ms (1.4%)

Pruning

14 alts after pruning (7 fresh and 7 done)

PrunedKeptTotal
New6316637
Fresh213
Picked011
Done268
Total63514649
Error
0b
Counts
649 → 14
Alt Table
Click to see full alt table
StatusErrorProgram
41.5b
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im im)
21.6b
(*.f64 (sin.f64 im) (+.f64 re 1))
15.0b
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48))))))) (sqrt.f64 (exp.f64 re)))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
21.7b
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
19.9b
(*.f64 (exp.f64 re) im)
61.5b
(*.f64 re im)
41.3b
im
21.6b
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re)))))
41.4b
(+.f64 (*.f64 re im) im)
21.7b
(log1p.f64 (expm1.f64 (sin.f64 im)))
21.6b
(sin.f64 im)
21.7b
(+.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))
19.9b
(*.f64 (*.f64 (sqrt.f64 (exp.f64 re)) im) (sqrt.f64 (exp.f64 re)))
Compiler

Compiled 219 to 146 computations (33.3% saved)

localize42.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 re (+.f64 1/8 (*.f64 re 1/48)))
0.3b
(*.f64 re 1/48)
1.9b
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48)))))))
12.6b
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48))))))) (sqrt.f64 (exp.f64 re)))
Compiler

Compiled 99 to 68 computations (31.3% saved)

series14.0ms (0.2%)

Counts
4 → 72
Calls

18 calls:

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

rewrite95.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
675×fma-def_binary64
331×expm1-udef_binary64
331×log1p-udef_binary64
274×fma-neg_binary64
268×log-pow_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01869
139355
2537655
Stop Event
node limit
Counts
4 → 142
Calls
Call 1
Inputs
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48))))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48)))))))
(*.f64 re 1/48)
(*.f64 re (+.f64 1/8 (*.f64 re 1/48)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sqrt.f64 (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (sin.f64 im)) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.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 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) (sqrt.f64 (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.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) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) 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) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 re 1/2 (log.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 re 1/2 (log.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sqrt.f64 (exp.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (exp.f64 re)) (sin.f64 im) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 im) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) 3)) (+.f64 (pow.f64 (sin.f64 im) 2) (-.f64 (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (*.f64 (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (sin.f64 im) 2) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))) (-.f64 (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) 3)) (sin.f64 im)) (fma.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) 2)) (sin.f64 im)) (-.f64 1 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (+.f64 1 (pow.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) 3))) (fma.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (-.f64 1 (pow.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) 2))) (-.f64 1 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (sin.f64 im))) (exp.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (exp.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (+.f64 1 (expm1.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) 3) (pow.f64 (sin.f64 im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) 1 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) 1 (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 im) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) (sin.f64 im)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) (*.f64 re (sin.f64 im)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) (sin.f64 im) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (sin.f64 im)) (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (sin.f64 im)) (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (cbrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (cbrt.f64 (sin.f64 im)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (*.f64 (cbrt.f64 (sin.f64 im)) 1) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (*.f64 (cbrt.f64 (sin.f64 im)) 1) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 2)) (*.f64 (cbrt.f64 (sin.f64 im)) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) 2)) (*.f64 (cbrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sin.f64 im)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) 1))))) (#(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) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) 1) (*.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (*.f64 (sqrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sin.f64 im)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (cbrt.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))))) (cbrt.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (sqrt.f64 (*.f64 (sin.f64 im) (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sqrt.f64 (sin.f64 im))) (*.f64 (sqrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sqrt.f64 (sin.f64 im))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (*.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) (cbrt.f64 (pow.f64 (sin.f64 im) 2))) (cbrt.f64 (sin.f64 im)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) (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) re) (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) re (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (cbrt.f64 (pow.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)) 2))) (cbrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (sqrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2)))) (sqrt.f64 (*.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2))) (sin.f64 im))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 re 1/48))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 re 1/48) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 re 1/48)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 re 1/48)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/110592 (pow.f64 re 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 re 1/48) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/48) re))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 re 1/48))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 1/110592 (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 re 1/48)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 re 1/8) (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 re (*.f64 re 1/48)) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 re 1/8) 1) (*.f64 (*.f64 re (*.f64 re 1/48)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 re (fma.f64 re 1/48 1/8)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 re 1/8) 3) (pow.f64 (*.f64 re (*.f64 re 1/48)) 3)) (fma.f64 (*.f64 re 1/8) (*.f64 re 1/8) (-.f64 (*.f64 (*.f64 re (*.f64 re 1/48)) (*.f64 re (*.f64 re 1/48))) (*.f64 (*.f64 re 1/8) (*.f64 re (*.f64 re 1/48))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 re 1/8) (*.f64 re 1/8)) (*.f64 (*.f64 re (*.f64 re 1/48)) (*.f64 re (*.f64 re 1/48)))) (-.f64 (*.f64 re 1/8) (*.f64 re (*.f64 re 1/48))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 1/110592 (pow.f64 re 3) 1/512) re) (fma.f64 (*.f64 re 1/48) (fma.f64 re 1/48 -1/8) 1/64))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1/64 (pow.f64 (*.f64 re 1/48) 2)) re) (+.f64 1/8 (*.f64 -1/48 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 re (fma.f64 1/110592 (pow.f64 re 3) 1/512)) (fma.f64 (*.f64 re 1/48) (fma.f64 re 1/48 -1/8) 1/64))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 re (-.f64 1/64 (pow.f64 (*.f64 re 1/48) 2))) (+.f64 1/8 (*.f64 -1/48 re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 re (fma.f64 re 1/48 1/8)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 re (fma.f64 re 1/48 1/8))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 re (fma.f64 re 1/48 1/8))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 re (fma.f64 re 1/48 1/8)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 re (fma.f64 re 1/48 1/8)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 re) (fma.f64 re 1/48 1/8)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 re (fma.f64 re 1/48 1/8)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 re (*.f64 re 1/48))) (exp.f64 (*.f64 re 1/8))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 re (fma.f64 re 1/48 1/8)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 re (fma.f64 re 1/48 1/8))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 re (fma.f64 re 1/48 1/8))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 re (fma.f64 re 1/48 1/8))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 re (fma.f64 re 1/48 1/8))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 re 1/8) (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 re (*.f64 re 1/48)) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re 1/8 (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (*.f64 re 1/48) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/8 re (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/48 (*.f64 re re) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re 1/48) re (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re re) 1/48 (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 re 1/48) 2)) (*.f64 (cbrt.f64 (*.f64 re 1/48)) re) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (*.f64 (cbrt.f64 re) 1/8) (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (*.f64 (cbrt.f64 re) (*.f64 re 1/48)) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 re 1/48)) (*.f64 (sqrt.f64 (*.f64 re 1/48)) re) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (*.f64 (sqrt.f64 re) 1/8) (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (*.f64 (sqrt.f64 re) (*.f64 re 1/48)) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re 1/8) 1 (*.f64 (*.f64 re (*.f64 re 1/48)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 re 1/8)) (cbrt.f64 (*.f64 re 1/8))) (cbrt.f64 (*.f64 re 1/8)) (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 re (*.f64 re 1/48))) (cbrt.f64 (*.f64 re (*.f64 re 1/48)))) (cbrt.f64 (*.f64 re (*.f64 re 1/48))) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 re 1/8)) (sqrt.f64 (*.f64 re 1/8)) (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 re (*.f64 re 1/48))) (sqrt.f64 (*.f64 re (*.f64 re 1/48))) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (*.f64 re 1/48)) (sqrt.f64 re)) (*.f64 (sqrt.f64 (*.f64 re 1/48)) (sqrt.f64 re)) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 re) (sqrt.f64 (*.f64 re 1/48))) (*.f64 (sqrt.f64 re) (sqrt.f64 (*.f64 re 1/48))) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/8 (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 re) (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/8 (sqrt.f64 re)) (sqrt.f64 re) (*.f64 re (*.f64 re 1/48)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re 1/48) (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 re) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 re 1/48) (sqrt.f64 re)) (sqrt.f64 re) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (cbrt.f64 (pow.f64 (*.f64 re 1/48) 2))) (cbrt.f64 (*.f64 re 1/48)) (*.f64 re 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (sqrt.f64 (*.f64 re 1/48))) (sqrt.f64 (*.f64 re 1/48)) (*.f64 re 1/8))))))

simplify161.0ms (2.4%)

Algorithm
egg-herbie
Rules
1146×distribute-lft-out_binary64
796×fma-def_binary64
522×unswap-sqr_binary64
459×associate-*l*_binary64
417×distribute-rgt-out_binary64
Iterations

Useful iterations: 8 (0.0ms)

IterNodesCost
0931714
12841491
28891240
341731234
448551234
551021234
654591234
763601234
868161159
Stop Event
node limit
Counts
214 → 195
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im))
(+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3)))) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3)))) (+.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)) (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 5))))))
(+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3)))) (+.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)) (+.f64 (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 5)))) (*.f64 -1/5040 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 7)))))))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) 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 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re))))
(+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re)))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sin.f64 im) re) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re))))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sin.f64 im) re) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re)))))))
(*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re))))
(+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re)))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sin.f64 im) re) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re))))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sin.f64 im) re) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re)))))))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3))) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 5))) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3))) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 7))) (+.f64 (*.f64 1/120 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 5))) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(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 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(+.f64 (*.f64 1/8 (*.f64 (sin.f64 im) (pow.f64 re 2))) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))
(+.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) (+.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 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(+.f64 (*.f64 1/8 (*.f64 (sin.f64 im) (pow.f64 re 2))) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))
(+.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) (+.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 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/48 re)
(*.f64 1/8 re)
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(*.f64 1/48 (pow.f64 re 2))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(*.f64 1/48 (pow.f64 re 2))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
Outputs
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) im))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im))
(+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3)))) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)))
(fma.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 3))) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) im)))
(fma.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (pow.f64 im 3) -1/6))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (sqrt.f64 (exp.f64 re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3)))) (+.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)) (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 5))))))
(fma.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 3))) (fma.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) im) (*.f64 (*.f64 1/120 (sqrt.f64 (exp.f64 re))) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 5)))))
(fma.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (pow.f64 im 3))) (fma.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im) (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (pow.f64 im 5))))))
(fma.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5))))))
(fma.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))))))
(+.f64 (*.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3)))) (+.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)) (+.f64 (*.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 5)))) (*.f64 -1/5040 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 7)))))))
(fma.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 3))) (fma.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) im) (fma.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 5))) (*.f64 (*.f64 -1/5040 (sqrt.f64 (exp.f64 re))) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 7))))))
(fma.f64 -1/6 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (pow.f64 im 3))) (fma.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im) (fma.f64 1/120 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (pow.f64 im 5))) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (pow.f64 im 7) -1/5040))))))
(+.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7))))))
(+.f64 (*.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7))))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (+.f64 im (*.f64 -1/6 (pow.f64 im 3))) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7))))))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im)))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re))))) (sqrt.f64 (exp.f64 re)))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 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))
(*.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 (*.f64 1/2 (sin.f64 im)) (*.f64 re re))))
(+.f64 (sin.f64 im) (fma.f64 re (sin.f64 im) (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/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))))))
(fma.f64 (*.f64 (sin.f64 im) 1/6) (pow.f64 re 3) (+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 re re)))))
(+.f64 (fma.f64 re (sin.f64 im) (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)))) (fma.f64 (*.f64 (sin.f64 im) 1/6) (pow.f64 re 3) (sin.f64 im)))
(fma.f64 (sin.f64 im) (*.f64 (pow.f64 re 3) 1/6) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2)))))
(fma.f64 (+.f64 re 1) (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re)))))
(fma.f64 (+.f64 re 1) (sin.f64 im) (*.f64 re (*.f64 re (*.f64 (sin.f64 im) (+.f64 (*.f64 re 1/6) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re))) (+.f64 re 1)))
(*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re))))
(*.f64 1/48 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (pow.f64 re 3))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (*.f64 1/48 (pow.f64 re 3))))
(+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re)))))
(fma.f64 1/48 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/8 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (*.f64 re re)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (fma.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re 1/48 1/8) (*.f64 (sin.f64 im) (*.f64 re re))))
(*.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (sin.f64 im)) (*.f64 re (*.f64 re (fma.f64 re 1/48 1/8))))
(*.f64 (*.f64 re (sqrt.f64 (exp.f64 re))) (*.f64 re (*.f64 (sin.f64 im) (fma.f64 re 1/48 1/8))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sin.f64 im) re) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re))))))
(fma.f64 1/2 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 re (sin.f64 im))) (fma.f64 1/48 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/8 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (*.f64 re re))))))
(fma.f64 1/2 (*.f64 re (*.f64 (sqrt.f64 (exp.f64 re)) (sin.f64 im))) (*.f64 (sqrt.f64 (exp.f64 re)) (fma.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re))))))
(*.f64 (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) (*.f64 re (*.f64 (sqrt.f64 (exp.f64 re)) (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) (sin.f64 im)) (sqrt.f64 (exp.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sin.f64 im) re) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re)))))))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im)))
(*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re))))
(*.f64 1/48 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (pow.f64 re 3))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (*.f64 1/48 (pow.f64 re 3))))
(+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re)))))
(fma.f64 1/48 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/8 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (*.f64 re re)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (fma.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re)))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re 1/48 1/8) (*.f64 (sin.f64 im) (*.f64 re re))))
(*.f64 (*.f64 (sqrt.f64 (exp.f64 re)) (sin.f64 im)) (*.f64 re (*.f64 re (fma.f64 re 1/48 1/8))))
(*.f64 (*.f64 re (sqrt.f64 (exp.f64 re))) (*.f64 re (*.f64 (sin.f64 im) (fma.f64 re 1/48 1/8))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sin.f64 im) re) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re))))))
(fma.f64 1/2 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 re (sin.f64 im))) (fma.f64 1/48 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/8 (*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (sin.f64 im) (*.f64 re re))))))
(fma.f64 1/2 (*.f64 re (*.f64 (sqrt.f64 (exp.f64 re)) (sin.f64 im))) (*.f64 (sqrt.f64 (exp.f64 re)) (fma.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re))))))
(*.f64 (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) (*.f64 re (*.f64 (sqrt.f64 (exp.f64 re)) (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) (sin.f64 im)) (sqrt.f64 (exp.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sin.f64 im) re) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 1/48 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 3)) (sqrt.f64 (exp.f64 re)))) (+.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (*.f64 1/8 (*.f64 (*.f64 (sin.f64 im) (pow.f64 re 2)) (sqrt.f64 (exp.f64 re)))))))
(*.f64 (sin.f64 im) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sqrt.f64 (exp.f64 re))))
(*.f64 (sqrt.f64 (exp.f64 re)) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im)))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) im)
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3))) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im))
(fma.f64 -1/6 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 3)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) im))
(fma.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (pow.f64 im 3) -1/6)))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 5))) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im)))
(fma.f64 -1/6 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 5)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) im)))
(fma.f64 -1/6 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (pow.f64 im 3)) (fma.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))))
(fma.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 3))) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 7))) (+.f64 (*.f64 1/120 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) (pow.f64 im 5))) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im))))
(fma.f64 -1/6 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 3)) (fma.f64 -1/5040 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 7)) (fma.f64 1/120 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (pow.f64 im 5)) (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) im))))
(fma.f64 -1/6 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (pow.f64 im 3)) (fma.f64 -1/5040 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (pow.f64 im 7)) (fma.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) im (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (*.f64 (pow.f64 im 5) 1/120)))))
(+.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(+.f64 (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))) (*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (+.f64 (+.f64 im (*.f64 -1/6 (pow.f64 im 3))) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))))
(*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 1/2 (*.f64 (sin.f64 im) re)))
(+.f64 (sin.f64 im) (*.f64 (*.f64 1/2 (sin.f64 im)) re))
(fma.f64 1/2 (*.f64 re (sin.f64 im)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re 1/2)))
(fma.f64 re (*.f64 1/2 (sin.f64 im)) (sin.f64 im))
(+.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 (*.f64 1/2 (sin.f64 im)) re)))
(+.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re (sin.f64 im)) (*.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re)))))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 re 1/2) (*.f64 re (*.f64 re 1/8)))))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) (*.f64 re (+.f64 1/2 (*.f64 re 1/8)))))
(+.f64 (sin.f64 im) (*.f64 (*.f64 re (sin.f64 im)) (+.f64 1/2 (*.f64 re 1/8))))
(*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re 1/8)))))
(+.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 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(*.f64 (sin.f64 im) (*.f64 1/48 (pow.f64 re 3)))
(+.f64 (*.f64 1/8 (*.f64 (sin.f64 im) (pow.f64 re 2))) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))
(fma.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))
(fma.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re))))
(*.f64 (fma.f64 re 1/48 1/8) (*.f64 (sin.f64 im) (*.f64 re re)))
(*.f64 re (*.f64 re (*.f64 (sin.f64 im) (fma.f64 re 1/48 1/8))))
(+.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)))))
(fma.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re)) (fma.f64 1/2 (*.f64 re (sin.f64 im)) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)))))
(*.f64 re (*.f64 (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) (sin.f64 im)))
(+.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 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(*.f64 (sin.f64 im) (*.f64 1/48 (pow.f64 re 3)))
(+.f64 (*.f64 1/8 (*.f64 (sin.f64 im) (pow.f64 re 2))) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))
(fma.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3))))
(fma.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re))))
(*.f64 (fma.f64 re 1/48 1/8) (*.f64 (sin.f64 im) (*.f64 re re)))
(*.f64 re (*.f64 re (*.f64 (sin.f64 im) (fma.f64 re 1/48 1/8))))
(+.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)))))
(fma.f64 1/8 (*.f64 (sin.f64 im) (*.f64 re re)) (fma.f64 1/2 (*.f64 re (sin.f64 im)) (*.f64 1/48 (*.f64 (sin.f64 im) (pow.f64 re 3)))))
(*.f64 re (*.f64 (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) (sin.f64 im)))
(+.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 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (fma.f64 1/48 re 1/8))))) (sin.f64 im))
(*.f64 (fma.f64 re (fma.f64 re (fma.f64 re 1/48 1/8) 1/2) 1) (sin.f64 im))
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/48 re)
(*.f64 re 1/48)
(*.f64 1/8 re)
(*.f64 re 1/8)
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(fma.f64 1/8 re (*.f64 1/48 (*.f64 re re)))
(*.f64 re (fma.f64 re 1/48 1/8))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(fma.f64 1/8 re (*.f64 1/48 (*.f64 re re)))
(*.f64 re (fma.f64 re 1/48 1/8))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(fma.f64 1/8 re (*.f64 1/48 (*.f64 re re)))
(*.f64 re (fma.f64 re 1/48 1/8))
(*.f64 1/48 (pow.f64 re 2))
(*.f64 1/48 (*.f64 re re))
(*.f64 re (*.f64 re 1/48))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(fma.f64 1/8 re (*.f64 1/48 (*.f64 re re)))
(*.f64 re (fma.f64 re 1/48 1/8))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(fma.f64 1/8 re (*.f64 1/48 (*.f64 re re)))
(*.f64 re (fma.f64 re 1/48 1/8))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(fma.f64 1/8 re (*.f64 1/48 (*.f64 re re)))
(*.f64 re (fma.f64 re 1/48 1/8))
(*.f64 1/48 (pow.f64 re 2))
(*.f64 1/48 (*.f64 re re))
(*.f64 re (*.f64 re 1/48))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(fma.f64 1/8 re (*.f64 1/48 (*.f64 re re)))
(*.f64 re (fma.f64 re 1/48 1/8))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(fma.f64 1/8 re (*.f64 1/48 (*.f64 re re)))
(*.f64 re (fma.f64 re 1/48 1/8))
(+.f64 (*.f64 1/8 re) (*.f64 1/48 (pow.f64 re 2)))
(fma.f64 1/8 re (*.f64 1/48 (*.f64 re re)))
(*.f64 re (fma.f64 re 1/48 1/8))

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize19.0ms (0.3%)

Local error

Found 1 expressions with local error:

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

Compiled 44 to 27 computations (38.6% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite64.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
572×log-prod_binary64
511×fma-def_binary64
428×pow-prod-down_binary64
306×pow2_binary64
240×fma-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01118
123916
2331014
Stop Event
node limit
Counts
1 → 60
Calls
Call 1
Inputs
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
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 (sin.f64 im) (*.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1)))))) (#(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 1 re) (sin.f64 im)) (*.f64 (*.f64 re (*.f64 re 1/2)) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (fma.f64 re 1/2 1) 1))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (fma.f64 re 1/2 1) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (fma.f64 re 1/2 1) 1)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (fma.f64 re 1/2 1) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 3)) (+.f64 (pow.f64 (sin.f64 im) 2) (-.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2) (*.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 (pow.f64 (sin.f64 im) 2) (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2)) (-.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 (+.f64 1 (pow.f64 (fma.f64 re (*.f64 re 1/2) re) 3)) (sin.f64 im)) (fma.f64 (fma.f64 re (*.f64 re 1/2) re) (fma.f64 re (fma.f64 re 1/2 1) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 (fma.f64 re (*.f64 re 1/2) re) 2)) (sin.f64 im)) (-.f64 1 (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (+.f64 1 (pow.f64 (fma.f64 re (*.f64 re 1/2) re) 3))) (fma.f64 (fma.f64 re (*.f64 re 1/2) re) (fma.f64 re (fma.f64 re 1/2 1) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (-.f64 1 (pow.f64 (fma.f64 re (*.f64 re 1/2) re) 2))) (-.f64 1 (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (fma.f64 re 1/2 1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (sin.f64 im))) (exp.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (exp.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (+.f64 1 (expm1.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 im) (fma.f64 re (fma.f64 re 1/2 1) 1))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) 1 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) 1 (*.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (+.f64 1 re) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 im) (*.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 re (*.f64 re 1/2) re) 2)) (*.f64 (cbrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im)) (sin.f64 im))))) (#(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) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (sin.f64 im)) (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (*.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 1))))) (#(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) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (cbrt.f64 (sin.f64 im)) (*.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) 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)) 1) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))) (#(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 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) 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)) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (*.f64 (sqrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)) (*.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 1))))) (#(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) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) 1) (*.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 re) (sin.f64 im) (*.f64 (*.f64 re (*.f64 re 1/2)) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) 2) (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (cbrt.f64 (pow.f64 (fma.f64 re (*.f64 re 1/2) re) 2))) (cbrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (sqrt.f64 (fma.f64 re (*.f64 re 1/2) re))) (sqrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (fma.f64 re (*.f64 re 1/2) 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 (fma.f64 re (*.f64 re 1/2) re) (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im)) (sin.f64 im))))))

simplify123.0ms (1.8%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
039474
1111472
2370420
31817396
43603396
54023396
64718396
74818396
84926396
95064396
107604396
117998396
Stop Event
node limit
Counts
84 → 78
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)))))
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 (fma.f64 1/2 (*.f64 re re) (+.f64 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/6 (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (+.f64 (*.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 1/120 (pow.f64 im 5)) (+.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/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 (fma.f64 1/2 (*.f64 re re) (+.f64 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 (+.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))
(+.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 (sin.f64 im) (*.f64 1/2 re)))
(+.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 (sin.f64 im) (*.f64 1/2 re)))
(+.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))

localize17.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 37 to 18 computations (51.4% saved)

series5.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite66.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
885×prod-diff_binary64
464×log-prod_binary64
307×pow-prod-down_binary64
286×fma-def_binary64
254×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0929
119129
2249229
Stop Event
node limit
Counts
2 → 88
Calls
Call 1
Inputs
(*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))
(+.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 re (*.f64 re 1/2)) (sin.f64 im)) (*.f64 re (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 im) (*.f64 re (*.f64 re 1/2))) (*.f64 (sin.f64 im) re))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (*.f64 re (*.f64 re 1/2)) (*.f64 (sin.f64 im) re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 re (*.f64 re 1/2)) (sin.f64 im) (*.f64 re (sin.f64 im)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2) (*.f64 (sin.f64 im) (-.f64 (fma.f64 re (*.f64 re 1/2) re) 1))) (/.f64 (pow.f64 (sin.f64 im) 2) (*.f64 (sin.f64 im) (-.f64 (fma.f64 re (*.f64 re 1/2) re) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 im) (+.f64 (fma.f64 re (*.f64 re 1/2) re) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))) 2) (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))) (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))))))) (#(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 1 (fma.f64 (sin.f64 im) (-.f64 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2) (pow.f64 (sin.f64 im) 2)) (/.f64 1 (*.f64 (sin.f64 im) (-.f64 (fma.f64 re (*.f64 re 1/2) re) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (fma.f64 re (*.f64 re 1/2) re) 1) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (sin.f64 im) (-.f64 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2)) (+.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 3) (pow.f64 (sin.f64 im) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 (sin.f64 im) (-.f64 (fma.f64 re (*.f64 re 1/2) re) 1)) (-.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2) (pow.f64 (sin.f64 im) 2))))))) (#(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)) (fma.f64 (sin.f64 im) (-.f64 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2)))))) (#(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 (pow.f64 (sin.f64 im) 2) (-.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2) (*.f64 (fma.f64 re (*.f64 re 1/2) re) (pow.f64 (sin.f64 im) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2) (pow.f64 (sin.f64 im) 2)) (*.f64 (sin.f64 im) (-.f64 (fma.f64 re (*.f64 re 1/2) re) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 3) (pow.f64 (sin.f64 im) 3))) (neg.f64 (fma.f64 (sin.f64 im) (-.f64 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2) (pow.f64 (sin.f64 im) 2))) (neg.f64 (*.f64 (sin.f64 im) (-.f64 (fma.f64 re (*.f64 re 1/2) re) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (sin.f64 im) 2) (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2)) (-.f64 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (sin.f64 im) (-.f64 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2)) (+.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 3) (pow.f64 (sin.f64 im) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 (sin.f64 im) (-.f64 (fma.f64 re (*.f64 re 1/2) re) 1)) (-.f64 (pow.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 2) (pow.f64 (sin.f64 im) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 im)) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (sin.f64 im))) (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (sin.f64 im)) (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (sin.f64 im))) (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))) (exp.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re)) (+.f64 1 (expm1.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) 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 (fma.f64 re (*.f64 re 1/2) re))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (sin.f64 im)) (log1p.f64 (fma.f64 re (*.f64 re 1/2) re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (+.f64 (log.f64 (sin.f64 im)) (log1p.f64 (fma.f64 re (*.f64 re 1/2) re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (+.f64 (log.f64 (sin.f64 im)) (log1p.f64 (fma.f64 re (*.f64 re 1/2) re)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/3 (+.f64 (log.f64 (sin.f64 im)) (log1p.f64 (fma.f64 re (*.f64 re 1/2) re)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/2 (+.f64 (log.f64 (sin.f64 im)) (log1p.f64 (fma.f64 re (*.f64 re 1/2) re)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) 1 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) 1 (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 im) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) 2) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) 2) (cbrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (sin.f64 im))))) (#(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) (fma.f64 re (*.f64 re 1/2) 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) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (*.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 re (*.f64 re 1/2) re) 2)) (*.f64 (cbrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (sqrt.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re))) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (*.f64 (sqrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (cbrt.f64 (pow.f64 (fma.f64 re (*.f64 re 1/2) re) 2))) (cbrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (sqrt.f64 (fma.f64 re (*.f64 re 1/2) re))) (sqrt.f64 (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (fma.f64 re (*.f64 re 1/2) 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 (fma.f64 re (*.f64 re 1/2) re) (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im)) (sin.f64 im))))))

simplify123.0ms (1.8%)

Algorithm
egg-herbie
Rules
771×distribute-rgt-in_binary64
729×distribute-lft-in_binary64
562×fma-neg_binary64
470×unswap-sqr_binary64
417×fma-def_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
059881
1178847
2525817
32244767
43953745
55861745
66858745
77240745
87956745
Stop Event
node limit
Counts
136 → 117
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 3))) (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) im))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) im) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) im) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 7))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 5))))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (sin.f64 im) re)
(+.f64 (*.f64 (sin.f64 im) re) (*.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 (*.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 (*.f64 (sin.f64 im) re) (*.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 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 (*.f64 (sin.f64 im) re) (*.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 (+.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)) re) im)
(*.f64 (fma.f64 1/2 (*.f64 re re) re) im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 3))) (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) im))
(fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (pow.f64 im 3)) (*.f64 (fma.f64 1/2 (*.f64 re re) re) im))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) im (*.f64 (fma.f64 1/2 (*.f64 re re) re) (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) im) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 5)))))
(fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (pow.f64 im 3)) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) im (*.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (pow.f64 im 5)))))
(fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (pow.f64 im 3)) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) im (*.f64 (fma.f64 1/2 (*.f64 re re) re) (*.f64 1/120 (pow.f64 im 5)))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) re) im (*.f64 (fma.f64 1/2 (*.f64 re re) re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (+.f64 im (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) im) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 7))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 5))))))
(fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (pow.f64 im 3)) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) im (fma.f64 -1/5040 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (pow.f64 im 7)) (*.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (pow.f64 im 5))))))
(fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (pow.f64 im 3)) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) im (fma.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (pow.f64 im 5)) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (*.f64 -1/5040 (pow.f64 im 7))))))
(+.f64 (*.f64 (fma.f64 1/2 (*.f64 re re) re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (fma.f64 1/2 (*.f64 re re) re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (+.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)) re))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 (fma.f64 1/2 (*.f64 re re) re) (sin.f64 im))
(*.f64 (sin.f64 im) re)
(*.f64 re (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) re) (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) re) (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) 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 1/2 (*.f64 re (*.f64 re (sin.f64 im))))
(*.f64 re (*.f64 1/2 (*.f64 re (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) re) (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) re) (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) 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 1/2 (*.f64 re (*.f64 re (sin.f64 im))))
(*.f64 re (*.f64 1/2 (*.f64 re (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) re) (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) re) (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) re) (sin.f64 im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 im (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(+.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 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1))))
(fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 3) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) -1/6 -1/6)))
(fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 3) (fma.f64 (*.f64 re re) -1/12 (fma.f64 re -1/6 -1/6))))
(*.f64 (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)) (+.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 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))))
(fma.f64 (pow.f64 im 5) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) 1/120 1/120) (fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 3) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) -1/6 -1/6))))
(fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (fma.f64 (pow.f64 im 5) (fma.f64 (*.f64 re re) 1/240 (fma.f64 re 1/120 1/120)) (*.f64 (pow.f64 im 3) (fma.f64 (*.f64 re re) -1/12 (fma.f64 re -1/6 -1/6)))))
(fma.f64 (pow.f64 im 5) (fma.f64 (*.f64 re re) 1/240 (fma.f64 re 1/120 1/120)) (*.f64 (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.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 (*.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 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1))))))
(fma.f64 (pow.f64 im 5) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) 1/120 1/120) (fma.f64 (pow.f64 im 3) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) -1/6 -1/6) (fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 7) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) -1/5040 -1/5040)))))
(fma.f64 (pow.f64 im 3) (fma.f64 (*.f64 re re) -1/12 (fma.f64 re -1/6 -1/6)) (fma.f64 (pow.f64 im 5) (fma.f64 (*.f64 re re) 1/240 (fma.f64 re 1/120 1/120)) (fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 7) (fma.f64 (fma.f64 1/2 (*.f64 re re) re) -1/5040 -1/5040)))))
(+.f64 (*.f64 (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (fma.f64 re (*.f64 1/2 re) (+.f64 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 (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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(+.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(+.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(+.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(+.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(+.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(+.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(+.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(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 (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) (*.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.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) (*.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(*.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 1/2 (*.f64 re (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) 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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.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) (*.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))
(*.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 1/2 (*.f64 re (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) 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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.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) (*.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 (sin.f64 im) (fma.f64 re (*.f64 1/2 re) (+.f64 re 1)))

localize16.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)
0.1b
(*.f64 re (fma.f64 re 1/6 1/2))
0.1b
(fma.f64 re 1/6 1/2)
1.9b
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im im)
Compiler

Compiled 37 to 22 computations (40.5% saved)

series8.0ms (0.1%)

Counts
4 → 60
Calls

15 calls:

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

rewrite82.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
867×pow1_binary64
801×add-log-exp_binary64
801×log1p-expm1-u_binary64
801×expm1-log1p-u_binary64
785×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify200.0ms (3%)

Algorithm
egg-herbie
Rules
894×fma-def_binary64
561×associate-*l*_binary64
454×associate-*r*_binary64
408×cancel-sign-sub-inv_binary64
392×distribute-rgt-neg-out_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
045816
1135666
2349597
31058597
44347597
Stop Event
node limit
Counts
140 → 115
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)))
(*.f64 1/6 (*.f64 (pow.f64 re 3) im))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) (*.f64 re im)))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) (+.f64 im (*.f64 re im))))
(*.f64 1/6 (*.f64 (pow.f64 re 3) im))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) (*.f64 re im)))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) (+.f64 im (*.f64 re im))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 1)))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 1)))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 1)))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 1)))
1/2
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(*.f64 1/6 re)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(*.f64 1/6 re)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(*.f64 1/2 re)
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(*.f64 1/6 (pow.f64 re 2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(*.f64 1/6 (pow.f64 re 2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
re
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
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))
(+.f64 im (*.f64 im (fma.f64 1/2 (*.f64 re re) re)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(+.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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 1/6 (*.f64 (pow.f64 re 3) im))
(*.f64 1/6 (*.f64 im (pow.f64 re 3)))
(*.f64 (pow.f64 re 3) (*.f64 1/6 im))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2)))
(*.f64 im (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) (*.f64 re im)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 1/2 (*.f64 im (*.f64 re re)) (*.f64 im re)))
(+.f64 (*.f64 im re) (*.f64 im (*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))))
(*.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))
(*.f64 im (*.f64 re (fma.f64 re (fma.f64 re 1/6 1/2) 1)))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) (+.f64 im (*.f64 re 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 1/6 (*.f64 (pow.f64 re 3) im))
(*.f64 1/6 (*.f64 im (pow.f64 re 3)))
(*.f64 (pow.f64 re 3) (*.f64 1/6 im))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2)))
(*.f64 im (*.f64 re (*.f64 re (fma.f64 re 1/6 1/2))))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) (*.f64 re im)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 1/2 (*.f64 im (*.f64 re re)) (*.f64 im re)))
(+.f64 (*.f64 im re) (*.f64 im (*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))))
(*.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re))
(*.f64 im (*.f64 re (fma.f64 re (fma.f64 re 1/6 1/2) 1)))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) (+.f64 im (*.f64 re 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 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)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 1)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 1)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 1)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) 1)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im)))
(*.f64 im (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)))
(fma.f64 im (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im)
(*.f64 im (fma.f64 (fma.f64 re (fma.f64 re 1/6 1/2) 1) re 1))
1/2
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(*.f64 1/6 re)
(*.f64 re 1/6)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(*.f64 1/6 re)
(*.f64 re 1/6)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(*.f64 1/2 re)
(*.f64 re 1/2)
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 (*.f64 re re) 1/6 (*.f64 re 1/2))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 (*.f64 re re) 1/6 (*.f64 re 1/2))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 (*.f64 re re) 1/6 (*.f64 re 1/2))
(*.f64 re (fma.f64 re 1/6 1/2))
(*.f64 1/6 (pow.f64 re 2))
(*.f64 (*.f64 re re) 1/6)
(*.f64 re (*.f64 re 1/6))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 (*.f64 re re) 1/6 (*.f64 re 1/2))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 (*.f64 re re) 1/6 (*.f64 re 1/2))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 (*.f64 re re) 1/6 (*.f64 re 1/2))
(*.f64 re (fma.f64 re 1/6 1/2))
(*.f64 1/6 (pow.f64 re 2))
(*.f64 (*.f64 re re) 1/6)
(*.f64 re (*.f64 re 1/6))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 (*.f64 re re) 1/6 (*.f64 re 1/2))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 (*.f64 re re) 1/6 (*.f64 re 1/2))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 (*.f64 re re) 1/6 (*.f64 re 1/2))
(*.f64 re (fma.f64 re 1/6 1/2))
re
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(fma.f64 re (*.f64 re 1/2) re)
(*.f64 re (fma.f64 re 1/2 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) re))
(fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)
(fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)
(*.f64 re (fma.f64 re (fma.f64 re 1/6 1/2) 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) re))
(fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)
(fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)
(*.f64 re (fma.f64 re (fma.f64 re 1/6 1/2) 1))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) re))
(fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)
(fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)
(*.f64 re (fma.f64 re (fma.f64 re 1/6 1/2) 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) re))
(fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)
(fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)
(*.f64 re (fma.f64 re (fma.f64 re 1/6 1/2) 1))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) re))
(fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)
(fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)
(*.f64 re (fma.f64 re (fma.f64 re 1/6 1/2) 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 re re) (fma.f64 1/6 (pow.f64 re 3) re))
(fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)
(fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)
(*.f64 re (fma.f64 re (fma.f64 re 1/6 1/2) 1))

eval317.0ms (4.7%)

Compiler

Compiled 10254 to 5927 computations (42.2% saved)

prune193.0ms (2.9%)

Pruning

14 alts after pruning (4 fresh and 10 done)

PrunedKeptTotal
New5023505
Fresh112
Picked101
Done11011
Total50514519
Error
0b
Counts
519 → 14
Alt Table
Click to see full alt table
StatusErrorProgram
41.5b
(fma.f64 (fma.f64 re (*.f64 re (+.f64 (*.f64 re 1/6) 1/2)) re) im im)
21.6b
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re)))))
21.7b
(log1p.f64 (expm1.f64 (sin.f64 im)))
41.3b
im
21.7b
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
19.9b
(*.f64 (exp.f64 re) im)
61.5b
(*.f64 re im)
36.6b
(*.f64 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im) (sqrt.f64 (exp.f64 re)))
41.4b
(+.f64 (*.f64 re im) im)
21.6b
(*.f64 (sin.f64 im) (+.f64 re 1))
21.6b
(sin.f64 im)
21.7b
(+.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))
19.9b
(*.f64 (*.f64 (sqrt.f64 (exp.f64 re)) im) (sqrt.f64 (exp.f64 re)))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
Compiler

Compiled 139 to 94 computations (32.4% saved)

regimes106.0ms (1.6%)

Counts
24 → 1
Calls
Call 1
Inputs
im
im
im
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(sin.f64 im)
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 re 1))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 re (*.f64 re 1/2))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re)))))
(*.f64 (exp.f64 re) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (+.f64 (*.f64 re 1/6) 1/2)) re) im im)
(*.f64 (*.f64 (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 (+.f64 (*.f64 1/48 re) 1/8) re)))) im) (sqrt.f64 (exp.f64 re)))
(log1p.f64 (expm1.f64 (sin.f64 im)))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im im)
(+.f64 (*.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re)) (sin.f64 im))
(*.f64 (*.f64 (sin.f64 im) (+.f64 1 (*.f64 re (+.f64 1/2 (*.f64 re (+.f64 1/8 (*.f64 re 1/48))))))) (sqrt.f64 (exp.f64 re)))
(log1p.f64 (expm1.f64 (*.f64 (exp.f64 re) (sin.f64 im))))
(*.f64 (*.f64 (sqrt.f64 (exp.f64 re)) im) (sqrt.f64 (exp.f64 re)))
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
(fma.f64 im (fma.f64 1/6 (pow.f64 re 3) (*.f64 re (fma.f64 re 1/2 1))) im)
(*.f64 (*.f64 (sin.f64 im) (sqrt.f64 (exp.f64 re))) (sqrt.f64 (exp.f64 re)))
(+.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))))))
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
Calls

5 calls:

29.0ms
(*.f64 (exp.f64 re) (sin.f64 im))
24.0ms
(sin.f64 im)
20.0ms
im
13.0ms
re
6.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 247 to 128 computations (48.2% saved)

regimes161.0ms (2.4%)

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

6 calls:

55.0ms
(sin.f64 im)
30.0ms
(sin.f64 im)
19.0ms
im
12.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.2b2re
9.4b3im
0.2b2(exp.f64 re)
0.2b2(exp.f64 re)
8.0b5(sin.f64 im)
8.0b5(sin.f64 im)
Compiler

Compiled 87 to 50 computations (42.5% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9894649043976447
0.9981476290760507
Compiler

Compiled 12 to 9 computations (25% saved)

regimes169.0ms (2.5%)

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

6 calls:

64.0ms
(sin.f64 im)
38.0ms
im
28.0ms
(sin.f64 im)
22.0ms
re
7.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.4b2re
9.4b3im
0.4b2(exp.f64 re)
0.4b2(exp.f64 re)
8.1b5(sin.f64 im)
8.1b5(sin.f64 im)
Compiler

Compiled 71 to 40 computations (43.7% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9894649043976447
0.9981476290760507
Compiler

Compiled 12 to 9 computations (25% saved)

regimes222.0ms (3.3%)

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

6 calls:

123.0ms
re
58.0ms
(sin.f64 im)
17.0ms
im
15.0ms
(sin.f64 im)
3.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.5b2re
9.4b3im
0.5b2(exp.f64 re)
0.5b2(exp.f64 re)
9.1b3(sin.f64 im)
9.1b3(sin.f64 im)
Compiler

Compiled 47 to 26 computations (44.7% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9894649043976447
0.9981476290760507
Compiler

Compiled 12 to 9 computations (25% saved)

regimes47.0ms (0.7%)

Counts
7 → 2
Calls
Call 1
Inputs
im
im
im
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(sin.f64 im)
(*.f64 (exp.f64 re) im)
Outputs
(*.f64 (exp.f64 re) im)
(sin.f64 im)
Calls

4 calls:

16.0ms
(sin.f64 im)
16.0ms
im
10.0ms
re
3.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.9b2re
9.6b3im
0.9b2(exp.f64 re)
9.2b3(sin.f64 im)
Compiler

Compiled 33 to 17 computations (48.5% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9894649043976447
0.9981476290760507
Compiler

Compiled 12 to 9 computations (25% saved)

regimes20.0ms (0.3%)

Counts
6 → 1
Calls
Call 1
Inputs
im
im
im
(*.f64 re im)
(+.f64 (*.f64 re im) im)
(sin.f64 im)
Outputs
(sin.f64 im)
Calls

3 calls:

8.0ms
(sin.f64 im)
5.0ms
im
5.0ms
re
Results
ErrorSegmentsBranch
21.6b1re
21.6b1im
21.6b1(sin.f64 im)
Compiler

Compiled 25 to 12 computations (52% saved)

regimes46.0ms (0.7%)

Accuracy

Total -20.6b remaining (-49.9%)

Threshold costs -20.6b (-49.9%)

Counts
5 → 1
Calls
Call 1
Inputs
im
im
im
(*.f64 re im)
(+.f64 (*.f64 re im) im)
Outputs
im
Calls

2 calls:

41.0ms
im
4.0ms
re
Results
ErrorSegmentsBranch
41.3b1re
41.3b1im
Compiler

Compiled 19 to 8 computations (57.9% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
031122
147122
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 18262276632972455936/18446744073709551616) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re))))))
(if (<=.f64 (exp.f64 re) 18262276632972455936/18446744073709551616) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2))))))
(if (<=.f64 (exp.f64 re) 18262276632972455936/18446744073709551616) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 18262276632972455936/18446744073709551616) (*.f64 (exp.f64 re) im) (sin.f64 im))
(sin.f64 im)
im
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 18262276632972455936/18446744073709551616) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 1/6 re))))))
(if (<=.f64 (exp.f64 re) 4458563631096791/4503599627370496) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))) (+.f64 re 1))))
(if (<=.f64 (exp.f64 re) 18262276632972455936/18446744073709551616) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2))))))
(if (<=.f64 (exp.f64 re) 4458563631096791/4503599627370496) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2))))))
(if (<=.f64 (exp.f64 re) 18262276632972455936/18446744073709551616) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 4458563631096791/4503599627370496) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 18262276632972455936/18446744073709551616) (*.f64 (exp.f64 re) im) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 4458563631096791/4503599627370496) (*.f64 (exp.f64 re) im) (sin.f64 im))
(sin.f64 im)
im
Compiler

Compiled 94 to 62 computations (34% saved)

soundness0.0ms (0%)

end97.0ms (1.4%)

Compiler

Compiled 82 to 38 computations (53.7% saved)

Profiling

Loading profile data...