Details

Time bar (total: 8.8s)

analyze59.0ms (0.7%)

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.3s (25.9%)

Results
922.0ms6210×body256valid
661.0ms1368×body1024valid
316.0ms681×body1024invalid
219.0ms675×body512valid
64.0ms309×body512invalid
62.0ms476×body256invalid
2.0msbody2048valid

preprocess17.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 9 to 7 computations (22.2% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.0b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
Compiler

Compiled 7 to 5 computations (28.6% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series5.0ms (0.1%)

Counts
2 → 28
Calls

9 calls:

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

rewrite213.0ms (2.4%)

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

simplify98.0ms (1.1%)

Algorithm
egg-herbie
Rules
968×fma-def_binary64
725×distribute-lft-out_binary64
569×unswap-sqr_binary64
551×distribute-rgt-in_binary64
452×associate-*l*_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
052342
1149340
2388312
31101292
43066291
53857291
66028291
77136291
87918291
Stop Event
node limit
Counts
55 → 50
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))
im
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
Outputs
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 re 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 re 1))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (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 1 (fma.f64 re (*.f64 re 1/2) re)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re 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 1/6 (pow.f64 re 3)) (*.f64 re (*.f64 re 1/2)))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
(*.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 (exp.f64 re) (*.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/6 (pow.f64 im 3)) (*.f64 (exp.f64 re) (fma.f64 1/120 (pow.f64 im 5) im)))
(*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) 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))))
(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) (fma.f64 -1/6 (pow.f64 im 3) im)) (*.f64 (exp.f64 re) (fma.f64 1/120 (pow.f64 im 5) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 -1/5040 (pow.f64 im 7) (fma.f64 1/120 (pow.f64 im 5) im))))
(*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/5040 (pow.f64 im 7) im))))
(*.f64 (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))
im
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 -1/5040 (pow.f64 im 7) (fma.f64 1/120 (pow.f64 im 5) im)))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/5040 (pow.f64 im 7) im)))

eval11.0ms (0.1%)

Compiler

Compiled 517 to 258 computations (50.1% saved)

prune10.0ms (0.1%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New45550
Fresh000
Picked011
Done000
Total45651
Error
0b
Counts
51 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
19.4b
(*.f64 (exp.f64 re) im)
20.6b
(*.f64 (exp.f64 re) (-.f64 (+.f64 1 (sin.f64 im)) 1))
33.1b
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
23.1b
(sin.f64 im)
0.9b
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
Compiler

Compiled 85 to 65 computations (23.5% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
0.4b
(cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))
0.4b
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
Compiler

Compiled 28 to 9 computations (67.9% saved)

series41.0ms (0.5%)

Counts
2 → 40
Calls

12 calls:

TimeVariablePointExpression
25.0ms
re
@inf
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
4.0ms
re
@0
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
4.0ms
im
@inf
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
2.0ms
im
@-inf
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
2.0ms
re
@-inf
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)

rewrite57.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

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

simplify168.0ms (1.9%)

