Details

Time bar (total: 9.1s)

analyze86.0ms (0.9%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
50%50%50%0.1%0%0%0%2
50%50%50%0.1%0%0%0%3
75%74.9%25%0.1%0%0%0%4
75%74.9%25%0.1%0%0%0%5
77.4%74.9%21.9%0.1%3.1%0%0%6
78.7%74.9%20.3%0.1%4.7%0%0%7
80.7%74.9%18%0.1%7%0%0%8
81.7%74.9%16.8%0.1%8.2%0%0%9
82.9%74.9%15.4%0.1%9.6%0%0%10
83.6%74.9%14.7%0.1%10.2%0%0%11
84.3%74.9%14%0.1%11%0%0%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample2.1s (22.9%)

Results
810.0ms6145×body256valid
665.0ms1393×body1024valid
274.0ms694×body1024infinite
177.0ms714×body512valid
81.0ms348×body512infinite
61.0ms444×body256infinite
3.0msbody2048valid
Bogosity

preprocess15.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 9 to 7 computations (22.2% saved)

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

rewrite46.0ms (0.5%)

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

eval10.0ms (0.1%)

Compiler

Compiled 517 to 258 computations (50.1% saved)

prune11.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
21.7b
(sin.f64 im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
18.2b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
0.9b
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
20.1b
(*.f64 (exp.f64 re) im)
29.7b
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
Compiler

Compiled 83 to 63 computations (24.1% saved)

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

series20.0ms (0.2%)

Counts
2 → 40
Calls

12 calls:

TimeVariablePointExpression
4.0ms
re
@0
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
4.0ms
re
@-inf
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
3.0ms
im
@inf
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
3.0ms
re
@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)

rewrite60.0ms (0.7%)

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

simplify70.0ms (0.8%)

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)

rewrite38.0ms (0.4%)

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

simplify123.0ms (1.3%)

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)

localize10.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 im)
0.0b
(+.f64 re (log.f64 (sin.f64 im)))
0.4b
(log.f64 (sin.f64 im))
1.2b
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
Compiler

Compiled 20 to 6 computations (70% saved)

series53.0ms (0.6%)

Counts
3 → 23
Calls

15 calls:

TimeVariablePointExpression
23.0ms
im
@inf
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
22.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))))

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

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

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.2b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
0.5b
(sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))
Compiler

Compiled 28 to 9 computations (67.9% saved)

series7.0ms (0.1%)

Counts
2 → 40
Calls

12 calls:

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

rewrite53.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

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

simplify53.0ms (0.6%)

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

Useful iterations: 3 (0.0ms)

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

eval112.0ms (1.2%)

Compiler

Compiled 6141 to 3125 computations (49.1% saved)

prune66.0ms (0.7%)

Pruning

13 alts after pruning (10 fresh and 3 done)

PrunedKeptTotal
New40510415
Fresh000
Picked101
Done235
Total40813421
Error
0b
Counts
421 → 13
Alt Table
Click to see full alt table
StatusErrorProgram
21.7b
(sin.f64 im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
41.9b
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
30.4b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) im)) 2)
20.5b
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) im)) 3)
21.8b
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
20.1b
(*.f64 (exp.f64 re) im)
41.0b
(exp.f64 (log.f64 (sin.f64 im)))
21.7b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
21.6b
(*.f64 (sin.f64 im) (+.f64 re 1))
41.7b
(+.f64 (*.f64 re im) im)
41.5b
im
38.8b
(exp.f64 re)
Compiler

Compiled 200 to 144 computations (28% saved)

localize9.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 23 to 8 computations (65.2% saved)

series15.0ms (0.2%)

Counts
2 → 24
Calls

12 calls:

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

rewrite53.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
611×pow1_binary64
571×add-log-exp_binary64
571×log1p-expm1-u_binary64
571×expm1-log1p-u_binary64
556×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify61.0ms (0.7%)

