Details

Time bar (total: 5.6s)

analyze70.0ms (1.3%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
50%50%0.1%2
50%50%0.1%3
74.9%25%0.1%4
74.9%25%0.1%5
74.9%21.9%3.2%6
74.9%20.3%4.8%7
74.9%18%7.1%8
74.9%16.8%8.3%9
74.9%15.4%9.7%10
74.9%14.7%10.3%11
74.9%14%11.1%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample2.4s (43.6%)

Results
1.0s6196×body256valid
666.0ms1364×body1024valid
263.0ms701×body1024invalid
254.0ms694×body512valid
124.0ms338×body512invalid
69.0ms475×body256invalid
3.0msbody2048valid

preprocess19.0ms (0.3%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 9 to 7 computations (22.2% saved)

simplify9.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
178
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (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)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series5.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite43.0ms (0.8%)

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

simplify95.0ms (1.7%)

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

eval9.0ms (0.2%)

Compiler

Compiled 292 to 144 computations (50.7% saved)

prune6.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New23427
Fresh000
Picked011
Done000
Total23528
Error
0b
Counts
28 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
20.5b
(-.f64 (+.f64 1 (*.f64 (exp.f64 re) (sin.f64 im))) 1)
20.3b
(sin.f64 im)
21.3b
(*.f64 (exp.f64 re) im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
20.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
Compiler

Compiled 36 to 27 computations (25% saved)

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

Counts
1 → 4
Calls

6 calls:

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

rewrite38.0ms (0.7%)

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

simplify137.0ms (2.5%)

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)

localize21.0ms (0.4%)

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)

series6.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite66.0ms (1.2%)

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

simplify112.0ms (2%)

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

localize14.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
0.2b
(+.f64 1 (*.f64 (exp.f64 re) (sin.f64 im)))
2.1b
(-.f64 (+.f64 1 (*.f64 (exp.f64 re) (sin.f64 im))) 1)
Compiler

Compiled 30 to 12 computations (60% saved)

series4.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite70.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
910×pow1_binary64
844×add-log-exp_binary64
844×log1p-expm1-u_binary64
844×expm1-log1p-u_binary64
828×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify113.0ms (2%)

Algorithm
egg-herbie
Rules
828×distribute-lft-out_binary64
569×unswap-sqr_binary64
547×distribute-rgt-in_binary64
397×associate-*l*_binary64
337×sqr-pow_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
056620
1157578
2417544
31208521
42531521
53397521
65594521
76696521
87475521
Stop Event
node limit
Counts
131 → 114
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))
(+.f64 1 (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(+.f64 (sin.f64 im) (+.f64 1 (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(+.f64 (sin.f64 im) (+.f64 1 (+.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 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
1
(+.f64 1 (*.f64 (exp.f64 re) im))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 1 (*.f64 (exp.f64 re) im)))
(+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 1 (*.f64 (exp.f64 re) im))))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 1 (*.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 (sin.f64 im) (*.f64 (*.f64 re re) 1/2)))
(*.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 (+.f64 re 1) (*.f64 1/2 (*.f64 re 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 (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 (pow.f64 re 3) (*.f64 (sin.f64 im) 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 (*.f64 re 1/6) 1/2))))
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
(*.f64 (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 (*.f64 -1/6 (pow.f64 im 3)) (exp.f64 re)))
(*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 -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 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 (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))) im))
(*.f64 (exp.f64 re) (+.f64 im (+.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 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 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (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/6 (pow.f64 im 3)) im)) (*.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/6 (pow.f64 im 3))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (exp.f64 re) (+.f64 im (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (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 1 (sin.f64 im))
(+.f64 (sin.f64 im) 1)
(+.f64 (sin.f64 im) (+.f64 1 (*.f64 (sin.f64 im) re)))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) 1))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re 1))
(fma.f64 (+.f64 re 1) (sin.f64 im) 1)
(+.f64 (sin.f64 im) (+.f64 1 (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(+.f64 (sin.f64 im) (+.f64 (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)))) 1))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) (*.f64 (*.f64 re re) 1/2)) (fma.f64 (sin.f64 im) re 1)))
(+.f64 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2)))) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 re (*.f64 re 1/2))))) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re)))) 1)
(+.f64 (sin.f64 im) (+.f64 1 (+.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 (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))))) 1))
(+.f64 (+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (fma.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 (pow.f64 re 3) (*.f64 (sin.f64 im) 1/6)))) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (*.f64 1/6 (pow.f64 re 3)))) (fma.f64 (+.f64 re 1) (sin.f64 im) 1))
(+.f64 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)))) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))) 1)
(+.f64 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
1
(+.f64 1 (*.f64 (exp.f64 re) im))
(+.f64 (*.f64 im (exp.f64 re)) 1)
(fma.f64 im (exp.f64 re) 1)
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 1 (*.f64 (exp.f64 re) im)))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (+.f64 (*.f64 im (exp.f64 re)) 1))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 im (exp.f64 re) 1))
(+.f64 (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) 1)
(+.f64 (*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) 1)
(+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 1 (*.f64 (exp.f64 re) im))))
(fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (+.f64 (*.f64 im (exp.f64 re)) 1)))
(fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 im (exp.f64 re) 1)))
(+.f64 (*.f64 (exp.f64 re) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))) (fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) 1))
(+.f64 1 (*.f64 (exp.f64 re) (+.f64 (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))) im)))
(+.f64 1 (*.f64 (exp.f64 re) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))))))
(+.f64 1 (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5))))))
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)
(+.f64 1 (*.f64 (sin.f64 im) (exp.f64 re)))
(+.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1)
(fma.f64 (sin.f64 im) (exp.f64 re) 1)

