Details

Time bar (total: 9.5s)

analyze64.0ms (0.7%)

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

Results
1.1s6210×body256valid
796.0ms1368×body1024valid
450.0ms681×body1024infinite
278.0ms675×body512valid
70.0ms309×body512infinite
62.0ms476×body256infinite
2.0msbody2048valid
Bogosity

preprocess19.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 9 to 7 computations (22.2% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 7 to 5 computations (28.6% saved)

localize7.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

rewrite113.0ms (1.2%)

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

simplify99.0ms (1%)

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

Useful iterations: 4 (0.0ms)

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

eval11.0ms (0.1%)

Compiler

Compiled 517 to 258 computations (50.1% saved)

prune12.0ms (0.1%)

Pruning

6 alts after pruning (5 fresh and 1 done)

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

Compiled 85 to 65 computations (23.5% saved)

localize12.0ms (0.1%)

Local error

Found 8 expressions with local error:

NewErrorProgram
0.4b
(pow.f64 (cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 3)
0.4b
(cbrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
0.0b
(sin.f64 im)
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)

series51.0ms (0.5%)

Counts
2 → 40
Calls

12 calls:

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

rewrite178.0ms (1.9%)

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

simplify112.0ms (1.2%)

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

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 im)
0.0b
(sin.f64 im)
Compiler

Compiled 5 to 3 computations (40% saved)

rewrite0.0ms (0%)

Counts
0 → 0

simplify9.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
0 → 0
Calls
Call 1
Inputs
Outputs

localize5.0ms (0%)

Local error

Found 2 expressions with local error:

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

rewrite43.0ms (0.5%)

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

Useful iterations: 0 (0.0ms)

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

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

localize13.0ms (0.1%)

Local error

Found 8 expressions with local error:

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

Compiled 28 to 16 computations (42.9% saved)

series3.0ms (0%)

Counts
3 → 44
Calls

12 calls:

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

rewrite131.0ms (1.4%)

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

Useful iterations: 1 (0.0ms)

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

simplify132.0ms (1.4%)

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

Useful iterations: 3 (0.0ms)

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

localize20.0ms (0.2%)

Local error

Found 8 expressions with local error:

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

Compiled 20 to 6 computations (70% saved)

series109.0ms (1.2%)

Counts
3 → 23
Calls

15 calls:

TimeVariablePointExpression
50.0ms
im
@inf
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
43.0ms
im
@-inf
(exp.f64 (+.f64 re (log.f64 (sin.f64 im))))
6.0ms
re
@0
(+.f64 re (log.f64 (sin.f64 im)))
2.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))))

rewrite99.0ms (1%)

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

simplify82.0ms (0.9%)

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

eval166.0ms (1.8%)

Compiler

Compiled 6515 to 3521 computations (46% saved)

prune115.0ms (1.2%)

Pruning

12 alts after pruning (7 fresh and 5 done)

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

Compiled 155 to 113 computations (27.1% saved)

localize34.0ms (0.4%)

Local error

Found 6 expressions with local error:

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

Compiled 44 to 27 computations (38.6% saved)

series8.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

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

rewrite103.0ms (1.1%)

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

Useful iterations: 2 (0.0ms)

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

simplify151.0ms (1.6%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
040561
1114559
2372507
31790483
43573483
53993483
64688483
74788483
84896483
95034483
107562483
117944483
Stop Event
node limit
Counts
167 → 153
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5))))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
re
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
Outputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im)
(+.f64 im (*.f64 im (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (*.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 3))))
(fma.f64 -1/6 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5)))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 3)) (*.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 5)))))
(fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im (fma.f64 -1/6 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 1/120 (pow.f64 im 5)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5))))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (fma.f64 -1/5040 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 3)) (*.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 5))))))
(fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im (fma.f64 -1/5040 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 5) 1/120)))))
(+.f64 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5))) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 im (*.f64 -1/6 (pow.f64 im 3))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 re 1) (sin.f64 im))
(fma.f64 re (sin.f64 im) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 re (*.f64 re (*.f64 1/2 (sin.f64 im))))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (sin.f64 im)))
(*.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re re) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 re (*.f64 re (*.f64 1/2 (sin.f64 im))))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (sin.f64 im)))
(*.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re re) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
re
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 12 to 4 computations (66.7% saved)