Algorithm
egg-herbie
Rules
627×associate-*l*_binary64
607×fma-def_binary64
606×associate-*r*_binary64
271×distribute-rgt-in_binary64
269×distribute-lft-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01091002
1345919
21098901
35904810
Stop Event
node limit
Counts
76 → 70
Calls
Call 1
Inputs
(*.f64 (pow.f64 1 1/3) im)
(+.f64 (*.f64 (+.f64 (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9)) (*.f64 2/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9))) re) (*.f64 (pow.f64 1 1/3) im))
(+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 1 1/3))) (+.f64 (*.f64 2/9 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9)) (*.f64 (+.f64 (*.f64 1/9 (pow.f64 (*.f64 1 (pow.f64 im 14)) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (/.f64 1 im) 1/3)))) (pow.f64 (*.f64 1 im) 1/3)))) (pow.f64 re 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9)) (*.f64 2/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9))) re) (*.f64 (pow.f64 1 1/3) im)))
(+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 1 1/3))) (+.f64 (*.f64 2/9 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9)) (*.f64 (+.f64 (*.f64 1/9 (pow.f64 (*.f64 1 (pow.f64 im 14)) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (/.f64 1 im) 1/3)))) (pow.f64 (*.f64 1 im) 1/3)))) (pow.f64 re 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9)) (*.f64 2/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9))) re) (+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 1 im) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 im) 1/3) (-.f64 (*.f64 1/6 im) (+.f64 (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 (pow.f64 im 4)) 1/9))) (*.f64 1/27 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/3)))))) (*.f64 2/9 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 im) 1/9))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/6 im) (+.f64 (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 (pow.f64 im 4)) 1/9))) (*.f64 1/27 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/3)))))) (+.f64 (*.f64 2/9 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 (pow.f64 im 4)) 1/9))) (*.f64 1/3 (*.f64 (+.f64 (*.f64 1/9 (pow.f64 (*.f64 1 (pow.f64 im 14)) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (/.f64 1 im) 1/3)))) (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/9)))))) (pow.f64 re 3)) (*.f64 (pow.f64 1 1/3) im))))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(pow.f64 im 1/3)
(+.f64 (pow.f64 im 1/3) (*.f64 1/3 (*.f64 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/9) re)))
(+.f64 (pow.f64 im 1/3) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/9) re)) (*.f64 1/3 (*.f64 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 re 2)) (pow.f64 (/.f64 1 (pow.f64 im 2)) 1/3)))))
(+.f64 (pow.f64 im 1/3) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/9) re)) (+.f64 (*.f64 1/3 (*.f64 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 re 2)) (pow.f64 (/.f64 1 (pow.f64 im 2)) 1/3))) (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 im 2)) 1/3) (*.f64 (-.f64 (*.f64 1/6 im) (+.f64 (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 (pow.f64 im 4)) 1/9))) (*.f64 1/27 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/3)))) (pow.f64 re 3)))))))
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
Outputs
(*.f64 (pow.f64 1 1/3) im)
im
(+.f64 (*.f64 (+.f64 (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9)) (*.f64 2/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9))) re) (*.f64 (pow.f64 1 1/3) im))
(fma.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) 1) re im)
(fma.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) re im)
(+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 1 1/3))) (+.f64 (*.f64 2/9 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9)) (*.f64 (+.f64 (*.f64 1/9 (pow.f64 (*.f64 1 (pow.f64 im 14)) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (/.f64 1 im) 1/3)))) (pow.f64 (*.f64 1 im) 1/3)))) (pow.f64 re 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9)) (*.f64 2/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9))) re) (*.f64 (pow.f64 1 1/3) im)))
(fma.f64 (fma.f64 1/3 (*.f64 1 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18))))) (fma.f64 2/9 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) (*.f64 (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (pow.f64 (pow.f64 im 14) 1/18)) (*.f64 2/3 (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (cbrt.f64 (/.f64 1 im))))) (cbrt.f64 im)))) (*.f64 re re) (fma.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) 1) re im))
(fma.f64 (fma.f64 1/3 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (fma.f64 (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (pow.f64 (pow.f64 im 14) 1/18)) (*.f64 2/3 (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (cbrt.f64 (/.f64 1 im))))) (cbrt.f64 im) (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) 2/9))) (*.f64 re re) (fma.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) re im))
(fma.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) re (fma.f64 re (*.f64 re (fma.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) 2/9 (fma.f64 (fma.f64 (cbrt.f64 (/.f64 1 im)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/9) (*.f64 1/3 im)) (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (*.f64 1/9 (pow.f64 (pow.f64 im 14) 1/18)))) (cbrt.f64 im) (+.f64 (*.f64 im 1/6) (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/9))))) im))
(fma.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) re (fma.f64 re (*.f64 re (fma.f64 (fma.f64 (cbrt.f64 (/.f64 1 im)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/9) (*.f64 1/3 im)) (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (*.f64 1/9 (pow.f64 (pow.f64 im 14) 1/18)))) (cbrt.f64 im) (+.f64 (*.f64 im 1/6) (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) 1/9)))) im))
(+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 1 1/3))) (+.f64 (*.f64 2/9 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9)) (*.f64 (+.f64 (*.f64 1/9 (pow.f64 (*.f64 1 (pow.f64 im 14)) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (/.f64 1 im) 1/3)))) (pow.f64 (*.f64 1 im) 1/3)))) (pow.f64 re 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9)) (*.f64 2/3 (pow.f64 (*.f64 1 (pow.f64 im 13)) 1/9))) re) (+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 1 im) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 im) 1/3) (-.f64 (*.f64 1/6 im) (+.f64 (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 (pow.f64 im 4)) 1/9))) (*.f64 1/27 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/3)))))) (*.f64 2/9 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 im) 1/9))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/6 im) (+.f64 (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 (pow.f64 im 4)) 1/9))) (*.f64 1/27 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/3)))))) (+.f64 (*.f64 2/9 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 (pow.f64 im 4)) 1/9))) (*.f64 1/3 (*.f64 (+.f64 (*.f64 1/9 (pow.f64 (*.f64 1 (pow.f64 im 14)) 1/9)) (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (/.f64 1 im) 1/3)))) (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/9)))))) (pow.f64 re 3)) (*.f64 (pow.f64 1 1/3) im))))
(fma.f64 (fma.f64 1/3 (*.f64 1 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18))))) (fma.f64 2/9 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) (*.f64 (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (pow.f64 (pow.f64 im 14) 1/18)) (*.f64 2/3 (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (cbrt.f64 (/.f64 1 im))))) (cbrt.f64 im)))) (*.f64 re re) (fma.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) 1) re (fma.f64 (fma.f64 (cbrt.f64 im) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 im)) (-.f64 (*.f64 im 1/6) (fma.f64 2/3 (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18))) (*.f64 1/27 (cbrt.f64 (pow.f64 im 7)))))) (*.f64 2/9 (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (*.f64 (pow.f64 im 1/18) (pow.f64 im 1/18))))) (+.f64 (*.f64 1/3 (-.f64 (*.f64 im 1/6) (fma.f64 2/3 (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18))) (*.f64 1/27 (cbrt.f64 (pow.f64 im 7)))))) (fma.f64 2/9 (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18))) (*.f64 1/3 (*.f64 (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (pow.f64 (pow.f64 im 14) 1/18)) (*.f64 2/3 (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (cbrt.f64 (/.f64 1 im))))) (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18))))))) (pow.f64 re 3) im)))
(fma.f64 (fma.f64 1/3 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (fma.f64 (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (pow.f64 (pow.f64 im 14) 1/18)) (*.f64 2/3 (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (cbrt.f64 (/.f64 1 im))))) (cbrt.f64 im) (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) 2/9))) (*.f64 re re) (fma.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) re (fma.f64 (fma.f64 (cbrt.f64 im) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 im)) (-.f64 (*.f64 im 1/6) (fma.f64 1/27 (cbrt.f64 (pow.f64 im 7)) (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (*.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) 2/3))))) (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (*.f64 (*.f64 (pow.f64 im 1/18) (pow.f64 im 1/18)) 2/9))) (fma.f64 1/3 (-.f64 (*.f64 im 1/6) (fma.f64 1/27 (cbrt.f64 (pow.f64 im 7)) (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (*.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) 2/3)))) (fma.f64 2/9 (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18))) (*.f64 (fma.f64 1/9 (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (pow.f64 (pow.f64 im 14) 1/18)) (*.f64 2/3 (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (cbrt.f64 (/.f64 1 im))))) (*.f64 1/3 (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18))))))) (pow.f64 re 3) im)))
(fma.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) re (fma.f64 re (*.f64 re (fma.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) 2/9 (fma.f64 (fma.f64 (cbrt.f64 (/.f64 1 im)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/9) (*.f64 1/3 im)) (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (*.f64 1/9 (pow.f64 (pow.f64 im 14) 1/18)))) (cbrt.f64 im) (+.f64 (*.f64 im 1/6) (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/9))))) (fma.f64 (fma.f64 (cbrt.f64 im) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 im)) (-.f64 (*.f64 im 1/6) (fma.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/9) (*.f64 1/3 im)) (*.f64 1/27 (cbrt.f64 (pow.f64 im 7)))))) (*.f64 (*.f64 (pow.f64 im 1/18) (pow.f64 im 1/18)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/27) (*.f64 im 1/9)))) (fma.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/27) (*.f64 im 1/9)) (*.f64 1/3 (+.f64 (-.f64 (*.f64 im 1/6) (fma.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/9) (*.f64 1/3 im)) (*.f64 1/27 (cbrt.f64 (pow.f64 im 7))))) (*.f64 (fma.f64 (cbrt.f64 (/.f64 1 im)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/9) (*.f64 1/3 im)) (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (*.f64 1/9 (pow.f64 (pow.f64 im 14) 1/18)))) (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18))))))) (pow.f64 re 3) im)))
(fma.f64 (*.f64 (pow.f64 (pow.f64 im 13) 1/18) (pow.f64 (pow.f64 im 13) 1/18)) re (fma.f64 re (*.f64 re (fma.f64 (fma.f64 (cbrt.f64 (/.f64 1 im)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/9) (*.f64 1/3 im)) (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (*.f64 1/9 (pow.f64 (pow.f64 im 14) 1/18)))) (cbrt.f64 im) (+.f64 (*.f64 im 1/6) (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) 1/9)))) (fma.f64 (+.f64 (fma.f64 1/3 (*.f64 (fma.f64 (cbrt.f64 (/.f64 1 im)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/9) (*.f64 1/3 im)) (*.f64 (pow.f64 (pow.f64 im 14) 1/18) (*.f64 1/9 (pow.f64 (pow.f64 im 14) 1/18)))) (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18))) (*.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/27) (*.f64 im 1/9)))) (+.f64 (*.f64 (*.f64 (pow.f64 im 1/18) (pow.f64 im 1/18)) (*.f64 (cbrt.f64 im) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/27) (*.f64 im 1/9)))) (*.f64 (fma.f64 im 1/6 (fma.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) (+.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (*.f64 2/9 (pow.f64 (pow.f64 im 17) 1/18))) (*.f64 im -1/3)) (*.f64 (cbrt.f64 (pow.f64 im 7)) -1/27))) (+.f64 (*.f64 (*.f64 2/3 (cbrt.f64 im)) (cbrt.f64 (/.f64 1 im))) 1/3)))) (pow.f64 re 3) im)))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (*.f64 1 (exp.f64 re)) im)
(*.f64 im (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (*.f64 1 (exp.f64 re)) im)
(*.f64 im (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (*.f64 1 (exp.f64 re)) im)
(*.f64 im (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (*.f64 1 (exp.f64 re)) im)
(*.f64 im (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (*.f64 1 (exp.f64 re)) im)
(*.f64 im (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (*.f64 1 (exp.f64 re)) im)
(*.f64 im (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (*.f64 1 (exp.f64 re)) im)
(*.f64 im (exp.f64 re))
(*.f64 (pow.f64 1 1/3) (*.f64 (exp.f64 re) im))
(*.f64 (*.f64 1 (exp.f64 re)) im)
(*.f64 im (exp.f64 re))
(pow.f64 im 1/3)
(cbrt.f64 im)
(+.f64 (pow.f64 im 1/3) (*.f64 1/3 (*.f64 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/9) re)))
(+.f64 (cbrt.f64 im) (*.f64 1/3 (*.f64 re (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18)))))
(fma.f64 (*.f64 1/3 (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18))) re (cbrt.f64 im))
(fma.f64 re (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (*.f64 1/3 (pow.f64 (pow.f64 im 7) 1/18))) (cbrt.f64 im))
(+.f64 (pow.f64 im 1/3) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/9) re)) (*.f64 1/3 (*.f64 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 re 2)) (pow.f64 (/.f64 1 (pow.f64 im 2)) 1/3)))))
(+.f64 (cbrt.f64 im) (*.f64 1/3 (+.f64 (*.f64 re (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18))) (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (*.f64 (*.f64 re re) (cbrt.f64 (/.f64 1 (*.f64 im im))))))))
(fma.f64 1/3 (fma.f64 re (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18)) (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (*.f64 re (*.f64 re (cbrt.f64 (/.f64 1 (*.f64 im im))))))) (cbrt.f64 im))
(fma.f64 1/3 (fma.f64 re (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18)) (*.f64 re (*.f64 (*.f64 re (cbrt.f64 (/.f64 1 (*.f64 im im)))) (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3))))) (cbrt.f64 im))
(fma.f64 1/3 (*.f64 re (+.f64 (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18)) (*.f64 (*.f64 re (cbrt.f64 (/.f64 1 (*.f64 im im)))) (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3))))) (cbrt.f64 im))
(+.f64 (pow.f64 im 1/3) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/9) re)) (+.f64 (*.f64 1/3 (*.f64 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 re 2)) (pow.f64 (/.f64 1 (pow.f64 im 2)) 1/3))) (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 im 2)) 1/3) (*.f64 (-.f64 (*.f64 1/6 im) (+.f64 (*.f64 2/3 (*.f64 (-.f64 (*.f64 1/2 im) (*.f64 1/3 (pow.f64 (*.f64 1 (pow.f64 im 17)) 1/9))) (pow.f64 (*.f64 1 (pow.f64 im 4)) 1/9))) (*.f64 1/27 (pow.f64 (*.f64 1 (pow.f64 im 7)) 1/3)))) (pow.f64 re 3)))))))
(+.f64 (cbrt.f64 im) (fma.f64 1/3 (*.f64 re (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18))) (*.f64 1/3 (+.f64 (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (*.f64 (*.f64 re re) (cbrt.f64 (/.f64 1 (*.f64 im im))))) (*.f64 (cbrt.f64 (/.f64 1 (*.f64 im im))) (*.f64 (-.f64 (*.f64 im 1/6) (fma.f64 2/3 (*.f64 (+.f64 (*.f64 im 1/2) (*.f64 -1/3 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)))) (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18))) (*.f64 1/27 (cbrt.f64 (pow.f64 im 7))))) (pow.f64 re 3)))))))
(+.f64 (cbrt.f64 im) (*.f64 1/3 (+.f64 (*.f64 re (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18))) (*.f64 (cbrt.f64 (/.f64 1 (*.f64 im im))) (+.f64 (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (*.f64 re re)) (*.f64 (-.f64 (*.f64 im 1/6) (fma.f64 1/27 (cbrt.f64 (pow.f64 im 7)) (*.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (*.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) 2/3)))) (pow.f64 re 3)))))))
(fma.f64 1/3 (fma.f64 re (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18)) (*.f64 (cbrt.f64 (/.f64 1 (*.f64 im im))) (*.f64 (*.f64 re re) (+.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (*.f64 re (-.f64 (*.f64 im 1/6) (fma.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) (+.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -2/9) (*.f64 1/3 im)) (*.f64 1/27 (cbrt.f64 (pow.f64 im 7)))))))))) (cbrt.f64 im))
(fma.f64 1/3 (fma.f64 re (*.f64 (pow.f64 (pow.f64 im 7) 1/18) (pow.f64 (pow.f64 im 7) 1/18)) (*.f64 (cbrt.f64 (/.f64 1 (*.f64 im im))) (*.f64 (*.f64 re re) (+.f64 (fma.f64 im 1/2 (*.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (pow.f64 (pow.f64 im 17) 1/18)) -1/3)) (*.f64 re (fma.f64 im 1/6 (fma.f64 (*.f64 (pow.f64 (pow.f64 im 4) 1/18) (pow.f64 (pow.f64 im 4) 1/18)) (+.f64 (*.f64 (pow.f64 (pow.f64 im 17) 1/18) (*.f64 2/9 (pow.f64 (pow.f64 im 17) 1/18))) (*.f64 im -1/3)) (*.f64 (cbrt.f64 (pow.f64 im 7)) -1/27)))))))) (cbrt.f64 im))
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(cbrt.f64 (*.f64 im (exp.f64 re)))
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(cbrt.f64 (*.f64 im (exp.f64 re)))
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(cbrt.f64 (*.f64 im (exp.f64 re)))
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(cbrt.f64 (*.f64 im (exp.f64 re)))
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(cbrt.f64 (*.f64 im (exp.f64 re)))
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(cbrt.f64 (*.f64 im (exp.f64 re)))
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(cbrt.f64 (*.f64 im (exp.f64 re)))
(pow.f64 (*.f64 (exp.f64 re) im) 1/3)
(cbrt.f64 (*.f64 im (exp.f64 re)))