Algorithm
egg-herbie
Rules
731×associate-*l*_binary64
705×associate-*r*_binary64
678×fma-def_binary64
291×*-commutative_binary64
284×distribute-rgt-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01091344
13601299
212061267
366201261
Stop Event
node limit
Counts
94 → 74
Calls
Call 1
Inputs
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(+.f64 (*.f64 (sin.f64 im) (pow.f64 1 1/3)) (*.f64 (+.f64 (*.f64 2/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9))) re))
(+.f64 (*.f64 (pow.f64 re 2) (+.f64 (*.f64 2/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9)) (+.f64 (*.f64 1/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 1 1/3))) (*.f64 (pow.f64 (*.f64 (sin.f64 im) 1) 1/3) (+.f64 (*.f64 1/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 14) 1) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (/.f64 1 (sin.f64 im)) 1/3)))))))) (+.f64 (*.f64 (sin.f64 im) (pow.f64 1 1/3)) (*.f64 (+.f64 (*.f64 2/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9))) re)))
(+.f64 (*.f64 (pow.f64 re 2) (+.f64 (*.f64 2/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9)) (+.f64 (*.f64 1/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 1 1/3))) (*.f64 (pow.f64 (*.f64 (sin.f64 im) 1) 1/3) (+.f64 (*.f64 1/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 14) 1) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (/.f64 1 (sin.f64 im)) 1/3)))))))) (+.f64 (*.f64 (sin.f64 im) (pow.f64 1 1/3)) (+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 (sin.f64 im) 1) 1/3) (+.f64 (*.f64 2/9 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (sin.f64 im) 1) 1/9))) (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 (sin.f64 im)) 1/3) (-.f64 (*.f64 1/6 (sin.f64 im)) (+.f64 (*.f64 1/27 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/3)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 4) 1) 1/9))))))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/9) (+.f64 (*.f64 1/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 14) 1) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (/.f64 1 (sin.f64 im)) 1/3)))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/6 (sin.f64 im)) (+.f64 (*.f64 1/27 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/3)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 4) 1) 1/9))))))) (*.f64 2/9 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 4) 1) 1/9)))))) (pow.f64 re 3)) (*.f64 (+.f64 (*.f64 2/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9))) re))))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 im) (exp.f64 re)))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 im) (exp.f64 re)))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 im) (exp.f64 re)))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 im) (exp.f64 re)))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(pow.f64 (sin.f64 im) 1/3)
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/9) re)) (pow.f64 (sin.f64 im) 1/3))
(+.f64 (*.f64 1/3 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 re 2)) (pow.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2)) 1/3))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/9) re)) (pow.f64 (sin.f64 im) 1/3)))
(+.f64 (*.f64 1/3 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 re 2)) (pow.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2)) 1/3))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2)) 1/3) (*.f64 (-.f64 (*.f64 1/6 (sin.f64 im)) (+.f64 (*.f64 1/27 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/3)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 4) 1) 1/9))))) (pow.f64 re 3)))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/9) re)) (pow.f64 (sin.f64 im) 1/3))))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
Outputs
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(sin.f64 im)
(+.f64 (*.f64 (sin.f64 im) (pow.f64 1 1/3)) (*.f64 (+.f64 (*.f64 2/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9))) re))
(+.f64 (sin.f64 im) (*.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18)) 1) re))
(fma.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18)) re (sin.f64 im))
(+.f64 (*.f64 (pow.f64 re 2) (+.f64 (*.f64 2/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9)) (+.f64 (*.f64 1/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 1 1/3))) (*.f64 (pow.f64 (*.f64 (sin.f64 im) 1) 1/3) (+.f64 (*.f64 1/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 14) 1) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (/.f64 1 (sin.f64 im)) 1/3)))))))) (+.f64 (*.f64 (sin.f64 im) (pow.f64 1 1/3)) (*.f64 (+.f64 (*.f64 2/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9))) re)))
(fma.f64 (*.f64 re re) (fma.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) (fma.f64 1/3 (*.f64 1 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18))))) (*.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)) (*.f64 (*.f64 2/3 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18))))) (cbrt.f64 (/.f64 1 (sin.f64 im)))))))) (+.f64 (sin.f64 im) (*.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18)) 1) re)))
(fma.f64 (*.f64 re re) (fma.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) (fma.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 2/3 (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (cbrt.f64 (/.f64 1 (sin.f64 im)))) (*.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)))) (*.f64 1/3 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3))))) (fma.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18)) re (sin.f64 im)))
(fma.f64 (*.f64 re re) (fma.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) (fma.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)) (*.f64 (cbrt.f64 (/.f64 1 (sin.f64 im))) (+.f64 (*.f64 (sin.f64 im) 1/3) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/9)))) (+.f64 (*.f64 (sin.f64 im) 1/6) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/9)))) (fma.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18)) re (sin.f64 im)))
(+.f64 (*.f64 (pow.f64 re 2) (+.f64 (*.f64 2/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9)) (+.f64 (*.f64 1/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 1 1/3))) (*.f64 (pow.f64 (*.f64 (sin.f64 im) 1) 1/3) (+.f64 (*.f64 1/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 14) 1) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (/.f64 1 (sin.f64 im)) 1/3)))))))) (+.f64 (*.f64 (sin.f64 im) (pow.f64 1 1/3)) (+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 (sin.f64 im) 1) 1/3) (+.f64 (*.f64 2/9 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (sin.f64 im) 1) 1/9))) (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 (sin.f64 im)) 1/3) (-.f64 (*.f64 1/6 (sin.f64 im)) (+.f64 (*.f64 1/27 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/3)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 4) 1) 1/9))))))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/9) (+.f64 (*.f64 1/9 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 14) 1) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (/.f64 1 (sin.f64 im)) 1/3)))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/6 (sin.f64 im)) (+.f64 (*.f64 1/27 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/3)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 4) 1) 1/9))))))) (*.f64 2/9 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 4) 1) 1/9)))))) (pow.f64 re 3)) (*.f64 (+.f64 (*.f64 2/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 13) 1) 1/9))) re))))
(fma.f64 (*.f64 re re) (fma.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) (fma.f64 1/3 (*.f64 1 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18))))) (*.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)) (*.f64 (*.f64 2/3 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18))))) (cbrt.f64 (/.f64 1 (sin.f64 im)))))))) (+.f64 (sin.f64 im) (fma.f64 (fma.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 2/9 (*.f64 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)))) (*.f64 (pow.f64 (sin.f64 im) 1/18) (pow.f64 (sin.f64 im) 1/18))) (*.f64 (*.f64 2/3 (cbrt.f64 (/.f64 1 (sin.f64 im)))) (-.f64 (*.f64 (sin.f64 im) 1/6) (fma.f64 1/27 (cbrt.f64 (pow.f64 (sin.f64 im) 7)) (*.f64 2/3 (*.f64 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)))) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)))))))) (fma.f64 1/3 (*.f64 (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)) (*.f64 (*.f64 2/3 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18))))) (cbrt.f64 (/.f64 1 (sin.f64 im))))) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18))) (+.f64 (*.f64 1/3 (-.f64 (*.f64 (sin.f64 im) 1/6) (fma.f64 1/27 (cbrt.f64 (pow.f64 (sin.f64 im) 7)) (*.f64 2/3 (*.f64 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)))) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18))))))) (*.f64 2/9 (*.f64 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)))) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18))))))) (pow.f64 re 3) (*.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18)) 1) re))))
(+.f64 (fma.f64 (fma.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 (sin.f64 im))) (-.f64 (*.f64 (sin.f64 im) 1/6) (fma.f64 2/3 (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18))) (*.f64 1/27 (cbrt.f64 (pow.f64 (sin.f64 im) 7)))))) (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (*.f64 (*.f64 (pow.f64 (sin.f64 im) 1/18) (pow.f64 (sin.f64 im) 1/18)) 2/9))) (fma.f64 1/3 (*.f64 (fma.f64 2/3 (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (cbrt.f64 (/.f64 1 (sin.f64 im)))) (*.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)))) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18))) (fma.f64 1/3 (-.f64 (*.f64 (sin.f64 im) 1/6) (fma.f64 2/3 (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18))) (*.f64 1/27 (cbrt.f64 (pow.f64 (sin.f64 im) 7))))) (*.f64 2/9 (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18))))))) (pow.f64 re 3) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18)) re)) (fma.f64 (*.f64 re re) (fma.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) (fma.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 2/3 (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (cbrt.f64 (/.f64 1 (sin.f64 im)))) (*.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)))) (*.f64 1/3 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3))))) (sin.f64 im)))
(fma.f64 re (*.f64 re (fma.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) (fma.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)) (*.f64 (cbrt.f64 (/.f64 1 (sin.f64 im))) (+.f64 (*.f64 (sin.f64 im) 1/3) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/9)))) (+.f64 (*.f64 (sin.f64 im) 1/6) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/9))))) (fma.f64 (fma.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 (sin.f64 im))) (-.f64 (fma.f64 (sin.f64 im) 1/6 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 7)) -1/27)) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)) (+.f64 (*.f64 (sin.f64 im) 1/3) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/9))))) (*.f64 (*.f64 (pow.f64 (sin.f64 im) 1/18) (pow.f64 (sin.f64 im) 1/18)) (+.f64 (*.f64 (sin.f64 im) 1/9) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/27)))) (fma.f64 1/3 (fma.f64 (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)) (*.f64 (cbrt.f64 (/.f64 1 (sin.f64 im))) (+.f64 (*.f64 (sin.f64 im) 1/3) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/9)))) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18)) (-.f64 (fma.f64 (sin.f64 im) 1/6 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 7)) -1/27)) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)) (+.f64 (*.f64 (sin.f64 im) 1/3) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/9))))) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)) (+.f64 (*.f64 (sin.f64 im) 1/9) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/27))))) (pow.f64 re 3) (fma.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18)) re (sin.f64 im))))
(fma.f64 re (*.f64 re (fma.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) (fma.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)) (*.f64 (cbrt.f64 (/.f64 1 (sin.f64 im))) (+.f64 (*.f64 (sin.f64 im) 1/3) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/9)))) (+.f64 (*.f64 (sin.f64 im) 1/6) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/9))))) (fma.f64 (fma.f64 (cbrt.f64 (sin.f64 im)) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 (sin.f64 im))) (fma.f64 (sin.f64 im) 1/6 (fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 7)) -1/27 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)) (+.f64 (*.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18))) (*.f64 (sin.f64 im) -1/3)))))) (*.f64 (*.f64 (pow.f64 (sin.f64 im) 1/18) (pow.f64 (sin.f64 im) 1/18)) (+.f64 (*.f64 (sin.f64 im) 1/9) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/27)))) (fma.f64 1/3 (fma.f64 (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 14) 1/18)) (*.f64 (cbrt.f64 (/.f64 1 (sin.f64 im))) (+.f64 (*.f64 (sin.f64 im) 1/3) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/9)))) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18)) (fma.f64 (sin.f64 im) 1/6 (fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 7)) -1/27 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)) (+.f64 (*.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18))) (*.f64 (sin.f64 im) -1/3)))))) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)) (+.f64 (*.f64 (sin.f64 im) 1/9) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/27))))) (pow.f64 re 3) (fma.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 13) 1/18)) re (sin.f64 im))))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 im) (exp.f64 re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 im) (exp.f64 re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 im) (exp.f64 re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 im) (exp.f64 re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (*.f64 (sin.f64 im) (exp.f64 re)) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (exp.f64 re))
(pow.f64 (sin.f64 im) 1/3)
(cbrt.f64 (sin.f64 im))
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/9) re)) (pow.f64 (sin.f64 im) 1/3))
(fma.f64 1/3 (*.f64 re (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18))) (cbrt.f64 (sin.f64 im)))
(fma.f64 1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) re)) (cbrt.f64 (sin.f64 im)))
(+.f64 (*.f64 1/3 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 re 2)) (pow.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2)) 1/3))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/9) re)) (pow.f64 (sin.f64 im) 1/3)))
(fma.f64 1/3 (*.f64 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)))) (*.f64 (*.f64 re re) (cbrt.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2))))) (fma.f64 1/3 (*.f64 re (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18))) (cbrt.f64 (sin.f64 im))))
(fma.f64 1/3 (*.f64 (*.f64 re re) (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (cbrt.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2))))) (fma.f64 1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) re)) (cbrt.f64 (sin.f64 im))))
(fma.f64 1/3 (fma.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) -1/3))) (*.f64 (*.f64 re re) (cbrt.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2)))) (*.f64 re (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18)))) (cbrt.f64 (sin.f64 im)))
(+.f64 (*.f64 1/3 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 re 2)) (pow.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2)) 1/3))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2)) 1/3) (*.f64 (-.f64 (*.f64 1/6 (sin.f64 im)) (+.f64 (*.f64 1/27 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/3)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 (sin.f64 im)) (*.f64 1/3 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 17) 1) 1/9))) (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 4) 1) 1/9))))) (pow.f64 re 3)))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 (pow.f64 (sin.f64 im) 7) 1) 1/9) re)) (pow.f64 (sin.f64 im) 1/3))))
(fma.f64 1/3 (*.f64 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)))) (*.f64 (*.f64 re re) (cbrt.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2))))) (fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2))) (*.f64 (-.f64 (*.f64 (sin.f64 im) 1/6) (fma.f64 1/27 (cbrt.f64 (pow.f64 (sin.f64 im) 7)) (*.f64 2/3 (*.f64 (+.f64 (*.f64 (sin.f64 im) 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)))) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)))))) (pow.f64 re 3))) (fma.f64 1/3 (*.f64 re (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18))) (cbrt.f64 (sin.f64 im)))))
(fma.f64 1/3 (*.f64 (*.f64 re re) (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (cbrt.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2))))) (fma.f64 1/3 (*.f64 (-.f64 (*.f64 (sin.f64 im) 1/6) (fma.f64 2/3 (*.f64 (fma.f64 (sin.f64 im) 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -1/3)) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18))) (*.f64 1/27 (cbrt.f64 (pow.f64 (sin.f64 im) 7))))) (*.f64 (pow.f64 re 3) (cbrt.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2))))) (fma.f64 1/3 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) re)) (cbrt.f64 (sin.f64 im)))))
(fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2))) (+.f64 (*.f64 (*.f64 re re) (fma.f64 (sin.f64 im) 1/2 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) -1/3)))) (*.f64 (-.f64 (fma.f64 (sin.f64 im) 1/6 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 7)) -1/27)) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)) (+.f64 (*.f64 (sin.f64 im) 1/3) (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18)) -2/9)))) (pow.f64 re 3)))) (fma.f64 1/3 (*.f64 re (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18))) (cbrt.f64 (sin.f64 im))))
(fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (pow.f64 (sin.f64 im) 2))) (+.f64 (*.f64 (*.f64 re re) (fma.f64 (sin.f64 im) 1/2 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) -1/3)))) (*.f64 (fma.f64 (sin.f64 im) 1/6 (fma.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 7)) -1/27 (*.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 4) 1/18)) (+.f64 (*.f64 2/9 (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 17) 1/18))) (*.f64 (sin.f64 im) -1/3))))) (pow.f64 re 3)))) (fma.f64 1/3 (*.f64 re (*.f64 (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18) (pow.f64 (pow.f64 (sin.f64 im) 7) 1/18))) (cbrt.f64 (sin.f64 im))))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))
(pow.f64 (*.f64 (sin.f64 im) (exp.f64 re)) 1/3)
(cbrt.f64 (*.f64 (sin.f64 im) (exp.f64 re)))