series5.0ms (0.1%)

Counts
1 → 21
Calls

6 calls:

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

rewrite65.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify145.0ms (1.5%)

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

Useful iterations: 1 (0.0ms)

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

localize3.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize8.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

Compiled 16 to 9 computations (43.8% saved)

series4.0ms (0%)

Counts
1 → 16
Calls

6 calls:

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

rewrite51.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
738×pow1_binary64
684×add-log-exp_binary64
684×log1p-expm1-u_binary64
684×expm1-log1p-u_binary64
669×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify107.0ms (1.1%)

Algorithm
egg-herbie
Rules
1175×distribute-rgt-in_binary64
848×distribute-lft-in_binary64
730×fma-def_binary64
426×unswap-sqr_binary64
374×distribute-lft-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
029220
177202
2241182
3910168
43152168
54811168
65256168
75964168
86065168
96205168
106399168
Stop Event
node limit
Counts
42 → 38
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))))))
(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) (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 re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (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 (+.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 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) im) (fma.f64 -1/5040 (pow.f64 im 7) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (+.f64 1 re) (+.f64 (fma.f64 -1/5040 (pow.f64 im 7) im) (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5)))))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.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 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.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 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 1 re) (sin.f64 im))
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 1 re) (sin.f64 im))

localize30.0ms (0.3%)

Local error

Found 8 expressions with local error:

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

Compiled 73 to 49 computations (32.9% saved)

series9.0ms (0.1%)

Counts
4 → 60
Calls

15 calls:

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

rewrite89.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
760×log-prod_binary64
664×fma-def_binary64
306×fma-neg_binary64
275×expm1-udef_binary64
275×log1p-udef_binary64
Iterations

Useful iterations: 2 (0.0ms)

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

simplify108.0ms (1.1%)