localize5.0ms (0.1%)

Compiler

Compiled 12 to 4 computations (66.7% saved)

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

series12.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite50.0ms (0.6%)

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

simplify107.0ms (1.2%)

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

Useful iterations: 3 (0.0ms)

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

localize21.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 46 to 28 computations (39.1% saved)

series10.0ms (0.1%)

Counts
4 → 43
Calls

24 calls:

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

rewrite85.0ms (0.9%)

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

Useful iterations: 2 (0.0ms)

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

simplify140.0ms (1.5%)

Algorithm
egg-herbie
Rules
723×distribute-rgt-in_binary64
610×fma-def_binary64
582×fma-neg_binary64
412×unsub-neg_binary64
292×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
031581
180495
2196459
3573459
41737459
54008459
65627459
76519459
86890459
97094459
107669459
Stop Event
node limit
Counts
245 → 217
Calls
Call 1
Inputs
im
(+.f64 (*.f64 re im) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
im
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1/2 (pow.f64 re 2)) 1) im))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1/2 (pow.f64 re 2)) 1) im))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1/2 (pow.f64 re 2)) 1) im))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1/2 (pow.f64 re 2)) 1) im))
Outputs
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 (*.f64 1/2 re) re))
(*.f64 (*.f64 1/2 (*.f64 im re)) re)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (*.f64 (*.f64 1/2 re) re)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) re))
(*.f64 im (*.f64 re (fma.f64 re 1/2 1)))
(*.f64 re (fma.f64 im (*.f64 re 1/2) im))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 (*.f64 1/2 re) re))
(*.f64 (*.f64 1/2 (*.f64 im re)) re)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (*.f64 (*.f64 1/2 re) re)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) re))
(*.f64 im (*.f64 re (fma.f64 re 1/2 1)))
(*.f64 re (fma.f64 im (*.f64 re 1/2) im))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
(*.f64 -1 (*.f64 (-.f64 (+.f64 (*.f64 -1 re) (*.f64 -1/2 (pow.f64 re 2))) 1) im))
(+.f64 (fma.f64 re im im) (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/2 (*.f64 re re) re) im)
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(fma.f64 re (fma.f64 im (*.f64 re 1/2) im) im)
im
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 (*.f64 1/2 re) re))
(*.f64 (*.f64 1/2 (*.f64 im re)) re)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 (*.f64 1/2 re) re))
(*.f64 (*.f64 1/2 (*.f64 im re)) re)
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1/2 (pow.f64 re 2)) 1) im))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1/2 (pow.f64 re 2)) 1) im))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1/2 (pow.f64 re 2)) 1) im))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1/2 (pow.f64 re 2)) 1) im))
(+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 (*.f64 im re) (*.f64 re 1/2) im)