localize4.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 im)
Compiler

Compiled 5 to 3 computations (40% saved)

localize4.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 10 to 4 computations (60% saved)

series3.0ms (0%)

Counts
1 → 4
Calls

6 calls:

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

rewrite44.0ms (0.5%)

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

Useful iterations: 0 (0.0ms)

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

simplify209.0ms (2.4%)

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)

localize13.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

Compiled 28 to 16 computations (42.9% saved)

series3.0ms (0%)

Counts
3 → 44
Calls

12 calls:

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

rewrite74.0ms (0.8%)

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

Useful iterations: 1 (0.0ms)

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

simplify116.0ms (1.3%)

Algorithm
egg-herbie
Rules
729×distribute-lft-out_binary64
569×unswap-sqr_binary64
551×distribute-rgt-in_binary64
457×associate-*l*_binary64
383×associate-/l/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
057424
1162422
2416394
31175376
42401376
53195376
65377376
76486376
87266376
Stop Event
node limit
Counts
137 → 123
Calls
Call 1
Inputs
im
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
1
(+.f64 1 im)
(+.f64 1 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(+.f64 1 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(+.f64 (sin.f64 im) 1)
(+.f64 (sin.f64 im) 1)
(+.f64 (sin.f64 im) 1)
(+.f64 (sin.f64 im) 1)
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) im)
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (*.f64 (exp.f64 re) im))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (*.f64 (exp.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7))) (*.f64 (exp.f64 re) im))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
Outputs
im
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 -1/5040 (pow.f64 im 7) (fma.f64 1/120 (pow.f64 im 5) im)))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/5040 (pow.f64 im 7) im)))
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
1
(+.f64 1 im)
(+.f64 im 1)
(+.f64 1 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(+.f64 (fma.f64 -1/6 (pow.f64 im 3) im) 1)
(fma.f64 -1/6 (pow.f64 im 3) (+.f64 im 1))
(+.f64 im (fma.f64 -1/6 (pow.f64 im 3) 1))
(+.f64 1 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(+.f64 (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) im)) 1)
(+.f64 (fma.f64 1/120 (pow.f64 im 5) im) (fma.f64 -1/6 (pow.f64 im 3) 1))
(+.f64 (sin.f64 im) 1)
(+.f64 (sin.f64 im) 1)
(+.f64 (sin.f64 im) 1)
(+.f64 (sin.f64 im) 1)
(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 1 re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)))))
(+.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 (sin.f64 im) re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 re (+.f64 1 (*.f64 re (*.f64 re 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re))))))
(+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (fma.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 (*.f64 1/6 (pow.f64 re 3)) (sin.f64 im))))
(fma.f64 (+.f64 1 re) (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 1 re) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 re (*.f64 re (+.f64 1/2 (*.f64 re 1/6))))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 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 (pow.f64 im 3) (exp.f64 re)) (*.f64 im (exp.f64 re)))
(*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) im))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) im) (exp.f64 re))
(+.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 (pow.f64 im 3) (exp.f64 re)) (fma.f64 1/120 (*.f64 (pow.f64 im 5) (exp.f64 re)) (*.f64 im (exp.f64 re))))
(fma.f64 im (exp.f64 re) (*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) 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))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (exp.f64 re)) (fma.f64 1/120 (*.f64 (pow.f64 im 5) (exp.f64 re)) (fma.f64 -1/5040 (*.f64 (pow.f64 im 7) (exp.f64 re)) (*.f64 im (exp.f64 re)))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (exp.f64 re)) (fma.f64 1/120 (*.f64 (pow.f64 im 5) (exp.f64 re)) (fma.f64 im (exp.f64 re) (*.f64 (*.f64 -1/5040 (pow.f64 im 7)) (exp.f64 re)))))
(+.f64 (*.f64 (exp.f64 re) (fma.f64 -1/5040 (pow.f64 im 7) im)) (*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/5040 (pow.f64 im 7) im))))
(*.f64 (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))

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 re (log.f64 (sin.f64 im)))
0.0b
(sin.f64 im)
0.3b
(log.f64 (sin.f64 im))
1.1b
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
Compiler