Algorithm
egg-herbie
Rules
1317×distribute-rgt-in_binary64
1069×distribute-lft-in_binary64
863×associate-+l+_binary64
444×unswap-sqr_binary64
428×*-commutative_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
053959
1153888
2486752
32350720
43160720
53550720
64364720
74491720
84631720
Stop Event
node limit
Counts
224 → 199
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5)))))
(+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5))))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/2 re)
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(*.f64 1/6 (pow.f64 re 2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(*.f64 1/6 (pow.f64 re 2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
Outputs
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im)
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im)
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) im im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im))
(fma.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 3)) (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im))
(fma.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (*.f64 (pow.f64 im 3) -1/6)))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5)))))
(fma.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 3)) (fma.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im (*.f64 (*.f64 1/120 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2))))) (pow.f64 im 5))))
(fma.f64 -1/6 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (pow.f64 im 3)) (fma.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im (*.f64 (pow.f64 im 5) (+.f64 1/120 (*.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) 1/120)))))
(fma.f64 (pow.f64 im 3) (fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) -1/6 -1/6) (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))) im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5))))))
(fma.f64 -1/5040 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 3)) (fma.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im (*.f64 (*.f64 1/120 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2))))) (pow.f64 im 5)))))
(fma.f64 -1/5040 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (pow.f64 im 3)) (fma.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im (*.f64 (pow.f64 im 5) (+.f64 1/120 (*.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) 1/120))))))
(+.f64 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 (+.f64 im (*.f64 -1/6 (pow.f64 im 3))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (+.f64 im (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))))
(+.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 1 re) (*.f64 (*.f64 re re) 1/2)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 (*.f64 re re) 1/2 re)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(*.f64 (sin.f64 im) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (*.f64 (sin.f64 im) (fma.f64 re 1/6 1/2)) (*.f64 re re))
(*.f64 re (*.f64 re (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im))))
(*.f64 (*.f64 re re) (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im)))
(*.f64 (*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2)) (sin.f64 im))
(+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))))
(fma.f64 re (sin.f64 im) (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))))
(*.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(*.f64 (sin.f64 im) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (*.f64 (sin.f64 im) (fma.f64 re 1/6 1/2)) (*.f64 re re))
(*.f64 re (*.f64 re (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im))))
(*.f64 (*.f64 re re) (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im)))
(*.f64 (*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2)) (sin.f64 im))
(+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))))
(fma.f64 re (sin.f64 im) (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))))
(*.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re) (sin.f64 im) (sin.f64 im))
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/2 re)
(*.f64 re 1/2)
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 re 1/2 (*.f64 (*.f64 re re) 1/6))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 re 1/2 (*.f64 (*.f64 re re) 1/6))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 re 1/2 (*.f64 (*.f64 re re) 1/6))
(*.f64 re (fma.f64 re 1/6 1/2))
(*.f64 1/6 (pow.f64 re 2))
(*.f64 (*.f64 re re) 1/6)
(*.f64 re (*.f64 re 1/6))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 re 1/2 (*.f64 (*.f64 re re) 1/6))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 re 1/2 (*.f64 (*.f64 re re) 1/6))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 re 1/2 (*.f64 (*.f64 re re) 1/6))
(*.f64 re (fma.f64 re 1/6 1/2))
(*.f64 1/6 (pow.f64 re 2))
(*.f64 (*.f64 re re) 1/6)
(*.f64 re (*.f64 re 1/6))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 re 1/2 (*.f64 (*.f64 re re) 1/6))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 re 1/2 (*.f64 (*.f64 re re) 1/6))
(*.f64 re (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/6 (pow.f64 re 2)) (*.f64 1/2 re))
(fma.f64 1/6 (*.f64 re re) (*.f64 re 1/2))
(fma.f64 re 1/2 (*.f64 (*.f64 re re) 1/6))
(*.f64 re (fma.f64 re 1/6 1/2))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 (*.f64 re re) 1/2)
(*.f64 re (*.f64 re 1/2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 (*.f64 re re) (fma.f64 re 1/6 1/2))

eval173.0ms (1.8%)

Compiler

Compiled 8434 to 4988 computations (40.9% saved)

prune79.0ms (0.8%)

Pruning

16 alts after pruning (6 fresh and 10 done)

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

Compiled 178 to 131 computations (26.4% saved)

localize8.0ms (0.1%)

Local error

Found 6 expressions with local error:

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

Compiled 14 to 7 computations (50% saved)

series9.0ms (0.1%)

Counts
2 → 16
Calls

6 calls:

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

rewrite63.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify192.0ms (2%)

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

Useful iterations: 1 (0.0ms)

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

localize7.0ms (0.1%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series3.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite51.0ms (0.5%)

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

Useful iterations: 0 (0.0ms)

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

simplify8.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 41 to 26 computations (36.6% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite63.0ms (0.7%)

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

Useful iterations: 2 (0.0ms)

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

simplify159.0ms (1.7%)

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

Useful iterations: 2 (0.0ms)

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

localize19.0ms (0.2%)

Local error

Found 8 expressions with local error:

NewErrorProgram
2.8b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re))) 1)
0.3b
(+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re)))
0.1b
(*.f64 (sin.f64 im) (+.f64 1 re))
0.0b
(sin.f64 im)
0.0b
(sin.f64 im)
0.1b
(*.f64 (sin.f64 im) (+.f64 1 re))
0.3b
(+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re)))
2.8b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re))) 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 1 re))) 1)
0.0ms
im
@0
(+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re)))
0.0ms
im
@inf
(+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re)))
0.0ms
re
@inf
(+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re)))
0.0ms
re
@0
(+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re)))