localize9.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 im)
0.4b
(log.f64 (sin.f64 im))
1.6b
(exp.f64 (log.f64 (sin.f64 im)))
Compiler

Compiled 12 to 5 computations (58.3% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
im
@0
(exp.f64 (log.f64 (sin.f64 im)))
0.0ms
im
@inf
(exp.f64 (log.f64 (sin.f64 im)))
0.0ms
im
@-inf
(exp.f64 (log.f64 (sin.f64 im)))

rewrite48.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
341×pow1_binary64
326×add-sqr-sqrt_binary64
321×*-un-lft-identity_binary64
312×add-log-exp_binary64
312×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
053
1823
28593
Stop Event
node limit
Counts
1 → 49
Calls
Call 1
Inputs
(exp.f64 (log.f64 (sin.f64 im)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (sin.f64 im) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (sin.f64 im)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sin.f64 im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sin.f64 im)))) (log.f64 (sqrt.f64 (exp.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sin.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 (+.f64 1 im)) (cos.f64 1)) (*.f64 (cos.f64 (+.f64 1 im)) (sin.f64 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 im)) (pow.f64 (cbrt.f64 (sin.f64 im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (cbrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 im)) (sqrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 im) 1/4) (sqrt.f64 (pow.f64 (sin.f64 im) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (sin.f64 im) 5/2)) (pow.f64 (sin.f64 im) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (cbrt.f64 (sin.f64 im))) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 5)) (pow.f64 (sin.f64 im) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (sin.f64 im) 3/2)) (pow.f64 (sin.f64 im) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 (sin.f64 im) (cbrt.f64 (sin.f64 im))) 2) 1/3) (cbrt.f64 (cbrt.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (sin.f64 im) 5/2) 1/3) (pow.f64 (sin.f64 im) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (E.f64) (*.f64 2 (log.f64 (cbrt.f64 (sin.f64 im))))) (pow.f64 (E.f64) (log.f64 (cbrt.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (E.f64) (log.f64 (sqrt.f64 (sin.f64 im)))) (pow.f64 (E.f64) (log.f64 (sqrt.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (exp.f64 (+.f64 1 (log.f64 (sin.f64 im)))) (E.f64))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 (cos.f64 0) (cos.f64 (+.f64 im im)))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (E.f64) (+.f64 1 (log.f64 (sin.f64 im)))) (E.f64))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 1 (sin.f64 im)) 3) 1) (+.f64 (*.f64 (+.f64 1 (sin.f64 im)) (+.f64 1 (sin.f64 im))) (+.f64 1 (*.f64 (+.f64 1 (sin.f64 im)) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (+.f64 (sin.f64 im) -1) 3)) (+.f64 1 (-.f64 (pow.f64 (+.f64 (sin.f64 im) -1) 2) (+.f64 (sin.f64 im) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (+.f64 1 (sin.f64 im)) (+.f64 1 (sin.f64 im))) 1) (+.f64 (+.f64 1 (sin.f64 im)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (+.f64 (sin.f64 im) -1) 2)) (-.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 (pow.f64 (sin.f64 im) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 im) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sin.f64 im)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (sin.f64 im)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.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 pow.f64 (E.f64) (log.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.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 pow.f64 (exp.f64 (sqrt.f64 (log.f64 (sin.f64 im)))) (sqrt.f64 (log.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (sin.f64 im))) 2)) (pow.f64 (cbrt.f64 (cbrt.f64 (log.f64 (sin.f64 im)))) 2)) (cbrt.f64 (cbrt.f64 (log.f64 (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (sin.f64 im))) 2)) (pow.f64 (log.f64 (sin.f64 im)) 1/6)) (pow.f64 (log.f64 (sin.f64 im)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (sin.f64 im)))) (cbrt.f64 (log.f64 (sin.f64 im)))) (pow.f64 (log.f64 (sin.f64 im)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (sin.f64 im)))) (pow.f64 (log.f64 (sin.f64 im)) 1/4)) (pow.f64 (log.f64 (sin.f64 im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (sin.f64 im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (sin.f64 im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 im)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sin.f64 im)))))))