Compiled 20 to 6 computations (70% saved)

series63.0ms (0.7%)

Counts
3 → 23
Calls

15 calls:

TimeVariablePointExpression
31.0ms
im
@inf
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
24.0ms
im
@-inf
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
3.0ms
re
@0
(+.f64 re (log.f64 (sin.f64 im)))
1.0ms
im
@0
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
1.0ms
re
@0
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))

rewrite64.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify52.0ms (0.6%)

Algorithm
egg-herbie
Rules
727×unsub-neg_binary64
522×fma-neg_binary64
348×unswap-sqr_binary64
339×*-commutative_binary64
339×fma-def_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
064391
1177334
2492315
31746299
44260297
Stop Event
node limit
Counts
98 → 107
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))))))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (*.f64 -1 re)))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (*.f64 -1 re)))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (*.f64 -1 re)))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (*.f64 -1 re)))
(exp.f64 (+.f64 re (log.f64 im)))
(+.f64 (exp.f64 (+.f64 re (log.f64 im))) (*.f64 -1/6 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 2))))
(+.f64 (exp.f64 (+.f64 re (log.f64 im))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 4))) (*.f64 -1/6 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 2)))))
(+.f64 (exp.f64 (+.f64 re (log.f64 im))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 4))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 6))) (*.f64 -1/6 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 2))))))
(log.f64 im)
(+.f64 (*.f64 -1/6 (pow.f64 im 2)) (log.f64 im))
(+.f64 (*.f64 -1/180 (pow.f64 im 4)) (+.f64 (*.f64 -1/6 (pow.f64 im 2)) (log.f64 im)))
(+.f64 (*.f64 -1/180 (pow.f64 im 4)) (+.f64 (*.f64 -1/6 (pow.f64 im 2)) (+.f64 (log.f64 im) (*.f64 -1/2835 (pow.f64 im 6)))))
(log.f64 (sin.f64 im))
re
re
(+.f64 re (log.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 2)) (+.f64 re (log.f64 im)))
(+.f64 (*.f64 -1/180 (pow.f64 im 4)) (+.f64 (*.f64 -1/6 (pow.f64 im 2)) (+.f64 re (log.f64 im))))
(+.f64 (*.f64 -1/180 (pow.f64 im 4)) (+.f64 (*.f64 -1/6 (pow.f64 im 2)) (+.f64 re (+.f64 (log.f64 im) (*.f64 -1/2835 (pow.f64 im 6))))))
Outputs
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 re 1) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 re 1))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 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 (+.f64 1 (*.f64 re (*.f64 re 1/2)))))
(*.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 (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 (*.f64 re 1/6) 1/2))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (*.f64 -1 re)))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (neg.f64 re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (*.f64 -1 re)))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (neg.f64 re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (*.f64 -1 re)))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (neg.f64 re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (*.f64 -1 re)))
(exp.f64 (-.f64 (log.f64 (sin.f64 im)) (neg.f64 re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(exp.f64 (+.f64 re (log.f64 im)))
(*.f64 im (exp.f64 re))
(+.f64 (exp.f64 (+.f64 re (log.f64 im))) (*.f64 -1/6 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 2))))
(+.f64 (exp.f64 (+.f64 re (log.f64 im))) (*.f64 -1/6 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (*.f64 im im))))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (*.f64 im (exp.f64 re)))
(*.f64 (+.f64 (*.f64 im (*.f64 im -1/6)) 1) (*.f64 im (exp.f64 re)))
(*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (exp.f64 (+.f64 re (log.f64 im))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 4))) (*.f64 -1/6 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 2)))))
(+.f64 (exp.f64 (+.f64 re (log.f64 im))) (fma.f64 1/120 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 4)) (*.f64 -1/6 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (*.f64 im im)))))
(fma.f64 (exp.f64 re) im (fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (*.f64 (*.f64 im (exp.f64 re)) (*.f64 (pow.f64 im 4) 1/120))))
(fma.f64 im (exp.f64 re) (*.f64 (*.f64 im (exp.f64 re)) (+.f64 (*.f64 im (*.f64 im -1/6)) (*.f64 1/120 (pow.f64 im 4)))))
(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 (+.f64 re (log.f64 im))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 4))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 6))) (*.f64 -1/6 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 2))))))
(+.f64 (exp.f64 (+.f64 re (log.f64 im))) (fma.f64 1/120 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 4)) (fma.f64 -1/5040 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (pow.f64 im 6)) (*.f64 -1/6 (*.f64 (exp.f64 (+.f64 re (log.f64 im))) (*.f64 im im))))))
(fma.f64 (exp.f64 re) im (fma.f64 1/120 (*.f64 (*.f64 im (exp.f64 re)) (pow.f64 im 4)) (fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (*.f64 (*.f64 im (exp.f64 re)) (*.f64 (pow.f64 im 6) -1/5040)))))
(fma.f64 im (exp.f64 re) (fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (*.f64 (*.f64 im (exp.f64 re)) (+.f64 (*.f64 1/120 (pow.f64 im 4)) (*.f64 -1/5040 (pow.f64 im 6))))))
(+.f64 (*.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 -1/5040 (pow.f64 im 7)) im)))
(log.f64 im)
(+.f64 (*.f64 -1/6 (pow.f64 im 2)) (log.f64 im))
(fma.f64 -1/6 (*.f64 im im) (log.f64 im))
(fma.f64 im (*.f64 im -1/6) (log.f64 im))
(+.f64 (*.f64 -1/180 (pow.f64 im 4)) (+.f64 (*.f64 -1/6 (pow.f64 im 2)) (log.f64 im)))
(fma.f64 -1/180 (pow.f64 im 4) (fma.f64 -1/6 (*.f64 im im) (log.f64 im)))
(fma.f64 (pow.f64 im 4) -1/180 (fma.f64 -1/6 (*.f64 im im) (log.f64 im)))
(fma.f64 im (*.f64 im -1/6) (fma.f64 (pow.f64 im 4) -1/180 (log.f64 im)))
(+.f64 (*.f64 -1/180 (pow.f64 im 4)) (+.f64 (*.f64 -1/6 (pow.f64 im 2)) (+.f64 (log.f64 im) (*.f64 -1/2835 (pow.f64 im 6)))))
(fma.f64 -1/180 (pow.f64 im 4) (+.f64 (fma.f64 -1/6 (*.f64 im im) (log.f64 im)) (*.f64 (pow.f64 im 6) -1/2835)))
(fma.f64 (pow.f64 im 4) -1/180 (fma.f64 -1/6 (*.f64 im im) (fma.f64 (pow.f64 im 6) -1/2835 (log.f64 im))))
(fma.f64 -1/6 (*.f64 im im) (fma.f64 (pow.f64 im 4) -1/180 (fma.f64 (pow.f64 im 6) -1/2835 (log.f64 im))))
(fma.f64 im (*.f64 im -1/6) (fma.f64 (pow.f64 im 4) -1/180 (fma.f64 (pow.f64 im 6) -1/2835 (log.f64 im))))
(log.f64 (sin.f64 im))
re
re
(+.f64 re (log.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 2)) (+.f64 re (log.f64 im)))
(fma.f64 -1/6 (*.f64 im im) (+.f64 re (log.f64 im)))
(+.f64 re (fma.f64 -1/6 (*.f64 im im) (log.f64 im)))
(fma.f64 im (*.f64 im -1/6) (+.f64 re (log.f64 im)))
(+.f64 re (fma.f64 im (*.f64 im -1/6) (log.f64 im)))
(+.f64 (*.f64 -1/180 (pow.f64 im 4)) (+.f64 (*.f64 -1/6 (pow.f64 im 2)) (+.f64 re (log.f64 im))))
(fma.f64 -1/180 (pow.f64 im 4) (fma.f64 -1/6 (*.f64 im im) (+.f64 re (log.f64 im))))
(+.f64 (fma.f64 (pow.f64 im 4) -1/180 (fma.f64 -1/6 (*.f64 im im) (log.f64 im))) re)
(+.f64 re (fma.f64 im (*.f64 im -1/6) (fma.f64 (pow.f64 im 4) -1/180 (log.f64 im))))
(+.f64 (fma.f64 im (*.f64 im -1/6) (log.f64 im)) (fma.f64 (pow.f64 im 4) -1/180 re))
(+.f64 (*.f64 -1/180 (pow.f64 im 4)) (+.f64 (*.f64 -1/6 (pow.f64 im 2)) (+.f64 re (+.f64 (log.f64 im) (*.f64 -1/2835 (pow.f64 im 6))))))
(fma.f64 -1/180 (pow.f64 im 4) (fma.f64 -1/6 (*.f64 im im) (+.f64 re (+.f64 (log.f64 im) (*.f64 (pow.f64 im 6) -1/2835)))))
(fma.f64 (pow.f64 im 4) -1/180 (+.f64 (fma.f64 (pow.f64 im 6) -1/2835 (log.f64 im)) (fma.f64 -1/6 (*.f64 im im) re)))
(+.f64 re (fma.f64 -1/6 (*.f64 im im) (fma.f64 (pow.f64 im 4) -1/180 (fma.f64 (pow.f64 im 6) -1/2835 (log.f64 im)))))
(+.f64 re (fma.f64 im (*.f64 im -1/6) (fma.f64 (pow.f64 im 4) -1/180 (fma.f64 (pow.f64 im 6) -1/2835 (log.f64 im)))))