eval52.0ms (0.9%)

Compiler

Compiled 2666 to 1397 computations (47.6% saved)

prune36.0ms (0.6%)

Pruning

10 alts after pruning (6 fresh and 4 done)

PrunedKeptTotal
New1936199
Fresh000
Picked101
Done044
Total19410204
Error
0b
Counts
204 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
37.3b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
41.3b
(*.f64 (+.f64 1 re) im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
20.2b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
41.1b
im
20.3b
(sin.f64 im)
42.2b
(-.f64 1 1)
21.3b
(*.f64 (exp.f64 re) im)
20.2b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
20.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
Compiler

Compiled 140 to 106 computations (24.3% saved)

localize17.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 40 to 21 computations (47.5% saved)

series6.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

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

rewrite81.0ms (1.5%)

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

Useful iterations: 1 (0.0ms)

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

simplify132.0ms (2.4%)

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
183 → 174
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))

localize3.0ms (0.1%)

Compiler

Compiled 6 to 6 computations (0% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series3.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite48.0ms (0.9%)

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

Useful iterations: 0 (0.0ms)

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

simplify9.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

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

localize15.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (sin.f64 im) (+.f64 re 1))
0.2b
(+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1)))
2.1b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
Compiler

Compiled 34 to 21 computations (38.2% saved)

series10.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite99.0ms (1.8%)

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

Useful iterations: 1 (0.0ms)

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

simplify135.0ms (2.4%)

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

Useful iterations: 3 (0.0ms)

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

localize26.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))
0.1b
(*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))
0.4b
(*.f64 re 1/6)
0.7b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
Compiler

Compiled 61 to 37 computations (39.3% saved)

series7.0ms (0.1%)

Counts
4 → 60
Calls

15 calls:

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

rewrite105.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
754×log-prod_binary64
741×fma-def_binary64
354×fma-neg_binary64
272×log1p-udef_binary64
270×expm1-udef_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify189.0ms (3.4%)

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
058984
1176892
2542781
33003751
43600751
54091751
64676751
74812751
84948751
95606751
105838751
116147751
127803751
Stop Event
node limit
Counts
295 → 273
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/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.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/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.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))

eval257.0ms (4.6%)

Compiler

Compiled 13195 to 8171 computations (38.1% saved)

prune102.0ms (1.8%)

Pruning