simplify153.0ms (1.7%)

Algorithm
egg-herbie
Rules
675×sqr-pow_binary64
674×cube-prod_binary64
624×unswap-sqr_binary64
572×fabs-mul_binary64
486×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02070
15570
212570
331970
459770
5135170
6201870
7298570
8313970
9338770
10370270
11418370
12486270
13575670
14640470
15691370
16731470
17768570
18789770
Stop Event
node limit
Counts
61 → 56
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)
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)))
(fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/6 (pow.f64 im 3) (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)

eval279.0ms (3%)

Compiler

Compiled 7497 to 3997 computations (46.7% saved)

prune145.0ms (1.6%)

Pruning

17 alts after pruning (11 fresh and 6 done)

PrunedKeptTotal
New4666472
Fresh055
Picked011
Done257
Total46817485
Error
0b
Counts
485 → 17
Alt Table
Click to see full alt table
StatusErrorProgram
21.7b
(sin.f64 im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
36.7b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
41.7b
(*.f64 (+.f64 1 re) im)
61.7b
(*.f64 im (*.f64 re (*.f64 re 1/2)))
30.4b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) im)) 2)
20.5b
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) im)) 3)
21.8b
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
20.1b
(*.f64 (exp.f64 re) im)
41.9b
(+.f64 (*.f64 re im) (*.f64 im (+.f64 1 (*.f64 (*.f64 re re) 1/2))))
41.0b
(exp.f64 (log.f64 (sin.f64 im)))
41.9b
(+.f64 (*.f64 re im) (+.f64 (+.f64 0 (*.f64 (*.f64 re re) (*.f64 im 1/2))) im))
33.1b
(*.f64 (-.f64 (+.f64 1 (sin.f64 im)) 1) (+.f64 re 1))
21.7b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
21.6b
(*.f64 (sin.f64 im) (+.f64 re 1))
41.5b
im
38.8b
(exp.f64 re)
Compiler