eval222.0ms (2.5%)

Compiler

Compiled 6515 to 3521 computations (46% saved)

prune76.0ms (0.9%)

Pruning

12 alts after pruning (7 fresh and 5 done)

PrunedKeptTotal
New4377444
Fresh000
Picked011
Done145
Total43812450
Error
0b
Counts
450 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
41.3b
(+.f64 (*.f64 re im) im)
24.0b
(pow.f64 (cbrt.f64 (sin.f64 im)) 3)
20.6b
(*.f64 (exp.f64 re) (-.f64 (+.f64 1 (sin.f64 im)) 1))
23.0b
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
19.4b
(*.f64 (exp.f64 re) im)
38.8b
(exp.f64 re)
41.1b
im
33.1b
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
23.1b
(sin.f64 im)
23.0b
(*.f64 (sin.f64 im) (+.f64 re 1))
23.0b
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
Compiler

Compiled 155 to 113 computations (27.1% saved)

localize52.0ms (0.6%)

Local error

Found 3 expressions with local error:

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

Compiled 44 to 27 computations (38.6% saved)

series5.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

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

rewrite147.0ms (1.7%)

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

Useful iterations: 2 (0.0ms)

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

simplify123.0ms (1.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
040561
1114559
2372507
31790483
43573483
53993483
64688483
74788483
84896483
95034483
107562483
117944483
Stop Event
node limit
Counts
167 → 153
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)))))
re
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) 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)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) 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)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) 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))
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)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(*.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)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(*.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)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 4 computations (66.7% saved)

series3.0ms (0%)

Counts
1 → 21
Calls

6 calls:

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

rewrite51.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

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

simplify18.0ms (0.2%)

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

Useful iterations: 1 (0.0ms)

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

localize3.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 16 to 9 computations (43.8% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite59.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify141.0ms (1.6%)

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

localize51.0ms (0.6%)

Local error

Found 4 expressions with local error:

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

Compiled 61 to 37 computations (39.3% saved)

series16.0ms (0.2%)

Counts
4 → 60
Calls

15 calls:

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

rewrite170.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
827×fma-def_binary64
753×log-prod_binary64
437×fma-neg_binary64
272×log1p-udef_binary64
269×expm1-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify215.0ms (2.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
292 → 270
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))

eval292.0ms (3.3%)

Compiler

Compiled 10198 to 6020 computations (41% saved)

prune167.0ms (1.9%)

Pruning

16 alts after pruning (6 fresh and 10 done)