rewrite73.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
779×prod-diff_binary64
609×fma-def_binary64
420×log-prod_binary64
260×fma-neg_binary64
242×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0927
120619
2305219
Stop Event
node limit
Counts
2 → 190
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re))) 1)
(+.f64 1 (*.f64 (sin.f64 im) (+.f64 1 re)))
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 (sin.f64 im) (*.f64 (*.f64 (sin.f64 im) re) 1))))) (#(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 (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 (sin.f64 im) 3) (pow.f64 (*.f64 (sin.f64 im) re) 3)) (+.f64 (pow.f64 (sin.f64 im) 2) (-.f64 (pow.f64 (*.f64 (sin.f64 im) re) 2) (*.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))))))) (#(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 (sin.f64 im) 2) (pow.f64 (*.f64 (sin.f64 im) re) 2)) (-.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 re 3)) (sin.f64 im)) (fma.f64 re (-.f64 re 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 re re)) (sin.f64 im)) (-.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (+.f64 1 (pow.f64 re 3))) (fma.f64 re (-.f64 re 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (-.f64 1 (*.f64 re re))) (-.f64 1 re))))) (#(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 (+.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)) (exp.f64 (sin.f64 im))))))) (#(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 (sin.f64 im) (*.f64 (*.f64 (sin.f64 im) re) 1))))) (#(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) 1 (*.f64 (*.f64 (sin.f64 im) re) 1))))) (#(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 (cbrt.f64 (sin.f64 im)) (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (*.f64 (*.f64 (sin.f64 im) re) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (cbrt.f64 (sin.f64 im)) (*.f64 (sin.f64 im) re))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (cbrt.f64 (sin.f64 im)) (*.f64 (*.f64 (sin.f64 im) 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) (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)) 1) (*.f64 (*.f64 (sin.f64 im) 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)) (+.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)) (sqrt.f64 (sin.f64 im)) (*.f64 (*.f64 (sin.f64 im) re) 1))))) (#(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)) 1) (*.f64 (*.f64 (sin.f64 im) re) 1))))) (#(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 (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 (+.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re))) 1) (fma.f64 (sqrt.f64 (+.f64 1 re)) (sqrt.f64 (sin.f64 im)) -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 (sin.f64 im) (fma.f64 (sin.f64 im) 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 (sin.f64 im) 1 (fma.f64 (sin.f64 im) re 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 (+.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 (+.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 (cbrt.f64 (sin.f64 im)) (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (fma.f64 (sin.f64 im) re 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (cbrt.f64 (sin.f64 im)) (fma.f64 (sin.f64 im) re 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 im)) 2) (*.f64 (cbrt.f64 (sin.f64 im)) 1) (fma.f64 (sin.f64 im) 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)) (+.f64 1 re)) 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)) (sqrt.f64 (sin.f64 im)) (fma.f64 (sin.f64 im) re 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) 1) (fma.f64 (sin.f64 im) re 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 (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 (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 (sin.f64 im) (pow.f64 (cbrt.f64 (+.f64 1 re)) 2)) (cbrt.f64 (+.f64 1 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 im) (sqrt.f64 (+.f64 1 re))) (sqrt.f64 (+.f64 1 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (+.f64 1 re) (pow.f64 (cbrt.f64 (sin.f64 im)) 2)) (cbrt.f64 (sin.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (+.f64 1 re) (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im)) 1)))))

simplify132.0ms (1.4%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
038532
1108530
2301500
31092478
43742478
55459478
65921478
76640478
86743478
96883478
107077478
Stop Event
node limit
Counts
238 → 213
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)

eval293.0ms (3.1%)

Compiler

Compiled 7256 to 4504 computations (37.9% saved)

prune94.0ms (1%)

Pruning

20 alts after pruning (5 fresh and 15 done)

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

Compiled 176 to 128 computations (27.3% saved)

regimes104.0ms (1.1%)

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

5 calls:

62.0ms
im
12.0ms
(sin.f64 im)
11.0ms
re
9.0ms
(*.f64 (exp.f64 re) (sin.f64 im))
3.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.0b1re
0.0b1im
0.0b1(*.f64 (exp.f64 re) (sin.f64 im))
0.0b1(exp.f64 re)
0.0b1(sin.f64 im)
Compiler

Compiled 167 to 95 computations (43.1% saved)

regimes194.0ms (2.1%)

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

6 calls:

86.0ms
im
52.0ms
(sin.f64 im)
23.0ms
(sin.f64 im)
17.0ms
re
7.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.0b2re
8.3b7im
1.0b2(exp.f64 re)
1.0b2(exp.f64 re)
10.1b3(sin.f64 im)
10.1b3(sin.f64 im)
Compiler

Compiled 135 to 81 computations (40% saved)

bsearch0.0ms (0%)

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

Compiled 12 to 9 computations (25% saved)

regimes194.0ms (2%)

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

6 calls:

75.0ms
im
52.0ms
re
30.0ms
(sin.f64 im)
23.0ms
(sin.f64 im)
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.1b2re
8.3b7im
1.1b2(exp.f64 re)
1.1b2(exp.f64 re)
10.1b3(sin.f64 im)
10.1b3(sin.f64 im)
Compiler

Compiled 119 to 71 computations (40.3% saved)

bsearch0.0ms (0%)

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

Compiled 12 to 9 computations (25% saved)

regimes389.0ms (4.1%)

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

6 calls:

242.0ms
im
70.0ms
(sin.f64 im)
31.0ms
re
22.0ms
(sin.f64 im)
11.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.3b2re
8.4b7im
1.3b2(exp.f64 re)
1.3b2(exp.f64 re)
10.2b3(sin.f64 im)
10.2b3(sin.f64 im)
Compiler

Compiled 107 to 64 computations (40.2% saved)

bsearch0.0ms (0%)

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

Compiled 12 to 9 computations (25% saved)

regimes282.0ms (3%)

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

5 calls:

109.0ms
(sin.f64 im)
85.0ms
(sin.f64 im)
60.0ms
im
14.0ms
re
8.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.8b2re
8.7b7im
1.8b2(exp.f64 re)
10.4b3(sin.f64 im)
10.4b3(sin.f64 im)
Compiler

Compiled 87 to 51 computations (41.4% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9999931899034182
1.0
Compiler

Compiled 12 to 9 computations (25% saved)

regimes211.0ms (2.2%)

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

4 calls:

136.0ms
im
30.0ms
(exp.f64 re)
26.0ms
(sin.f64 im)
16.0ms
re
Results
ErrorSegmentsBranch
2.0b2re
19.0b7im
2.0b2(exp.f64 re)
21.1b3(sin.f64 im)
Compiler

Compiled 79 to 47 computations (40.5% saved)

bsearch0.0ms (0%)

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

Compiled 12 to 9 computations (25% saved)

regimes73.0ms (0.8%)

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

4 calls:

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

Compiled 77 to 46 computations (40.3% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9935873489276724
0.9999931899034182
Compiler

Compiled 12 to 9 computations (25% saved)

regimes131.0ms (1.4%)

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

2 calls:

107.0ms
re
21.0ms
im
Results
ErrorSegmentsBranch
19.6b2re
29.7b3im
Compiler

Compiled 67 to 39 computations (41.8% saved)

bsearch49.0ms (0.5%)

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

Compiled 12 to 9 computations (25% saved)

regimes111.0ms (1.2%)

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

2 calls:

43.0ms
im
11.0ms
re
Results
ErrorSegmentsBranch
19.6b2re
29.7b3im
Compiler

Compiled 54 to 31 computations (42.6% saved)

bsearch74.0ms (0.8%)

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

Compiled 12 to 9 computations (25% saved)

regimes31.0ms (0.3%)

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

2 calls:

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

Compiled 43 to 24 computations (44.2% saved)

bsearch107.0ms (1.1%)

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

Compiled 12 to 9 computations (25% saved)

regimes76.0ms (0.8%)

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

2 calls:

65.0ms
im
9.0ms
re
Results
ErrorSegmentsBranch
19.8b2re
29.7b3im
Compiler

Compiled 32 to 17 computations (46.9% saved)

bsearch47.0ms (0.5%)

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

Compiled 12 to 9 computations (25% saved)

regimes36.0ms (0.4%)

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

2 calls:

19.0ms
re
16.0ms
im
Results
ErrorSegmentsBranch
19.8b2re
29.7b3im
Compiler

Compiled 20 to 13 computations (35% saved)

bsearch49.0ms (0.5%)

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

Compiled 12 to 9 computations (25% saved)

regimes22.0ms (0.2%)

Accuracy

Total -42.1b remaining (-211.9%)

Threshold costs -42.1b (-211.9%)

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

2 calls:

14.0ms
im
7.0ms
re
Results
ErrorSegmentsBranch
19.9b2re
29.7b3im
Compiler

Compiled 15 to 10 computations (33.3% saved)

bsearch64.0ms (0.7%)

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

Compiled 12 to 9 computations (25% saved)

simplify37.0ms (0.4%)

Algorithm
egg-herbie
Rules
17×*-commutative_binary64
12×+-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 211 to 143 computations (32.2% saved)

soundness0.0ms (0%)

end282.0ms (3%)

Compiler

Compiled 185 to 103 computations (44.3% saved)

Profiling

Loading profile data...