Compiled 277 to 202 computations (27.1% saved)

localize33.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

Compiled 40 to 21 computations (47.5% saved)

series9.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

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

rewrite268.0ms (2.9%)

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

Useful iterations: 1 (0.0ms)

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

simplify181.0ms (2%)

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

Useful iterations: 3 (0.0ms)

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

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series6.0ms (0.1%)

Counts
1 → 12
Calls

6 calls:

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

rewrite80.0ms (0.9%)

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

Useful iterations: 0 (0.0ms)

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

simplify60.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

localize29.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 46 to 23 computations (50% saved)

series11.0ms (0.1%)

Counts
3 → 60
Calls

15 calls:

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

rewrite143.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
708×fma-def_binary64
580×log-prod_binary64
435×pow-prod-down_binary64
300×pow2_binary64
264×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify150.0ms (1.6%)

Algorithm
egg-herbie
Rules
1465×fma-neg_binary64
699×fma-def_binary64
316×unsub-neg_binary64
296×distribute-rgt-neg-in_binary64
290×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
028660
178640
2193600
3604600
41974600
54150600
65336600
76295600
86692600
96893600
107515600
Stop Event
node limit
Counts
224 → 182
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 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
im
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
Outputs
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(*.f64 (*.f64 im re) (*.f64 re 1/2))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (*.f64 re (*.f64 re 1/2))))
(*.f64 im (fma.f64 re (*.f64 re 1/2) re))
(*.f64 (fma.f64 re 1/2 1) (*.f64 im re))
(*.f64 (*.f64 im re) (fma.f64 re 1/2 1))
(*.f64 (*.f64 im re) (fma.f64 re 1/2 -1))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(*.f64 (*.f64 im re) (*.f64 re 1/2))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (*.f64 re (*.f64 re 1/2))))
(*.f64 im (fma.f64 re (*.f64 re 1/2) re))
(*.f64 (fma.f64 re 1/2 1) (*.f64 im re))
(*.f64 (*.f64 im re) (fma.f64 re 1/2 1))
(*.f64 (*.f64 im re) (fma.f64 re 1/2 -1))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(fma.f64 re im (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 (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
im
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(*.f64 (*.f64 im re) (*.f64 re 1/2))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(*.f64 (*.f64 im re) (*.f64 re 1/2))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(*.f64 re (*.f64 re 1/2))

localize4.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

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

Compiled 34 to 21 computations (38.2% saved)

series4.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite188.0ms (2.1%)

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

Useful iterations: 1 (0.0ms)

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

simplify179.0ms (2%)

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)

eval685.0ms (7.5%)

Compiler

Compiled 11399 to 6624 computations (41.9% saved)

prune271.0ms (3%)

Pruning

21 alts after pruning (10 fresh and 11 done)

PrunedKeptTotal
New6916697
Fresh246
Picked011
Done01010
Total69321714
Error
0b
Counts
714 → 21
Alt Table
Click to see full alt table
StatusErrorProgram
41.5b
im
21.8b
(*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1)))
20.1b
(*.f64 (exp.f64 re) im)
41.9b
(*.f64 im (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
61.7b
(*.f64 (*.f64 im re) (*.f64 re 1/2))
40.7b
(-.f64 1 1)
41.0b
(exp.f64 (log.f64 (sin.f64 im)))
21.7b
(sin.f64 im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
36.7b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
41.7b
(*.f64 (+.f64 1 re) im)
61.7b
(*.f64 im (*.f64 re (*.f64 re 1/2)))
61.4b
(*.f64 re im)
38.8b
(exp.f64 re)
30.4b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) im)) 2)
20.5b
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) im)) 3)
41.9b
(+.f64 (*.f64 re im) (*.f64 im (+.f64 1 (*.f64 (*.f64 re re) 1/2))))
41.9b
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (*.f64 re re) im)) im))
33.1b
(*.f64 (-.f64 (+.f64 1 (sin.f64 im)) 1) (+.f64 re 1))
21.7b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
21.6b
(*.f64 (sin.f64 im) (+.f64 re 1))
Compiler