PrunedKeptTotal
New5475552
Fresh112
Picked011
Done099
Total54816564
Error
0b
Counts
564 → 16
Alt Table
Click to see full alt table
StatusErrorProgram
41.3b
(+.f64 (*.f64 re im) im)
24.0b
(pow.f64 (cbrt.f64 (sin.f64 im)) 3)
20.6b
(*.f64 (exp.f64 re) (-.f64 (+.f64 1 (sin.f64 im)) 1))
23.0b
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
33.1b
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
41.3b
(*.f64 (+.f64 re 1) im)
23.1b
(sin.f64 im)
61.6b
(*.f64 re im)
38.6b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
41.1b
im
23.0b
(*.f64 (sin.f64 im) (+.f64 re 1))
41.4b
(*.f64 im (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
19.4b
(*.f64 (exp.f64 re) im)
38.8b
(exp.f64 re)
23.0b
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
Compiler

Compiled 178 to 131 computations (26.4% saved)

localize16.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 im)
0.6b
(cbrt.f64 (sin.f64 im))
0.7b
(pow.f64 (cbrt.f64 (sin.f64 im)) 3)
Compiler

Compiled 14 to 7 computations (50% saved)

series12.0ms (0.1%)

Counts
2 → 16
Calls

6 calls:

TimeVariablePointExpression
4.0ms
im
@inf
(pow.f64 (cbrt.f64 (sin.f64 im)) 3)
4.0ms
im
@-inf
(pow.f64 (cbrt.f64 (sin.f64 im)) 3)
2.0ms
im
@0
(pow.f64 (cbrt.f64 (sin.f64 im)) 3)
1.0ms
im
@0
(cbrt.f64 (sin.f64 im))
0.0ms
im
@inf
(cbrt.f64 (sin.f64 im))

rewrite52.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
442×pow1_binary64
434×add-sqr-sqrt_binary64
419×*-un-lft-identity_binary64
418×add-log-exp_binary64
418×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify164.0ms (1.9%)

Algorithm
egg-herbie
Rules
1290×sqr-pow_binary64
676×cube-prod_binary64
666×pow-sqr_binary64
559×fabs-mul_binary64
373×unpow3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0988
12264
23064
34164
46564
515364
651764
7118164
8127364
9141164
10157464
11181264
12213964
13256764
14307564
15367964
16440464
17472764
18501164
19523564
20541564
21549764
22644064
23741764
24788364
Stop Event
node limit
Counts
55 → 42
Calls
Call 1
Inputs
(*.f64 (pow.f64 1 1/3) (sin.f64 im))
(*.f64 (pow.f64 1 1/3) (sin.f64 im))
(*.f64 (pow.f64 1 1/3) (sin.f64 im))
(*.f64 (pow.f64 1 1/3) (sin.f64 im))
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(pow.f64 (sin.f64 im) 1/3)
(pow.f64 (sin.f64 im) 1/3)
(pow.f64 (sin.f64 im) 1/3)
(pow.f64 (sin.f64 im) 1/3)
(pow.f64 (sin.f64 im) 1/3)
(pow.f64 (sin.f64 im) 1/3)
(pow.f64 (sin.f64 im) 1/3)
(pow.f64 (sin.f64 im) 1/3)
Outputs
(*.f64 (pow.f64 1 1/3) (sin.f64 im))
(*.f64 1 (sin.f64 im))
(sin.f64 im)
(*.f64 (pow.f64 1 1/3) (sin.f64 im))
(*.f64 1 (sin.f64 im))
(sin.f64 im)
(*.f64 (pow.f64 1 1/3) (sin.f64 im))
(*.f64 1 (sin.f64 im))
(sin.f64 im)
(*.f64 (pow.f64 1 1/3) (sin.f64 im))
(*.f64 1 (sin.f64 im))
(sin.f64 im)
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(*.f64 1 (sin.f64 im))
(sin.f64 im)
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(*.f64 1 (sin.f64 im))
(sin.f64 im)
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(*.f64 1 (sin.f64 im))
(sin.f64 im)
(*.f64 (sin.f64 im) (pow.f64 1 1/3))
(*.f64 1 (sin.f64 im))
(sin.f64 im)
(pow.f64 (sin.f64 im) 1/3)
(cbrt.f64 (sin.f64 im))
(pow.f64 (sin.f64 im) 1/3)
(cbrt.f64 (sin.f64 im))
(pow.f64 (sin.f64 im) 1/3)
(cbrt.f64 (sin.f64 im))
(pow.f64 (sin.f64 im) 1/3)
(cbrt.f64 (sin.f64 im))
(pow.f64 (sin.f64 im) 1/3)
(cbrt.f64 (sin.f64 im))
(pow.f64 (sin.f64 im) 1/3)
(cbrt.f64 (sin.f64 im))
(pow.f64 (sin.f64 im) 1/3)
(cbrt.f64 (sin.f64 im))
(pow.f64 (sin.f64 im) 1/3)
(cbrt.f64 (sin.f64 im))

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series6.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite45.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
595×pow1_binary64
552×log1p-expm1-u_binary64
552×expm1-log1p-u_binary64
551×add-log-exp_binary64
540×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11227
215267
Stop Event
node limit
Counts
1 → 19
Calls
Call 1
Inputs
(*.f64 (+.f64 re 1) 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) (fma.f64 re re (-.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 re re -1) im) (+.f64 re -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 im (+.f64 1 (pow.f64 re 3))) (fma.f64 re re (-.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 im (fma.f64 re re -1)) (+.f64 re -1))))) (#(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 re 1)))))) (#(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)))))))

simplify10.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
09114
116114
223114
329114
442114
546114
648114
Stop Event
saturated
Counts
43 → 24
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))
(*.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 (+.f64 1 re) im)
(*.f64 (+.f64 1 re) im)
(*.f64 (+.f64 1 re) im)
(*.f64 (+.f64 1 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)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 (+.f64 1 re) im)
(fma.f64 re im im)
(fma.f64 im re im)