12 alts after pruning (3 fresh and 9 done)

PrunedKeptTotal
New7202722
Fresh011
Picked011
Done088
Total72012732
Error
0b
Counts
732 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
37.3b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
41.3b
(*.f64 (+.f64 1 re) im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
20.2b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
41.1b
im
61.5b
(*.f64 re im)
20.2b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
20.3b
(sin.f64 im)
42.2b
(-.f64 1 1)
58.3b
(-.f64 (+.f64 1 (+.f64 im (*.f64 re im))) 1)
21.3b
(*.f64 (exp.f64 re) im)
20.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
Compiler

Compiled 100 to 74 computations (26% saved)

localize3.0ms (0.1%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize9.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 29 to 11 computations (62.1% saved)

series4.0ms (0.1%)

Counts
2 → 42
Calls

12 calls:

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

rewrite80.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
636×fma-def_binary64
398×log-prod_binary64
351×prod-exp_binary64
330×fma-neg_binary64
298×exp-prod_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify21.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
014198
131198
265198
3132198
4222198
5322198
6387198
Stop Event
saturated
Counts
294 → 139
Calls
Call 1
Inputs
(*.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)))
im
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(*.f64 re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(*.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)))
im
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 re im)
(*.f64 re im)
Outputs
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(fma.f64 re im im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(fma.f64 re im im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(fma.f64 re im im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(fma.f64 re im im)
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(*.f64 re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(*.f64 re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(fma.f64 re im im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(fma.f64 re im im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(fma.f64 re im im)
(*.f64 -1 (*.f64 im (-.f64 (*.f64 -1 re) 1)))
(fma.f64 re im im)
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(*.f64 re im)
(*.f64 re im)

eval33.0ms (0.6%)

Compiler

Compiled 1767 to 800 computations (54.7% saved)

prune24.0ms (0.4%)

Pruning

12 alts after pruning (1 fresh and 11 done)

PrunedKeptTotal
New1381139
Fresh101
Picked011
Done01010
Total13912151
Error
0b
Counts
151 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
37.3b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
41.3b
(*.f64 (+.f64 1 re) im)
41.1b
im
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
20.2b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
61.5b
(*.f64 re im)
20.2b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
20.3b
(sin.f64 im)
42.2b
(-.f64 1 1)
58.3b
(-.f64 (+.f64 1 (+.f64 im (*.f64 re im))) 1)
21.3b
(*.f64 (exp.f64 re) im)
20.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
Compiler

Compiled 100 to 74 computations (26% saved)

regimes50.0ms (0.9%)

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

5 calls:

15.0ms
re
12.0ms
im
9.0ms
(sin.f64 im)
7.0ms
(*.f64 (exp.f64 re) (sin.f64 im))
3.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 109 to 63 computations (42.2% saved)

regimes118.0ms (2.1%)

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

6 calls:

32.0ms
(sin.f64 im)
28.0ms
(sin.f64 im)
27.0ms
im
16.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.4b2re
10.0b3im
0.4b2(exp.f64 re)
0.4b2(exp.f64 re)
10.3b3(sin.f64 im)
10.3b3(sin.f64 im)
Compiler

Compiled 96 to 59 computations (38.5% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
0.9999997854698284
Compiler

Compiled 12 to 9 computations (25% saved)

regimes109.0ms (2%)

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

6 calls:

31.0ms
(sin.f64 im)
29.0ms
im
26.0ms
(sin.f64 im)
13.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.5b2re
10.0b3im
0.5b2(exp.f64 re)
0.5b2(exp.f64 re)
10.3b3(sin.f64 im)
10.3b3(sin.f64 im)
Compiler

Compiled 80 to 50 computations (37.5% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
0.9999997854698284
Compiler

Compiled 12 to 9 computations (25% saved)

regimes104.0ms (1.9%)

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

6 calls:

30.0ms
im
27.0ms
(sin.f64 im)
25.0ms
(sin.f64 im)
12.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.6b2re
10.1b3im
0.6b2(exp.f64 re)
0.6b2(exp.f64 re)
10.3b3(sin.f64 im)
10.3b3(sin.f64 im)
Compiler

Compiled 68 to 43 computations (36.8% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9999997854698284
0.9999999951149667
Compiler

Compiled 12 to 9 computations (25% saved)

regimes78.0ms (1.4%)

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

5 calls:

21.0ms
(sin.f64 im)
21.0ms
(sin.f64 im)
20.0ms
im
11.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.9b2re
10.3b3im
0.9b2(exp.f64 re)
10.4b3(sin.f64 im)
10.4b3(sin.f64 im)
Compiler

Compiled 48 to 30 computations (37.5% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9999997854698284
0.9999999951149667
Compiler

Compiled 12 to 9 computations (25% saved)

regimes40.0ms (0.7%)

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

3 calls:

14.0ms
im
14.0ms
(sin.f64 im)
10.0ms
re
Results
ErrorSegmentsBranch
1.0b2re
18.8b3im
19.0b3(sin.f64 im)
Compiler

Compiled 36 to 22 computations (38.9% saved)

bsearch46.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
46.0ms
-4071.3501785115686
-2.1453019458659847e-7
Compiler

Compiled 12 to 9 computations (25% saved)

regimes25.0ms (0.5%)

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

2 calls:

14.0ms
im
10.0ms
re
Results
ErrorSegmentsBranch
21.7b2re
29.5b3im
Compiler

Compiled 30 to 18 computations (40% saved)

bsearch46.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
46.0ms
-4071.3501785115686
-2.1453019458659847e-7
Compiler

Compiled 12 to 9 computations (25% saved)

regimes20.0ms (0.4%)

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

2 calls:

12.0ms
im
7.0ms
re
Results
ErrorSegmentsBranch
21.8b2re
29.5b3im
Compiler

Compiled 16 to 10 computations (37.5% saved)

bsearch46.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
46.0ms
-4071.3501785115686
-2.1453019458659847e-7
Compiler

Compiled 12 to 9 computations (25% saved)

regimes10.0ms (0.2%)

Accuracy

Total -20.8b remaining (-50.6%)

Threshold costs -20.8b (-50.6%)

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

2 calls:

5.0ms
im
4.0ms
re
Results
ErrorSegmentsBranch
41.1b1re
41.1b1im
Compiler

Compiled 13 to 7 computations (46.2% saved)

simplify8.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
038141
153141
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re)))))
(if (<=.f64 (exp.f64 re) 9007197453301141/9007199254740992) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 9007197453301141/9007199254740992) (*.f64 (exp.f64 re) im) (sin.f64 im))
(if (<=.f64 re -4476496862021363/1099511627776) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 re -4476496862021363/1099511627776) (-.f64 1 1) (*.f64 (+.f64 1 re) im))
(if (<=.f64 re -4476496862021363/1099511627776) (-.f64 1 1) im)
im
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(if (<=.f64 (exp.f64 re) 0) 0 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re)))))
(if (<=.f64 (exp.f64 re) 0) 0 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) 1/2))))
(if (<=.f64 (exp.f64 re) 9007197453301141/9007199254740992) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 9007197453301141/9007199254740992) (*.f64 (exp.f64 re) im) (sin.f64 im))
(if (<=.f64 re -4476496862021363/1099511627776) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 re -4476496862021363/1099511627776) 0 (sin.f64 im))
(if (<=.f64 re -4476496862021363/1099511627776) (-.f64 1 1) (*.f64 (+.f64 1 re) im))
(if (<=.f64 re -4476496862021363/1099511627776) 0 (*.f64 im (+.f64 re 1)))
(if (<=.f64 re -4476496862021363/1099511627776) (-.f64 1 1) im)
(if (<=.f64 re -4476496862021363/1099511627776) 0 im)
im
Compiler

Compiled 113 to 81 computations (28.3% saved)

soundness0.0ms (0%)

end62.0ms (1.1%)

Compiler

Compiled 97 to 54 computations (44.3% saved)

Profiling

Loading profile data...