Compiled 190 to 138 computations (27.4% saved)

regimes81.0ms (0.9%)

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

5 calls:

28.0ms
(sin.f64 im)
15.0ms
re
15.0ms
im
12.0ms
(*.f64 (exp.f64 re) (sin.f64 im))
4.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 227 to 117 computations (48.5% saved)

regimes296.0ms (3.2%)

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

6 calls:

77.0ms
im
58.0ms
re
55.0ms
(sin.f64 im)
47.0ms
(sin.f64 im)
43.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.5b2re
8.7b7im
0.5b2(exp.f64 re)
0.5b2(exp.f64 re)
9.9b5(sin.f64 im)
9.9b5(sin.f64 im)
Compiler

Compiled 183 to 101 computations (44.8% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
0.9999869370230118
Compiler

Compiled 12 to 9 computations (25% saved)

regimes485.0ms (5.3%)

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

6 calls:

225.0ms
(sin.f64 im)
149.0ms
im
72.0ms
(sin.f64 im)
20.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.6b2re
8.7b7im
0.6b2(exp.f64 re)
0.6b2(exp.f64 re)
9.9b5(sin.f64 im)
9.9b5(sin.f64 im)
Compiler

Compiled 167 to 92 computations (44.9% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
0.9999869370230118
Compiler

Compiled 12 to 9 computations (25% saved)

regimes190.0ms (2.1%)

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

6 calls:

59.0ms
im
54.0ms
(sin.f64 im)
44.0ms
(sin.f64 im)
18.0ms
re
5.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.7b2re
8.7b7im
0.7b2(exp.f64 re)
0.7b2(exp.f64 re)
10.0b5(sin.f64 im)
10.0b5(sin.f64 im)
Compiler

Compiled 142 to 79 computations (44.4% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
0.9999869370230118
Compiler

Compiled 12 to 9 computations (25% saved)

regimes155.0ms (1.7%)

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

5 calls:

52.0ms
im
42.0ms
(sin.f64 im)
38.0ms
(sin.f64 im)
15.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.1b2re
8.8b7im
1.1b2(exp.f64 re)
10.2b5(sin.f64 im)
10.2b5(sin.f64 im)
Compiler

Compiled 112 to 59 computations (47.3% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
0.9999869370230118
Compiler

Compiled 12 to 9 computations (25% saved)

regimes78.0ms (0.8%)

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

4 calls:

45.0ms
re
21.0ms
im
4.0ms
(exp.f64 re)
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
20.5b2re
27.2b3im
20.5b2(exp.f64 re)
20.5b2(exp.f64 re)
Compiler

Compiled 102 to 54 computations (47.1% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9999869370230118
0.9999999999320347
Compiler

Compiled 12 to 9 computations (25% saved)

regimes135.0ms (1.5%)

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

2 calls:

112.0ms
re
21.0ms
im
Results
ErrorSegmentsBranch
20.6b2re
29.4b3im
Compiler

Compiled 92 to 47 computations (48.9% saved)

bsearch65.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
65.0ms
-1.3063062309624921e-5
-6.796525384857148e-11
Compiler

Compiled 12 to 9 computations (25% saved)

regimes156.0ms (1.7%)

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

2 calls:

83.0ms
re
68.0ms
im
Results
ErrorSegmentsBranch
20.6b2re
29.4b3im
Compiler

Compiled 51 to 29 computations (43.1% saved)

bsearch78.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
78.0ms
-1.3063062309624921e-5
-6.796525384857148e-11
Compiler

Compiled 12 to 9 computations (25% saved)

regimes87.0ms (0.9%)

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

2 calls:

61.0ms
im
22.0ms
re
Results
ErrorSegmentsBranch
20.6b2re
29.4b3im
Compiler

Compiled 40 to 22 computations (45% saved)

bsearch97.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
96.0ms
-1.3063062309624921e-5
-6.796525384857148e-11
Compiler

Compiled 12 to 9 computations (25% saved)

regimes56.0ms (0.6%)

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

2 calls:

41.0ms
im
13.0ms
re
Results
ErrorSegmentsBranch
20.8b2re
29.4b3im
Compiler

Compiled 16 to 10 computations (37.5% saved)

bsearch152.0ms (1.7%)

Algorithm
binary-search
Steps
TimeLeftRight
152.0ms
-1.3063062309624921e-5
-6.796525384857148e-11
Compiler

Compiled 12 to 9 computations (25% saved)

regimes16.0ms (0.2%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

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

2 calls:

7.0ms
re
7.0ms
im
Results
ErrorSegmentsBranch
41.5b1re
41.5b1im
Compiler

Compiled 10 to 6 computations (40% saved)

simplify19.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
045200
165200
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re)))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 9007109182748445/9007199254740992) (exp.f64 re) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (*.f64 re re) im)) im)))
(if (<=.f64 re -1927767737956577/147573952589676412928) (-.f64 1 1) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (*.f64 re re) im)) im)))
(if (<=.f64 re -1927767737956577/147573952589676412928) (-.f64 1 1) (*.f64 im (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re)))))
(if (<=.f64 re -1927767737956577/147573952589676412928) (-.f64 1 1) (*.f64 (+.f64 1 re) im))
(if (<=.f64 re -1927767737956577/147573952589676412928) (-.f64 1 1) im)
im
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1))))
(if (<=.f64 (exp.f64 re) 0) 0 (*.f64 (sin.f64 im) (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 re 1/6) 1/2)) (+.f64 re 1))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re)))))
(if (<=.f64 (exp.f64 re) 0) 0 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) 1/2))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 0) 0 (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 0) 0 (sin.f64 im))
(if (<=.f64 (exp.f64 re) 9007109182748445/9007199254740992) (exp.f64 re) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (*.f64 re re) im)) im)))
(if (<=.f64 (exp.f64 re) 9007109182748445/9007199254740992) (exp.f64 re) (+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))))
(if (<=.f64 re -1927767737956577/147573952589676412928) (-.f64 1 1) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (*.f64 re re) im)) im)))
(if (<=.f64 re -1927767737956577/147573952589676412928) 0 (+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))))
(if (<=.f64 re -1927767737956577/147573952589676412928) (-.f64 1 1) (*.f64 im (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re)))))
(if (<=.f64 re -1927767737956577/147573952589676412928) 0 (*.f64 im (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) 1/2))))
(if (<=.f64 re -1927767737956577/147573952589676412928) (-.f64 1 1) (*.f64 (+.f64 1 re) im))
(if (<=.f64 re -1927767737956577/147573952589676412928) 0 (*.f64 im (+.f64 re 1)))
(if (<=.f64 re -1927767737956577/147573952589676412928) (-.f64 1 1) im)
(if (<=.f64 re -1927767737956577/147573952589676412928) 0 im)
im
Compiler

Compiled 158 to 113 computations (28.5% saved)

soundness0.0ms (0%)

end259.0ms (2.8%)

Compiler

Compiled 138 to 78 computations (43.5% saved)

Profiling

Loading profile data...