localize17.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 41 to 26 computations (36.6% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite62.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
528×log-prod_binary64
503×fma-def_binary64
407×pow-prod-down_binary64
280×pow2_binary64
232×fma-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

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

simplify158.0ms (1.8%)

Algorithm
egg-herbie
Rules
1091×fma-def_binary64
751×sqr-pow_binary64
551×fabs-mul_binary64
535×cube-prod_binary64
365×pow-sqr_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
020306
149304
294264
3199264
4493264
51417264
62364264
73141264
83297264
93463264
103658264
113919264
124255264
134637264
145109264
155705264
166418264
177277264
187703264
Stop Event
node limit
Counts
87 → 74
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
im
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.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)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 (*.f64 re re) (*.f64 1/2 im))
(*.f64 re (*.f64 re (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 (*.f64 re re) im)))
(*.f64 im (+.f64 re (*.f64 1/2 (*.f64 re re))))
(*.f64 im (fma.f64 re (*.f64 1/2 re) re))
(*.f64 im (fma.f64 1/2 (*.f64 re re) re))
(*.f64 re (*.f64 im (fma.f64 1/2 re 1)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 (*.f64 re re) (*.f64 1/2 im))
(*.f64 re (*.f64 re (*.f64 1/2 im)))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 (*.f64 re re) im)))
(*.f64 im (+.f64 re (*.f64 1/2 (*.f64 re re))))
(*.f64 im (fma.f64 re (*.f64 1/2 re) re))
(*.f64 im (fma.f64 1/2 (*.f64 re re) re))
(*.f64 re (*.f64 im (fma.f64 1/2 re 1)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(fma.f64 im (fma.f64 re (*.f64 1/2 re) re) im)
(*.f64 (fma.f64 (fma.f64 1/2 re 1) re 1) im)
(*.f64 (fma.f64 re (fma.f64 1/2 re 1) 1) im)
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)

localize18.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 34 to 21 computations (38.2% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite76.0ms (0.9%)

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

simplify136.0ms (1.5%)

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)

eval265.0ms (3%)

Compiler

Compiled 7266 to 4510 computations (37.9% saved)

prune291.0ms (3.3%)

Pruning

19 alts after pruning (4 fresh and 15 done)

PrunedKeptTotal
New5094513
Fresh101
Picked011
Done01414
Total51019529
Error
0b
Counts
529 → 19
Alt Table
Click to see full alt table
StatusErrorProgram
41.3b
(+.f64 (*.f64 re im) im)
24.0b
(pow.f64 (cbrt.f64 (sin.f64 im)) 3)
40.2b
(-.f64 1 1)
38.8b
(exp.f64 re)
20.6b
(*.f64 (exp.f64 re) (-.f64 (+.f64 1 (sin.f64 im)) 1))
23.0b
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
33.1b
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
41.3b
(*.f64 (+.f64 re 1) im)
41.4b
(+.f64 (*.f64 (+.f64 1 re) im) (*.f64 (*.f64 re (*.f64 re 1/2)) im))
23.1b
(sin.f64 im)
61.6b
(*.f64 re im)
23.0b
(*.f64 (sin.f64 im) (+.f64 re 1))
41.4b
(*.f64 im (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
19.4b
(*.f64 (exp.f64 re) im)
41.1b
im
38.6b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
23.0b
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
61.7b
(*.f64 1/2 (*.f64 re (*.f64 re im)))
Compiler

Compiled 163 to 119 computations (27% saved)

regimes101.0ms (1.2%)

Counts
22 → 1
Calls
Call 1
Inputs
im
im
im
(-.f64 1 1)
(*.f64 re im)
(*.f64 (+.f64 re 1) im)
(+.f64 (*.f64 re im) im)
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 im (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
(+.f64 (*.f64 (+.f64 1 re) im) (*.f64 (*.f64 re (*.f64 re 1/2)) im))
(exp.f64 re)
(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 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
(*.f64 (exp.f64 re) (sin.f64 im))
(*.f64 (exp.f64 re) (-.f64 (+.f64 1 (sin.f64 im)) 1))
(pow.f64 (cbrt.f64 (sin.f64 im)) 3)
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
Calls

5 calls:

24.0ms
re
23.0ms
(sin.f64 im)
22.0ms
im
16.0ms
(*.f64 (exp.f64 re) (sin.f64 im))
6.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.0b1re
0.0b1im
0.0b1(*.f64 (exp.f64 re) (sin.f64 im))
0.0b1(exp.f64 re)
0.0b1(sin.f64 im)
Compiler

Compiled 158 to 88 computations (44.3% saved)

regimes353.0ms (4%)

Counts
17 → 2
Calls
Call 1
Inputs
im
im
im
(-.f64 1 1)
(*.f64 re im)
(*.f64 (+.f64 re 1) im)
(+.f64 (*.f64 re im) im)
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 im (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
(+.f64 (*.f64 (+.f64 1 re) im) (*.f64 (*.f64 re (*.f64 re 1/2)) im))
(exp.f64 re)
(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 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
Outputs
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
Calls

6 calls:

181.0ms
(sin.f64 im)
74.0ms
im
47.0ms
re
32.0ms
(sin.f64 im)
5.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.0b2re
8.3b7im
1.0b2(exp.f64 re)
1.0b2(exp.f64 re)
10.1b3(sin.f64 im)
10.1b3(sin.f64 im)
Compiler

Compiled 126 to 74 computations (41.3% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.937093470706671e-7
0.0010285056176157778
Compiler

Compiled 12 to 9 computations (25% saved)

regimes132.0ms (1.5%)

Counts
16 → 2
Calls
Call 1
Inputs
im
im
im
(-.f64 1 1)
(*.f64 re im)
(*.f64 (+.f64 re 1) im)
(+.f64 (*.f64 re im) im)
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 im (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
(+.f64 (*.f64 (+.f64 1 re) im) (*.f64 (*.f64 re (*.f64 re 1/2)) im))
(exp.f64 re)
(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 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
Outputs
(*.f64 (exp.f64 re) im)
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
Calls

6 calls:

55.0ms
im
25.0ms
(sin.f64 im)
24.0ms
(sin.f64 im)
16.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.1b2re
8.3b7im
1.1b2(exp.f64 re)
1.1b2(exp.f64 re)
10.1b3(sin.f64 im)
10.1b3(sin.f64 im)
Compiler

Compiled 110 to 64 computations (41.8% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.937093470706671e-7
0.0010285056176157778
Compiler

Compiled 12 to 9 computations (25% saved)

regimes161.0ms (1.8%)

Counts
15 → 2
Calls
Call 1
Inputs
im
im
im
(-.f64 1 1)
(*.f64 re im)
(*.f64 (+.f64 re 1) im)
(+.f64 (*.f64 re im) im)
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 im (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2)))))
(+.f64 (*.f64 (+.f64 1 re) im) (*.f64 (*.f64 re (*.f64 re 1/2)) im))
(exp.f64 re)
(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:

54.0ms
im
53.0ms
(sin.f64 im)
24.0ms
(sin.f64 im)
16.0ms
re
5.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.3b2re
8.4b7im
1.3b2(exp.f64 re)
1.3b2(exp.f64 re)
10.2b3(sin.f64 im)
10.2b3(sin.f64 im)
Compiler

Compiled 98 to 57 computations (41.8% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.937093470706671e-7
0.0010285056176157778
Compiler

Compiled 12 to 9 computations (25% saved)

regimes181.0ms (2.1%)

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

5 calls:

91.0ms
im
45.0ms
(sin.f64 im)
23.0ms
(sin.f64 im)
14.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.8b2re
8.7b7im
1.8b2(exp.f64 re)
10.4b3(sin.f64 im)
10.4b3(sin.f64 im)
Compiler

Compiled 78 to 44 computations (43.6% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9999931899034182
1.0
Compiler

Compiled 12 to 9 computations (25% saved)

regimes214.0ms (2.4%)

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

4 calls:

141.0ms
im
52.0ms
(sin.f64 im)
14.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
2.0b2re
19.0b7im
2.0b2(exp.f64 re)
21.1b3(sin.f64 im)
Compiler

Compiled 70 to 40 computations (42.9% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
2.7729959240866607e-195
1.937093470706671e-7
Compiler

Compiled 12 to 9 computations (25% saved)

regimes91.0ms (1%)

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

4 calls:

67.0ms
im
13.0ms
re
4.0ms
(exp.f64 re)
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
19.5b2re
27.9b3im
19.5b2(exp.f64 re)
19.5b2(exp.f64 re)
Compiler

Compiled 68 to 39 computations (42.6% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9935873489276724
0.9999931899034182
Compiler

Compiled 12 to 9 computations (25% saved)

regimes72.0ms (0.8%)

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

2 calls:

46.0ms
re
24.0ms
im
Results
ErrorSegmentsBranch
19.6b2re
29.7b3im
Compiler

Compiled 58 to 32 computations (44.8% saved)

bsearch44.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
44.0ms
-447.9841648370633
-15.45690701229933
Compiler

Compiled 12 to 9 computations (25% saved)

regimes92.0ms (1%)

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

2 calls:

78.0ms
im
12.0ms
re
Results
ErrorSegmentsBranch
19.6b2re
29.7b3im
Compiler

Compiled 45 to 24 computations (46.7% saved)

bsearch45.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
45.0ms
-447.9841648370633
-15.45690701229933
Compiler

Compiled 12 to 9 computations (25% saved)

regimes33.0ms (0.4%)

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

2 calls:

20.0ms
im
11.0ms
re
Results
ErrorSegmentsBranch
19.8b2re
29.7b3im
Compiler

Compiled 34 to 17 computations (50% saved)

bsearch48.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
48.0ms
-0.006433300444698604
-6.810119770609936e-6
Compiler

Compiled 12 to 9 computations (25% saved)

regimes30.0ms (0.3%)

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

2 calls:

18.0ms
im
10.0ms
re
Results
ErrorSegmentsBranch
19.8b2re
29.7b3im
Compiler

Compiled 22 to 13 computations (40.9% saved)

bsearch74.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
74.0ms
-0.006433300444698604
-6.810119770609936e-6
Compiler

Compiled 12 to 9 computations (25% saved)

regimes47.0ms (0.5%)

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

2 calls:

37.0ms
im
9.0ms
re
Results
ErrorSegmentsBranch
19.9b2re
29.7b3im
Compiler

Compiled 17 to 10 computations (41.2% saved)

bsearch50.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
50.0ms
-447.9841648370633
-15.45690701229933
Compiler

Compiled 12 to 9 computations (25% saved)

regimes41.0ms (0.5%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0.0b (0%)

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

2 calls:

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

Compiled 11 to 6 computations (45.5% saved)

simplify11.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
056248
178248
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 944473296573929/4722366482869645213696) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1))))
(if (<=.f64 (exp.f64 re) 944473296573929/4722366482869645213696) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2))))))
(if (<=.f64 (exp.f64 re) 944473296573929/4722366482869645213696) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 1) (*.f64 (exp.f64 re) im) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 6575169876935467/1315033975387093376810247470720032166387584950705793464874570225767183038574270205528416634069397112806745742214044554428254858062545950965781953692662970212488805917782111149547915939471080679317823312933945344) (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 8962163258467287/9007199254740992) (exp.f64 re) (+.f64 (*.f64 (+.f64 1 re) im) (*.f64 (*.f64 re (*.f64 re 1/2)) im)))
(if (<=.f64 re -3940510386382971/8796093022208) (-.f64 1 1) (+.f64 (*.f64 (+.f64 1 re) im) (*.f64 (*.f64 re (*.f64 re 1/2)) im)))
(if (<=.f64 re -3940510386382971/8796093022208) (-.f64 1 1) (*.f64 im (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2))))))
(if (<=.f64 re -1854272607072453/288230376151711744) (-.f64 1 1) (+.f64 (*.f64 re im) im))
(if (<=.f64 re -1854272607072453/288230376151711744) (-.f64 1 1) (*.f64 (+.f64 re 1) im))
(if (<=.f64 re -3940510386382971/8796093022208) (-.f64 1 1) im)
im
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 944473296573929/4722366482869645213696) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1))))
(if (<=.f64 (exp.f64 re) 944473296573929/4722366482869645213696) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2))))))
(if (<=.f64 (exp.f64 re) 944473296573929/4722366482869645213696) (*.f64 (exp.f64 re) im) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 1) (*.f64 (exp.f64 re) im) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 6575169876935467/1315033975387093376810247470720032166387584950705793464874570225767183038574270205528416634069397112806745742214044554428254858062545950965781953692662970212488805917782111149547915939471080679317823312933945344) (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 8962163258467287/9007199254740992) (exp.f64 re) (+.f64 (*.f64 (+.f64 1 re) im) (*.f64 (*.f64 re (*.f64 re 1/2)) im)))
(if (<=.f64 (exp.f64 re) 8962163258467287/9007199254740992) (exp.f64 re) (+.f64 (*.f64 im (+.f64 re 1)) (*.f64 im (*.f64 re (*.f64 re 1/2)))))
(if (<=.f64 re -3940510386382971/8796093022208) (-.f64 1 1) (+.f64 (*.f64 (+.f64 1 re) im) (*.f64 (*.f64 re (*.f64 re 1/2)) im)))
(if (<=.f64 re -3940510386382971/8796093022208) 0 (+.f64 (*.f64 im (+.f64 re 1)) (*.f64 im (*.f64 re (*.f64 re 1/2)))))
(if (<=.f64 re -3940510386382971/8796093022208) (-.f64 1 1) (*.f64 im (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2))))))
(if (<=.f64 re -3940510386382971/8796093022208) 0 (*.f64 im (+.f64 1 (+.f64 re (*.f64 re (*.f64 re 1/2))))))
(if (<=.f64 re -1854272607072453/288230376151711744) (-.f64 1 1) (+.f64 (*.f64 re im) im))
(if (<=.f64 re -1854272607072453/288230376151711744) 0 (+.f64 im (*.f64 re im)))
(if (<=.f64 re -1854272607072453/288230376151711744) (-.f64 1 1) (*.f64 (+.f64 re 1) im))
(if (<=.f64 re -1854272607072453/288230376151711744) 0 (*.f64 im (+.f64 re 1)))
(if (<=.f64 re -3940510386382971/8796093022208) (-.f64 1 1) im)
(if (<=.f64 re -3940510386382971/8796093022208) 0 im)
im
Compiler

Compiled 193 to 130 computations (32.6% saved)

soundness0.0ms (0%)

end166.0ms (1.9%)

Compiler

Compiled 169 to 92 computations (45.6% saved)

Profiling

Loading profile data...