Details

Time bar (total: 7.4s)

analyze112.0ms (1.5%)

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

Compiled 8 to 6 computations (25% saved)

sample2.1s (27.8%)

Results
817.0ms6130×body256valid
612.0ms1424×body1024valid
233.0ms668×body1024infinite
175.0ms699×body512valid
97.0ms366×body512infinite
96.0ms496×body256infinite
3.0msbody2048valid
1.0msbody2048infinite
Bogosity

preprocess16.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 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series5.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite39.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
530×pow1_binary64
504×add-sqr-sqrt_binary64
483×add-log-exp_binary64
483×log1p-expm1-u_binary64
483×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify94.0ms (1.3%)

Algorithm
egg-herbie
Rules
828×distribute-lft-out_binary64
812×fma-def_binary64
569×unswap-sqr_binary64
547×distribute-rgt-in_binary64
403×associate-*l*_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
044296
1122294
2312274
3917250
42885249
53749249
65943249
77045249
87825249
Stop Event
node limit
Counts
35 → 27
Calls
Call 1
Inputs
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) im)
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (*.f64 (exp.f64 re) im))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (*.f64 (exp.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7))) (*.f64 (exp.f64 re) im))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
Outputs
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (+.f64 re 1) (sin.f64 im))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 re 1))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)))))
(+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (*.f64 (*.f64 re re) (*.f64 (sin.f64 im) 1/2)))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 re (*.f64 re 1/2) 1)))
(fma.f64 (sin.f64 im) (fma.f64 re (*.f64 re 1/2) re) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re))))))
(+.f64 (*.f64 (+.f64 re 1) (sin.f64 im)) (fma.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 (sin.f64 im) (*.f64 (pow.f64 re 3) 1/6))))
(fma.f64 (+.f64 re 1) (sin.f64 im) (*.f64 (sin.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (*.f64 1/6 (pow.f64 re 3)))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
(*.f64 (sin.f64 im) (+.f64 (fma.f64 re (*.f64 re 1/2) 1) (fma.f64 1/6 (pow.f64 re 3) re)))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (exp.f64 re) im)
(*.f64 im (exp.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (*.f64 (exp.f64 re) im))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (*.f64 im (exp.f64 re)))
(fma.f64 im (exp.f64 re) (*.f64 (pow.f64 im 3) (*.f64 (exp.f64 re) -1/6)))
(*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (exp.f64 re) (fma.f64 -1/6 (pow.f64 im 3) im))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (*.f64 (exp.f64 re) im)))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (*.f64 im (exp.f64 re))))
(fma.f64 (exp.f64 re) (*.f64 1/120 (pow.f64 im 5)) (*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (exp.f64 re) (+.f64 (fma.f64 1/120 (pow.f64 im 5) im) (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (fma.f64 1/120 (pow.f64 im 5) im)))
(*.f64 (exp.f64 re) (+.f64 im (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7))) (*.f64 (exp.f64 re) im))))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (fma.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7)) (*.f64 im (exp.f64 re)))))
(+.f64 (*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (exp.f64 re) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (exp.f64 re) (+.f64 (fma.f64 -1/6 (pow.f64 im 3) im) (fma.f64 -1/5040 (pow.f64 im 7) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (exp.f64 re) (+.f64 (fma.f64 -1/6 (pow.f64 im 3) (*.f64 1/120 (pow.f64 im 5))) (fma.f64 -1/5040 (pow.f64 im 7) im)))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))

eval7.0ms (0.1%)

Compiler

Compiled 292 to 144 computations (50.7% saved)

prune10.0ms (0.1%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New20727
Fresh000
Picked011
Done000
Total20828
Error
0b
Counts
28 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
11.7b
(cbrt.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 3))
21.3b
(+.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))))))
22.2b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
21.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
21.1b
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
21.2b
(sin.f64 im)
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
21.1b
(*.f64 (exp.f64 re) im)
Compiler

Compiled 155 to 107 computations (31% saved)

localize13.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 29 to 11 computations (62.1% saved)

series9.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite55.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
713×pow1_binary64
664×add-log-exp_binary64
664×log1p-expm1-u_binary64
664×expm1-log1p-u_binary64
645×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify60.0ms (0.8%)

Algorithm
egg-herbie
Rules
896×fma-def_binary64
805×distribute-rgt-in_binary64
796×distribute-lft-in_binary64
566×associate-*l*_binary64
528×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0108871
1320826
21095734
35826725
Stop Event
node limit
Counts
102 → 84
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))
(pow.f64 (sin.f64 im) 3)
(+.f64 (pow.f64 (sin.f64 im) 3) (*.f64 (+.f64 (*.f64 2 (pow.f64 (sin.f64 im) 3)) (pow.f64 (sin.f64 im) 3)) re))
(+.f64 (pow.f64 (sin.f64 im) 3) (+.f64 (*.f64 (+.f64 (*.f64 2 (pow.f64 (sin.f64 im) 3)) (pow.f64 (sin.f64 im) 3)) re) (*.f64 (+.f64 (*.f64 4 (pow.f64 (sin.f64 im) 3)) (*.f64 1/2 (pow.f64 (sin.f64 im) 3))) (pow.f64 re 2))))
(+.f64 (*.f64 (+.f64 (pow.f64 (sin.f64 im) 3) (+.f64 (*.f64 2 (pow.f64 (sin.f64 im) 3)) (+.f64 (*.f64 (sin.f64 im) (+.f64 (pow.f64 (sin.f64 im) 2) (*.f64 1/3 (pow.f64 (sin.f64 im) 2)))) (*.f64 1/6 (pow.f64 (sin.f64 im) 3))))) (pow.f64 re 3)) (+.f64 (pow.f64 (sin.f64 im) 3) (+.f64 (*.f64 (+.f64 (*.f64 2 (pow.f64 (sin.f64 im) 3)) (pow.f64 (sin.f64 im) 3)) re) (*.f64 (+.f64 (*.f64 4 (pow.f64 (sin.f64 im) 3)) (*.f64 1/2 (pow.f64 (sin.f64 im) 3))) (pow.f64 re 2)))))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (exp.f64 re) 3) (pow.f64 im 3))
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (pow.f64 (exp.f64 re) 3)) (*.f64 -1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 5)) (*.f64 (pow.f64 (exp.f64 re) 3) (pow.f64 im 3)))
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (pow.f64 (exp.f64 re) 3)) (*.f64 -1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 5)) (+.f64 (*.f64 (+.f64 (*.f64 1/120 (pow.f64 (exp.f64 re) 3)) (+.f64 (*.f64 1/18 (pow.f64 (exp.f64 re) 3)) (*.f64 (+.f64 (*.f64 1/36 (pow.f64 (exp.f64 re) 2)) (*.f64 1/60 (pow.f64 (exp.f64 re) 2))) (exp.f64 re)))) (pow.f64 im 7)) (*.f64 (pow.f64 (exp.f64 re) 3) (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (pow.f64 (exp.f64 re) 3)) (*.f64 -1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 5)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 (exp.f64 re) 2)) (*.f64 1/60 (pow.f64 (exp.f64 re) 2))) (exp.f64 re))) (+.f64 (*.f64 (+.f64 (*.f64 -1/360 (pow.f64 (exp.f64 re) 2)) (*.f64 -1/2520 (pow.f64 (exp.f64 re) 2))) (exp.f64 re)) (+.f64 (*.f64 -1/360 (pow.f64 (exp.f64 re) 3)) (*.f64 -1/5040 (pow.f64 (exp.f64 re) 3))))) (pow.f64 im 9)) (+.f64 (*.f64 (+.f64 (*.f64 1/120 (pow.f64 (exp.f64 re) 3)) (+.f64 (*.f64 1/18 (pow.f64 (exp.f64 re) 3)) (*.f64 (+.f64 (*.f64 1/36 (pow.f64 (exp.f64 re) 2)) (*.f64 1/60 (pow.f64 (exp.f64 re) 2))) (exp.f64 re)))) (pow.f64 im 7)) (*.f64 (pow.f64 (exp.f64 re) 3) (pow.f64 im 3)))))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
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 (*.f64 1/2 (sin.f64 im)) (*.f64 re re))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 (sin.f64 im) (*.f64 (*.f64 re re) 1/2))))
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2))))
(+.f64 (sin.f64 im) (+.f64 (*.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 (*.f64 1/2 (sin.f64 im)) (*.f64 re re)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (fma.f64 1/2 (*.f64 (sin.f64 im) (*.f64 re re)) (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))))))
(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) (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 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))))
(*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (*.f64 (exp.f64 re) im)))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (*.f64 im (exp.f64 re))))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 im (exp.f64 re) (*.f64 (exp.f64 re) (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 im (exp.f64 re) (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7))) (*.f64 (exp.f64 re) im))))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (fma.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7)) (*.f64 im (exp.f64 re)))))
(fma.f64 -1/6 (*.f64 (exp.f64 re) (pow.f64 im 3)) (fma.f64 1/120 (*.f64 (exp.f64 re) (pow.f64 im 5)) (fma.f64 im (exp.f64 re) (*.f64 -1/5040 (*.f64 (exp.f64 re) (pow.f64 im 7))))))
(+.f64 (*.f64 (exp.f64 re) (+.f64 im (*.f64 -1/5040 (pow.f64 im 7)))) (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(*.f64 (sin.f64 im) (exp.f64 re))
(pow.f64 (sin.f64 im) 3)
(+.f64 (pow.f64 (sin.f64 im) 3) (*.f64 (+.f64 (*.f64 2 (pow.f64 (sin.f64 im) 3)) (pow.f64 (sin.f64 im) 3)) re))
(+.f64 (pow.f64 (sin.f64 im) 3) (*.f64 re (*.f64 3 (pow.f64 (sin.f64 im) 3))))
(fma.f64 re (*.f64 3 (pow.f64 (sin.f64 im) 3)) (pow.f64 (sin.f64 im) 3))
(*.f64 (+.f64 (*.f64 re 3) 1) (pow.f64 (sin.f64 im) 3))
(+.f64 (pow.f64 (sin.f64 im) 3) (+.f64 (*.f64 (+.f64 (*.f64 2 (pow.f64 (sin.f64 im) 3)) (pow.f64 (sin.f64 im) 3)) re) (*.f64 (+.f64 (*.f64 4 (pow.f64 (sin.f64 im) 3)) (*.f64 1/2 (pow.f64 (sin.f64 im) 3))) (pow.f64 re 2))))
(+.f64 (pow.f64 (sin.f64 im) 3) (fma.f64 (*.f64 3 (pow.f64 (sin.f64 im) 3)) re (*.f64 (*.f64 re re) (*.f64 (pow.f64 (sin.f64 im) 3) 9/2))))
(+.f64 (pow.f64 (sin.f64 im) 3) (fma.f64 re (*.f64 3 (pow.f64 (sin.f64 im) 3)) (*.f64 (*.f64 re re) (*.f64 (pow.f64 (sin.f64 im) 3) 9/2))))
(fma.f64 re (*.f64 re (*.f64 (pow.f64 (sin.f64 im) 3) 9/2)) (*.f64 (+.f64 (*.f64 re 3) 1) (pow.f64 (sin.f64 im) 3)))
(fma.f64 (*.f64 re 3) (pow.f64 (sin.f64 im) 3) (*.f64 (+.f64 (*.f64 (*.f64 re re) 9/2) 1) (pow.f64 (sin.f64 im) 3)))
(+.f64 (*.f64 (+.f64 (pow.f64 (sin.f64 im) 3) (+.f64 (*.f64 2 (pow.f64 (sin.f64 im) 3)) (+.f64 (*.f64 (sin.f64 im) (+.f64 (pow.f64 (sin.f64 im) 2) (*.f64 1/3 (pow.f64 (sin.f64 im) 2)))) (*.f64 1/6 (pow.f64 (sin.f64 im) 3))))) (pow.f64 re 3)) (+.f64 (pow.f64 (sin.f64 im) 3) (+.f64 (*.f64 (+.f64 (*.f64 2 (pow.f64 (sin.f64 im) 3)) (pow.f64 (sin.f64 im) 3)) re) (*.f64 (+.f64 (*.f64 4 (pow.f64 (sin.f64 im) 3)) (*.f64 1/2 (pow.f64 (sin.f64 im) 3))) (pow.f64 re 2)))))
(fma.f64 (+.f64 (*.f64 3 (pow.f64 (sin.f64 im) 3)) (fma.f64 (sin.f64 im) (*.f64 4/3 (pow.f64 (sin.f64 im) 2)) (*.f64 1/6 (pow.f64 (sin.f64 im) 3)))) (pow.f64 re 3) (+.f64 (pow.f64 (sin.f64 im) 3) (fma.f64 (*.f64 3 (pow.f64 (sin.f64 im) 3)) re (*.f64 (*.f64 re re) (*.f64 (pow.f64 (sin.f64 im) 3) 9/2)))))
(+.f64 (fma.f64 re (*.f64 3 (pow.f64 (sin.f64 im) 3)) (*.f64 (*.f64 re re) (*.f64 (pow.f64 (sin.f64 im) 3) 9/2))) (fma.f64 (pow.f64 re 3) (fma.f64 3 (pow.f64 (sin.f64 im) 3) (fma.f64 1/6 (pow.f64 (sin.f64 im) 3) (*.f64 4/3 (pow.f64 (sin.f64 im) 3)))) (pow.f64 (sin.f64 im) 3)))
(fma.f64 (pow.f64 re 3) (fma.f64 3 (pow.f64 (sin.f64 im) 3) (*.f64 (pow.f64 (sin.f64 im) 3) 3/2)) (fma.f64 re (*.f64 re (*.f64 (pow.f64 (sin.f64 im) 3) 9/2)) (*.f64 (+.f64 (*.f64 re 3) 1) (pow.f64 (sin.f64 im) 3))))
(fma.f64 (pow.f64 re 3) (*.f64 (pow.f64 (sin.f64 im) 3) 9/2) (fma.f64 (*.f64 re 3) (pow.f64 (sin.f64 im) 3) (*.f64 (+.f64 (*.f64 (*.f64 re re) 9/2) 1) (pow.f64 (sin.f64 im) 3))))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (exp.f64 re) 3) (pow.f64 im 3))
(*.f64 (pow.f64 im 3) (pow.f64 (exp.f64 re) 3))
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (pow.f64 (exp.f64 re) 3)) (*.f64 -1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 5)) (*.f64 (pow.f64 (exp.f64 re) 3) (pow.f64 im 3)))
(fma.f64 (*.f64 (pow.f64 (exp.f64 re) 3) -1/2) (pow.f64 im 5) (*.f64 (pow.f64 im 3) (pow.f64 (exp.f64 re) 3)))
(fma.f64 (pow.f64 im 3) (pow.f64 (exp.f64 re) 3) (*.f64 (pow.f64 (exp.f64 re) 3) (*.f64 -1/2 (pow.f64 im 5))))
(*.f64 (pow.f64 (exp.f64 re) 3) (+.f64 (pow.f64 im 3) (*.f64 (pow.f64 im 5) -1/2)))
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (pow.f64 (exp.f64 re) 3)) (*.f64 -1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 5)) (+.f64 (*.f64 (+.f64 (*.f64 1/120 (pow.f64 (exp.f64 re) 3)) (+.f64 (*.f64 1/18 (pow.f64 (exp.f64 re) 3)) (*.f64 (+.f64 (*.f64 1/36 (pow.f64 (exp.f64 re) 2)) (*.f64 1/60 (pow.f64 (exp.f64 re) 2))) (exp.f64 re)))) (pow.f64 im 7)) (*.f64 (pow.f64 (exp.f64 re) 3) (pow.f64 im 3))))
(fma.f64 (*.f64 (pow.f64 (exp.f64 re) 3) -1/2) (pow.f64 im 5) (fma.f64 (fma.f64 1/120 (pow.f64 (exp.f64 re) 3) (fma.f64 1/18 (pow.f64 (exp.f64 re) 3) (*.f64 (exp.f64 re) (*.f64 (pow.f64 (exp.f64 re) 2) 2/45)))) (pow.f64 im 7) (*.f64 (pow.f64 im 3) (pow.f64 (exp.f64 re) 3))))
(fma.f64 (pow.f64 im 5) (*.f64 (pow.f64 (exp.f64 re) 3) -1/2) (fma.f64 (pow.f64 im 3) (pow.f64 (exp.f64 re) 3) (*.f64 (pow.f64 im 7) (+.f64 (*.f64 (pow.f64 (exp.f64 re) 3) 2/45) (*.f64 (pow.f64 (exp.f64 re) 3) 23/360)))))
(fma.f64 (pow.f64 im 7) (*.f64 (pow.f64 (exp.f64 re) 3) 13/120) (*.f64 (pow.f64 (exp.f64 re) 3) (+.f64 (pow.f64 im 3) (*.f64 (pow.f64 im 5) -1/2))))
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (pow.f64 (exp.f64 re) 3)) (*.f64 -1/6 (pow.f64 (exp.f64 re) 3))) (pow.f64 im 5)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 (exp.f64 re) 2)) (*.f64 1/60 (pow.f64 (exp.f64 re) 2))) (exp.f64 re))) (+.f64 (*.f64 (+.f64 (*.f64 -1/360 (pow.f64 (exp.f64 re) 2)) (*.f64 -1/2520 (pow.f64 (exp.f64 re) 2))) (exp.f64 re)) (+.f64 (*.f64 -1/360 (pow.f64 (exp.f64 re) 3)) (*.f64 -1/5040 (pow.f64 (exp.f64 re) 3))))) (pow.f64 im 9)) (+.f64 (*.f64 (+.f64 (*.f64 1/120 (pow.f64 (exp.f64 re) 3)) (+.f64 (*.f64 1/18 (pow.f64 (exp.f64 re) 3)) (*.f64 (+.f64 (*.f64 1/36 (pow.f64 (exp.f64 re) 2)) (*.f64 1/60 (pow.f64 (exp.f64 re) 2))) (exp.f64 re)))) (pow.f64 im 7)) (*.f64 (pow.f64 (exp.f64 re) 3) (pow.f64 im 3)))))
(fma.f64 (*.f64 (pow.f64 (exp.f64 re) 3) -1/2) (pow.f64 im 5) (fma.f64 (fma.f64 -1/6 (*.f64 (exp.f64 re) (*.f64 (pow.f64 (exp.f64 re) 2) 2/45)) (fma.f64 (*.f64 (pow.f64 (exp.f64 re) 2) -1/315) (exp.f64 re) (*.f64 (pow.f64 (exp.f64 re) 3) -1/336))) (pow.f64 im 9) (fma.f64 (fma.f64 1/120 (pow.f64 (exp.f64 re) 3) (fma.f64 1/18 (pow.f64 (exp.f64 re) 3) (*.f64 (exp.f64 re) (*.f64 (pow.f64 (exp.f64 re) 2) 2/45)))) (pow.f64 im 7) (*.f64 (pow.f64 im 3) (pow.f64 (exp.f64 re) 3)))))
(fma.f64 (pow.f64 im 5) (*.f64 (pow.f64 (exp.f64 re) 3) -1/2) (fma.f64 (fma.f64 -1/6 (*.f64 (pow.f64 (exp.f64 re) 3) 2/45) (fma.f64 (pow.f64 (exp.f64 re) 3) -1/336 (*.f64 (pow.f64 (exp.f64 re) 3) -1/315))) (pow.f64 im 9) (fma.f64 (pow.f64 im 3) (pow.f64 (exp.f64 re) 3) (*.f64 (pow.f64 im 7) (+.f64 (*.f64 (pow.f64 (exp.f64 re) 3) 2/45) (*.f64 (pow.f64 (exp.f64 re) 3) 23/360))))))
(fma.f64 (+.f64 (*.f64 (pow.f64 (exp.f64 re) 3) -1/135) (*.f64 (pow.f64 (exp.f64 re) 3) -31/5040)) (pow.f64 im 9) (fma.f64 (pow.f64 im 7) (*.f64 (pow.f64 (exp.f64 re) 3) 13/120) (*.f64 (pow.f64 (exp.f64 re) 3) (+.f64 (pow.f64 im 3) (*.f64 (pow.f64 im 5) -1/2)))))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))
(*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (exp.f64 re) 3))

localize5.0ms (0.1%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 10 to 4 computations (60% saved)

series4.0ms (0.1%)

Counts
1 → 4
Calls

6 calls:

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

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

simplify120.0ms (1.6%)

Algorithm
egg-herbie
Rules
709×distribute-lft-out_binary64
619×*-commutative_binary64
531×associate-+l+_binary64
442×sqr-pow_binary64
431×fma-def_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01846
15346
213642
340437
4149937
5239837
6402337
7415537
8440037
9475637
10550237
11634637
12710737
13763837
Stop Event
node limit
Counts
18 → 21
Calls
Call 1
Inputs
im
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)))
Outputs
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(fma.f64 im re (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (*.f64 re (fma.f64 re 1/2 1)) im)
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im)))
(fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (fma.f64 im re (fma.f64 1/2 (*.f64 im (*.f64 re re)) im)))
(fma.f64 im (fma.f64 1/6 (pow.f64 re 3) re) (*.f64 im (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 1/6 (pow.f64 re 3) (*.f64 re (fma.f64 re 1/2 1))) im)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 16 to 9 computations (43.8% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite50.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify108.0ms (1.5%)

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

Useful iterations: 3 (0.0ms)

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

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 17 to 5 computations (70.6% saved)

series5.0ms (0.1%)

Counts
2 → 11
Calls

12 calls:

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

rewrite56.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
718×pow1_binary64
666×add-log-exp_binary64
666×log1p-expm1-u_binary64
666×expm1-log1p-u_binary64
651×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify142.0ms (1.9%)

Algorithm
egg-herbie
Rules
686×*-commutative_binary64
636×+-commutative_binary64
482×distribute-lft-out_binary64
458×associate-+l+_binary64
453×distribute-rgt-in_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
045185
1119185
2302174
31131171
43202165
54344165
65073165
75869165
86030165
96218165
106789165
117243165
Stop Event
node limit
Counts
60 → 67
Calls
Call 1
Inputs
(*.f64 re im)
(+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (*.f64 re im))
(+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 re (pow.f64 im 5))) (*.f64 re im)))
(+.f64 (*.f64 -1/5040 (*.f64 re (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 re (pow.f64 im 5))) (*.f64 re im))))
(*.f64 (+.f64 1 re) im)
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 re) 1/6) (pow.f64 im 3)) (*.f64 (+.f64 1 re) im))
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 re) 1/6) (pow.f64 im 3)) (+.f64 (*.f64 (+.f64 (*.f64 1/120 re) 1/120) (pow.f64 im 5)) (*.f64 (+.f64 1 re) im)))
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 re) 1/6) (pow.f64 im 3)) (+.f64 (*.f64 (+.f64 (*.f64 1/120 re) 1/120) (pow.f64 im 5)) (+.f64 (*.f64 (-.f64 (*.f64 -1/5040 re) 1/5040) (pow.f64 im 7)) (*.f64 (+.f64 1 re) im))))
(sin.f64 im)
(*.f64 (sin.f64 im) re)
(*.f64 (sin.f64 im) re)
Outputs
(*.f64 re im)
(+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (*.f64 re im))
(fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (*.f64 re im))
(fma.f64 re im (*.f64 re (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 re (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 re (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 re (pow.f64 im 5))) (*.f64 re im)))
(fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (fma.f64 1/120 (*.f64 re (pow.f64 im 5)) (*.f64 re im)))
(fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (fma.f64 re im (*.f64 (pow.f64 im 5) (*.f64 re 1/120))))
(fma.f64 (pow.f64 im 5) (*.f64 re 1/120) (*.f64 re (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(*.f64 re (+.f64 im (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 re (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 -1/5040 (*.f64 re (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (+.f64 (*.f64 1/120 (*.f64 re (pow.f64 im 5))) (*.f64 re im))))
(fma.f64 -1/5040 (*.f64 re (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (fma.f64 1/120 (*.f64 re (pow.f64 im 5)) (*.f64 re im))))
(fma.f64 -1/5040 (*.f64 re (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (fma.f64 re im (*.f64 (pow.f64 im 5) (*.f64 re 1/120)))))
(fma.f64 re (*.f64 -1/5040 (pow.f64 im 7)) (fma.f64 (pow.f64 im 5) (*.f64 re 1/120) (*.f64 re (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im))))
(*.f64 re (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 re (+.f64 (+.f64 im (*.f64 -1/6 (pow.f64 im 3))) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 re (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))))
(*.f64 (+.f64 1 re) im)
(*.f64 im (+.f64 re 1))
(fma.f64 re im im)
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 re) 1/6) (pow.f64 im 3)) (*.f64 (+.f64 1 re) im))
(fma.f64 (fma.f64 -1/6 re -1/6) (pow.f64 im 3) (*.f64 im (+.f64 re 1)))
(fma.f64 im (+.f64 re 1) (*.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6)))
(fma.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6) (fma.f64 re im im))
(*.f64 (+.f64 re 1) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 re) 1/6) (pow.f64 im 3)) (+.f64 (*.f64 (+.f64 (*.f64 1/120 re) 1/120) (pow.f64 im 5)) (*.f64 (+.f64 1 re) im)))
(fma.f64 (fma.f64 -1/6 re -1/6) (pow.f64 im 3) (fma.f64 (fma.f64 1/120 re 1/120) (pow.f64 im 5) (*.f64 im (+.f64 re 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) (*.f64 im (+.f64 re 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)))
(fma.f64 (pow.f64 im 5) (fma.f64 re 1/120 1/120) (fma.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6) (fma.f64 re im im)))
(*.f64 (+.f64 re 1) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 re) 1/6) (pow.f64 im 3)) (+.f64 (*.f64 (+.f64 (*.f64 1/120 re) 1/120) (pow.f64 im 5)) (+.f64 (*.f64 (-.f64 (*.f64 -1/5040 re) 1/5040) (pow.f64 im 7)) (*.f64 (+.f64 1 re) im))))
(fma.f64 (fma.f64 -1/6 re -1/6) (pow.f64 im 3) (fma.f64 (fma.f64 1/120 re 1/120) (pow.f64 im 5) (fma.f64 (fma.f64 -1/5040 re -1/5040) (pow.f64 im 7) (*.f64 im (+.f64 re 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 im (+.f64 re 1) (*.f64 (pow.f64 im 7) (fma.f64 re -1/5040 -1/5040)))))
(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 (pow.f64 im 7) (fma.f64 re -1/5040 -1/5040) (fma.f64 re im im))))
(fma.f64 (pow.f64 im 5) (fma.f64 re 1/120 1/120) (fma.f64 (pow.f64 im 3) (fma.f64 re -1/6 -1/6) (fma.f64 (pow.f64 im 7) (fma.f64 re -1/5040 -1/5040) (fma.f64 re im im))))
(*.f64 (+.f64 re 1) (+.f64 (+.f64 im (*.f64 -1/6 (pow.f64 im 3))) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (+.f64 re 1) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))))
(sin.f64 im)
(*.f64 (sin.f64 im) re)
(*.f64 re (sin.f64 im))
(*.f64 (sin.f64 im) re)
(*.f64 re (sin.f64 im))

eval62.0ms (0.8%)

Compiler

Compiled 3244 to 1668 computations (48.6% saved)

prune42.0ms (0.6%)

Pruning

11 alts after pruning (7 fresh and 4 done)

PrunedKeptTotal
New2297236
Fresh202
Picked101
Done145
Total23311244
Error
0b
Counts
244 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
11.7b
(cbrt.f64 (pow.f64 (*.f64 (exp.f64 re) (sin.f64 im)) 3))
42.0b
im
21.1b
(*.f64 (exp.f64 re) im)
42.2b
(+.f64 (*.f64 re im) im)
43.5b
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)
21.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
21.2b
(sin.f64 im)
22.2b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
35.7b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
21.2b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2))))
42.4b
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
Compiler

Compiled 169 to 125 computations (26% saved)

localize18.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 40 to 25 computations (37.5% saved)

series5.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

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

rewrite73.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
588×log-prod_binary64
511×fma-def_binary64
468×pow-prod-down_binary64
311×pow2_binary64
251×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify124.0ms (1.7%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
040575
1114573
2372521
31790497
43573497
53993497
64688497
74788497
84896497
95034497
107562497
117944497
Stop Event
node limit
Counts
184 → 175
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5))))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
1
(+.f64 1 re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
Outputs
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im)
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im)
(+.f64 im (*.f64 im (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (*.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 3))))
(fma.f64 -1/6 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5)))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 3)) (*.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 5)))))
(fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im (fma.f64 -1/6 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 1/120 (pow.f64 im 5)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (*.f64 -1/6 (pow.f64 im 3))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) (pow.f64 im 5))))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (fma.f64 -1/5040 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 3)) (*.f64 1/120 (*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (pow.f64 im 5))))))
(fma.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) im (fma.f64 -1/5040 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 5) 1/120)))))
(+.f64 (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5))) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 (+.f64 im (*.f64 -1/6 (pow.f64 im 3))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 re 1) (sin.f64 im))
(fma.f64 re (sin.f64 im) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 re (*.f64 re (*.f64 1/2 (sin.f64 im))))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (sin.f64 im)))
(*.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re re) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 re (*.f64 re (*.f64 1/2 (sin.f64 im))))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (sin.f64 im)))
(*.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re re) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (sin.f64 im))
(*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (sin.f64 im))
1
(+.f64 1 re)
(+.f64 re 1)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (*.f64 re re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(fma.f64 1/2 (*.f64 re re) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re))
(fma.f64 1/2 (*.f64 re re) (+.f64 re 1))
(+.f64 re (fma.f64 1/2 (*.f64 re re) 1))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 4 computations (66.7% saved)

series3.0ms (0%)

Counts
1 → 21
Calls

6 calls:

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

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

simplify17.0ms (0.2%)

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

Useful iterations: 1 (0.0ms)

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

localize15.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 34 to 21 computations (38.2% saved)

series5.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite71.0ms (1%)

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

Useful iterations: 1 (0.0ms)

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

simplify136.0ms (1.8%)

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

Useful iterations: 3 (0.0ms)

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

localize19.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 46 to 28 computations (39.1% saved)

series11.0ms (0.2%)

Counts
3 → 43
Calls

18 calls:

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

rewrite178.0ms (2.4%)

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

Useful iterations: 2 (0.0ms)

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

simplify164.0ms (2.2%)

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

Useful iterations: 2 (0.0ms)

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

localize28.0ms (0.4%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))
0.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
0.3b
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)
Compiler

Compiled 33 to 20 computations (39.4% saved)

series18.0ms (0.2%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
3.0ms
im
@inf
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)
3.0ms
im
@0
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)
3.0ms
re
@inf
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)
2.0ms
re
@-inf
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)
1.0ms
im
@-inf
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)

rewrite83.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
869×pow1_binary64
808×add-log-exp_binary64
808×log1p-expm1-u_binary64
808×expm1-log1p-u_binary64
789×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
121220
2233920
Stop Event
node limit
Counts
2 → 63
Calls
Call 1
Inputs
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 im) re) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (sin.f64 im) re) 1) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 im) (+.f64 re 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re 1) (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re 1)) 2) (*.f64 (cbrt.f64 (+.f64 re 1)) (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)) (+.f64 re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))) (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2) (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 1/4) (*.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 1/4) (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 1 (sqrt.f64 re)) (*.f64 (hypot.f64 1 (sqrt.f64 re)) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (hypot.f64 1 (sqrt.f64 re)) (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 1/4)) (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 im) (pow.f64 (cbrt.f64 (+.f64 re 1)) 2)) (cbrt.f64 (+.f64 re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 im) (hypot.f64 1 (sqrt.f64 re))) (hypot.f64 1 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 re 1) (pow.f64 (cbrt.f64 (sin.f64 im)) 2)) (cbrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 re 1) (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))) (cbrt.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) (sqrt.f64 (sin.f64 im))) (hypot.f64 1 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (sin.f64 im) re) 3) (pow.f64 (sin.f64 im) 3)) (+.f64 (*.f64 (*.f64 (sin.f64 im) re) (*.f64 (sin.f64 im) re)) (-.f64 (pow.f64 (sin.f64 im) 2) (*.f64 (*.f64 (sin.f64 im) re) (sin.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 (sin.f64 im) re) (*.f64 (sin.f64 im) re)) (pow.f64 (sin.f64 im) 2)) (-.f64 (*.f64 (sin.f64 im) re) (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 re 3)) (sin.f64 im)) (fma.f64 re re (-.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 re re -1) (sin.f64 im)) (+.f64 re -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (+.f64 1 (pow.f64 re 3))) (fma.f64 re re (-.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 im) (fma.f64 re re -1)) (+.f64 re -1))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 im)) (+.f64 re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (sin.f64 im) 3) (pow.f64 (+.f64 re 1) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (+.f64 re 1) 3) (pow.f64 (sin.f64 im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 im) (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 im) (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log1p.f64 re) (log.f64 (sin.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 im) re (sin.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re (sin.f64 im) (sin.f64 im))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))) (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) (cbrt.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 1/4) (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 1 (sqrt.f64 re)) (sqrt.f64 (sin.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 im)) (hypot.f64 1 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (+.f64 (log1p.f64 re) (log.f64 (sin.f64 im))) 1/2))))))

simplify68.0ms (0.9%)

Algorithm
egg-herbie
Rules
635×associate-+l+_binary64
601×distribute-rgt-in_binary64
588×associate-*l*_binary64
579×distribute-lft-in_binary64
570×associate-+r+_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
044291
1116287
2301275
31477265
47544265
Stop Event
node limit
Counts
87 → 76
Calls
Call 1
Inputs
(*.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 (*.f64 (+.f64 (*.f64 1/4 (sin.f64 im)) (*.f64 -1/4 (sin.f64 im))) (pow.f64 re 2)) (+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))
(+.f64 (*.f64 (+.f64 (*.f64 1/4 (sin.f64 im)) (*.f64 -1/4 (sin.f64 im))) (pow.f64 re 2)) (+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 (+.f64 (*.f64 -1/8 (sin.f64 im)) (*.f64 1/8 (sin.f64 im))) (pow.f64 re 3)))))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (sin.f64 im))
(+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re)))
(+.f64 (*.f64 -1/8 (*.f64 (sqrt.f64 (sin.f64 im)) (pow.f64 re 2))) (+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re))))
(+.f64 (*.f64 -1/8 (*.f64 (sqrt.f64 (sin.f64 im)) (pow.f64 re 2))) (+.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 1/16 (*.f64 (sqrt.f64 (sin.f64 im)) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re)))))
Outputs
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(+.f64 (*.f64 (+.f64 (*.f64 1/4 (sin.f64 im)) (*.f64 -1/4 (sin.f64 im))) (pow.f64 re 2)) (+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re)))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(+.f64 (*.f64 (+.f64 (*.f64 1/4 (sin.f64 im)) (*.f64 -1/4 (sin.f64 im))) (pow.f64 re 2)) (+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 (+.f64 (*.f64 -1/8 (sin.f64 im)) (*.f64 1/8 (sin.f64 im))) (pow.f64 re 3)))))
(*.f64 (sin.f64 im) (+.f64 1 re))
(fma.f64 (sin.f64 im) re (sin.f64 im))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (fma.f64 (sin.f64 im) re (sin.f64 im)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (fma.f64 (sin.f64 im) re (sin.f64 im)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (fma.f64 (sin.f64 im) re (sin.f64 im)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (fma.f64 (sin.f64 im) re (sin.f64 im)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (fma.f64 (sin.f64 im) re (sin.f64 im)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (fma.f64 (sin.f64 im) re (sin.f64 im)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (fma.f64 (sin.f64 im) re (sin.f64 im)))
(sqrt.f64 (*.f64 (sin.f64 im) (+.f64 1 re)))
(sqrt.f64 (fma.f64 (sin.f64 im) re (sin.f64 im)))
(sqrt.f64 (sin.f64 im))
(+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re)))
(+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (*.f64 re (sqrt.f64 (sin.f64 im)))))
(fma.f64 1/2 (*.f64 re (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im)))
(*.f64 (+.f64 (*.f64 re 1/2) 1) (sqrt.f64 (sin.f64 im)))
(*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 1 (*.f64 re 1/2)))
(+.f64 (*.f64 -1/8 (*.f64 (sqrt.f64 (sin.f64 im)) (pow.f64 re 2))) (+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re))))
(fma.f64 -1/8 (*.f64 (*.f64 re re) (sqrt.f64 (sin.f64 im))) (+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 1/2 (*.f64 re (sqrt.f64 (sin.f64 im))))))
(fma.f64 -1/8 (*.f64 re (*.f64 re (sqrt.f64 (sin.f64 im)))) (fma.f64 1/2 (*.f64 re (sqrt.f64 (sin.f64 im))) (sqrt.f64 (sin.f64 im))))
(+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 re 1/2) (*.f64 (*.f64 re re) -1/8))))
(*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 re 1/2) (+.f64 1 (*.f64 (*.f64 re re) -1/8))))
(+.f64 (*.f64 -1/8 (*.f64 (sqrt.f64 (sin.f64 im)) (pow.f64 re 2))) (+.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 1/16 (*.f64 (sqrt.f64 (sin.f64 im)) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sqrt.f64 (sin.f64 im)) re)))))
(fma.f64 -1/8 (*.f64 (*.f64 re re) (sqrt.f64 (sin.f64 im))) (+.f64 (sqrt.f64 (sin.f64 im)) (fma.f64 1/16 (*.f64 (pow.f64 re 3) (sqrt.f64 (sin.f64 im))) (*.f64 1/2 (*.f64 re (sqrt.f64 (sin.f64 im)))))))
(+.f64 (fma.f64 1/2 (*.f64 re (sqrt.f64 (sin.f64 im))) (*.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (pow.f64 re 3) 1/16))) (fma.f64 (*.f64 -1/8 (sqrt.f64 (sin.f64 im))) (*.f64 re re) (sqrt.f64 (sin.f64 im))))
(+.f64 (*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 re 1/2) (*.f64 (pow.f64 re 3) 1/16))) (*.f64 (+.f64 (*.f64 (*.f64 re re) -1/8) 1) (sqrt.f64 (sin.f64 im))))
(+.f64 (sqrt.f64 (sin.f64 im)) (*.f64 (sqrt.f64 (sin.f64 im)) (+.f64 (*.f64 (pow.f64 re 3) 1/16) (*.f64 re (+.f64 (*.f64 re -1/8) 1/2)))))

eval282.0ms (3.8%)

Compiler

Compiled 12677 to 7130 computations (43.8% saved)

prune121.0ms (1.6%)

Pruning

15 alts after pruning (9 fresh and 6 done)

PrunedKeptTotal
New7797786
Fresh022
Picked011
Done358
Total78215797
Error
0b
Counts
797 → 15
Alt Table
Click to see full alt table
StatusErrorProgram
61.5b
(*.f64 re im)
42.0b
im
56.6b
(-.f64 (+.f64 1 (*.f64 (+.f64 1 re) im)) 1)
21.2b
(+.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re 1/2))))
40.7b
(-.f64 1 1)
21.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
21.2b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2))))
42.4b
(+.f64 (*.f64 re im) (*.f64 im (+.f64 1 (*.f64 (*.f64 re re) 1/2))))
43.5b
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)
61.8b
(*.f64 im (*.f64 re (*.f64 re 1/2)))
42.3b
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (+.f64 0 (*.f64 re (*.f64 re im)))) im))
21.2b
(sin.f64 im)
22.2b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
35.7b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
42.2b
(+.f64 (*.f64 re im) im)
Compiler

Compiled 237 to 168 computations (29.1% saved)

localize22.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 48 to 27 computations (43.8% saved)

series7.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite84.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
669×log-prod_binary64
622×fma-def_binary64
332×pow2_binary64
298×fma-neg_binary64
255×pow-unpow_binary64
Iterations

Useful iterations: 2 (0.0ms)

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

simplify183.0ms (2.5%)

Algorithm
egg-herbie
Rules
1055×distribute-rgt-in_binary64
909×distribute-lft-in_binary64
407×fma-def_binary64
372×*-commutative_binary64
372×unswap-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
061902
1179900
2501794
32121784
43906784
54962784
65782784
75888784
85995784
96118784
106291784
116506784
127574784
Stop Event
node limit
Counts
163 → 141
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 2) (pow.f64 im 3))) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 2) (pow.f64 im 5))) (+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 2) (pow.f64 im 3))) (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 2) (pow.f64 im 5))) (+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 2) (pow.f64 im 3))) (+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 2) (pow.f64 im 7))) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (*.f64 (+.f64 (*.f64 -1/12 (pow.f64 re 2)) (*.f64 -1/6 (+.f64 1 re))) (pow.f64 im 3)))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 (+.f64 (*.f64 1/240 (pow.f64 re 2)) (*.f64 1/120 (+.f64 1 re))) (pow.f64 im 5)) (*.f64 (+.f64 (*.f64 -1/12 (pow.f64 re 2)) (*.f64 -1/6 (+.f64 1 re))) (pow.f64 im 3))))
(+.f64 (*.f64 (+.f64 (*.f64 -1/10080 (pow.f64 re 2)) (*.f64 -1/5040 (+.f64 1 re))) (pow.f64 im 7)) (+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 (+.f64 (*.f64 1/240 (pow.f64 re 2)) (*.f64 1/120 (+.f64 1 re))) (pow.f64 im 5)) (*.f64 (+.f64 (*.f64 -1/12 (pow.f64 re 2)) (*.f64 -1/6 (+.f64 1 re))) (pow.f64 im 3)))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 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 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
Outputs
(*.f64 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 1/2 (*.f64 re (*.f64 re im)))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 2) (pow.f64 im 3))) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 -1/12 (*.f64 (*.f64 re re) (pow.f64 im 3)) (*.f64 1/2 (*.f64 (*.f64 re re) im)))
(fma.f64 1/2 (*.f64 re (*.f64 re im)) (*.f64 (pow.f64 im 3) (*.f64 re (*.f64 re -1/12))))
(*.f64 (*.f64 re re) (+.f64 (*.f64 1/2 im) (*.f64 -1/12 (pow.f64 im 3))))
(+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 2) (pow.f64 im 5))) (+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 2) (pow.f64 im 3))) (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 1/240 (*.f64 (*.f64 re re) (pow.f64 im 5)) (fma.f64 -1/12 (*.f64 (*.f64 re re) (pow.f64 im 3)) (*.f64 1/2 (*.f64 (*.f64 re re) im))))
(fma.f64 1/240 (*.f64 (*.f64 re re) (pow.f64 im 5)) (fma.f64 1/2 (*.f64 re (*.f64 re im)) (*.f64 (pow.f64 im 3) (*.f64 re (*.f64 re -1/12)))))
(fma.f64 (*.f64 re re) (*.f64 1/240 (pow.f64 im 5)) (*.f64 (*.f64 re re) (+.f64 (*.f64 1/2 im) (*.f64 -1/12 (pow.f64 im 3)))))
(*.f64 (*.f64 re re) (+.f64 (*.f64 -1/12 (pow.f64 im 3)) (+.f64 (*.f64 1/2 im) (*.f64 1/240 (pow.f64 im 5)))))
(*.f64 (*.f64 re re) (+.f64 (*.f64 1/240 (pow.f64 im 5)) (+.f64 (*.f64 1/2 im) (*.f64 -1/12 (pow.f64 im 3)))))
(+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 2) (pow.f64 im 5))) (+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 2) (pow.f64 im 3))) (+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 2) (pow.f64 im 7))) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))))
(fma.f64 1/240 (*.f64 (*.f64 re re) (pow.f64 im 5)) (fma.f64 -1/12 (*.f64 (*.f64 re re) (pow.f64 im 3)) (fma.f64 -1/10080 (*.f64 (*.f64 re re) (pow.f64 im 7)) (*.f64 1/2 (*.f64 (*.f64 re re) im)))))
(fma.f64 1/240 (*.f64 (*.f64 re re) (pow.f64 im 5)) (fma.f64 -1/12 (*.f64 (*.f64 re re) (pow.f64 im 3)) (fma.f64 1/2 (*.f64 re (*.f64 re im)) (*.f64 (pow.f64 im 7) (*.f64 re (*.f64 re -1/10080))))))
(+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 -1/12 (pow.f64 im 3)) (*.f64 -1/10080 (pow.f64 im 7)))) (*.f64 (*.f64 re re) (+.f64 (*.f64 1/240 (pow.f64 im 5)) (*.f64 1/2 im))))
(*.f64 (*.f64 re re) (+.f64 (+.f64 (*.f64 1/2 im) (*.f64 -1/10080 (pow.f64 im 7))) (+.f64 (*.f64 1/240 (pow.f64 im 5)) (*.f64 -1/12 (pow.f64 im 3)))))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 im (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (*.f64 (+.f64 (*.f64 -1/12 (pow.f64 re 2)) (*.f64 -1/6 (+.f64 1 re))) (pow.f64 im 3)))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (*.f64 (pow.f64 im 3) (fma.f64 -1/12 (*.f64 re re) (+.f64 -1/6 (*.f64 re -1/6)))))
(fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 3) (fma.f64 (+.f64 re 1) -1/6 (*.f64 re (*.f64 re -1/12)))))
(fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (*.f64 (pow.f64 im 3) (fma.f64 re (*.f64 re -1/12) (fma.f64 re -1/6 -1/6))))
(fma.f64 im (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)) (*.f64 (pow.f64 im 3) (fma.f64 re (*.f64 re -1/12) (fma.f64 re -1/6 -1/6))))
(+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 (+.f64 (*.f64 1/240 (pow.f64 re 2)) (*.f64 1/120 (+.f64 1 re))) (pow.f64 im 5)) (*.f64 (+.f64 (*.f64 -1/12 (pow.f64 re 2)) (*.f64 -1/6 (+.f64 1 re))) (pow.f64 im 3))))
(fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (fma.f64 (fma.f64 1/240 (*.f64 re re) (+.f64 1/120 (*.f64 re 1/120))) (pow.f64 im 5) (*.f64 (pow.f64 im 3) (fma.f64 -1/12 (*.f64 re re) (+.f64 -1/6 (*.f64 re -1/6))))))
(fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (fma.f64 (pow.f64 im 3) (fma.f64 (+.f64 re 1) -1/6 (*.f64 re (*.f64 re -1/12))) (*.f64 (pow.f64 im 5) (fma.f64 (*.f64 re re) 1/240 (+.f64 1/120 (*.f64 re 1/120))))))
(fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (fma.f64 (pow.f64 im 3) (fma.f64 re (*.f64 re -1/12) (fma.f64 re -1/6 -1/6)) (*.f64 (pow.f64 im 5) (fma.f64 re (*.f64 re 1/240) (fma.f64 re 1/120 1/120)))))
(fma.f64 (pow.f64 im 3) (fma.f64 re (*.f64 re -1/12) (fma.f64 re -1/6 -1/6)) (fma.f64 (pow.f64 im 5) (fma.f64 re (*.f64 re 1/240) (fma.f64 re 1/120 1/120)) (*.f64 im (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))))
(+.f64 (*.f64 (+.f64 (*.f64 -1/10080 (pow.f64 re 2)) (*.f64 -1/5040 (+.f64 1 re))) (pow.f64 im 7)) (+.f64 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im) (+.f64 (*.f64 (+.f64 (*.f64 1/240 (pow.f64 re 2)) (*.f64 1/120 (+.f64 1 re))) (pow.f64 im 5)) (*.f64 (+.f64 (*.f64 -1/12 (pow.f64 re 2)) (*.f64 -1/6 (+.f64 1 re))) (pow.f64 im 3)))))
(fma.f64 (fma.f64 -1/10080 (*.f64 re re) (+.f64 -1/5040 (*.f64 re -1/5040))) (pow.f64 im 7) (fma.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) im (fma.f64 (fma.f64 1/240 (*.f64 re re) (+.f64 1/120 (*.f64 re 1/120))) (pow.f64 im 5) (*.f64 (pow.f64 im 3) (fma.f64 -1/12 (*.f64 re re) (+.f64 -1/6 (*.f64 re -1/6)))))))
(fma.f64 (pow.f64 im 7) (fma.f64 (*.f64 re re) -1/10080 (+.f64 -1/5040 (*.f64 re -1/5040))) (fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (fma.f64 (pow.f64 im 3) (fma.f64 (+.f64 re 1) -1/6 (*.f64 re (*.f64 re -1/12))) (*.f64 (pow.f64 im 5) (fma.f64 (*.f64 re re) 1/240 (+.f64 1/120 (*.f64 re 1/120)))))))
(fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (fma.f64 (pow.f64 im 7) (fma.f64 (*.f64 re re) -1/10080 (fma.f64 re -1/5040 -1/5040)) (fma.f64 (pow.f64 im 3) (fma.f64 re (*.f64 re -1/12) (fma.f64 re -1/6 -1/6)) (*.f64 (pow.f64 im 5) (fma.f64 re (*.f64 re 1/240) (fma.f64 re 1/120 1/120))))))
(fma.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (fma.f64 (pow.f64 im 7) (fma.f64 re (*.f64 re -1/10080) (fma.f64 re -1/5040 -1/5040)) (fma.f64 (pow.f64 im 3) (fma.f64 re (*.f64 re -1/12) (fma.f64 re -1/6 -1/6)) (*.f64 (pow.f64 im 5) (fma.f64 re (*.f64 re 1/240) (fma.f64 re 1/120 1/120))))))
(fma.f64 (pow.f64 im 7) (fma.f64 re (*.f64 re -1/10080) (fma.f64 re -1/5040 -1/5040)) (fma.f64 (pow.f64 im 3) (fma.f64 re (*.f64 re -1/12) (fma.f64 re -1/6 -1/6)) (fma.f64 (pow.f64 im 5) (fma.f64 re (*.f64 re 1/240) (fma.f64 re 1/120 1/120)) (*.f64 im (+.f64 1 (fma.f64 1/2 (*.f64 re re) re))))))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(+.f64 (*.f64 (sin.f64 im) (+.f64 1 re)) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (sin.f64 im) (+.f64 re 1))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.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 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/2 (*.f64 (*.f64 re 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)))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.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 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))
(*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))
(*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))
(*.f64 re (*.f64 (*.f64 1/2 re) (sin.f64 im)))
(*.f64 (*.f64 re (sin.f64 im)) (*.f64 1/2 re))
(+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/2 (*.f64 (*.f64 re 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)))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.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 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 (sin.f64 im) (+.f64 re 1) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 1/2 (*.f64 re re) re)))

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.4b
(*.f64 im (*.f64 re (*.f64 re 1/2)))
Compiler

Compiled 20 to 12 computations (40% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite42.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
667×pow1_binary64
614×add-log-exp_binary64
614×log1p-expm1-u_binary64
614×expm1-log1p-u_binary64
601×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify164.0ms (2.2%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
636×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08240
117240
236240
382240
4219240
5742240
61015240
71429240
81529240
91662240
101831240
112072240
122385240
132757240
143213240
153804240
164510240
175368240
185794240
196110240
206420240
216498240
226532240
Stop Event
node limit
Counts
37 → 15
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
Outputs
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 (*.f64 re re) im))
(*.f64 1/2 (*.f64 re (*.f64 re im)))
(*.f64 re (*.f64 im (*.f64 1/2 re)))
(*.f64 re (*.f64 1/2 (*.f64 re im)))

localize16.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
2.4b
(*.f64 im (+.f64 1 (*.f64 (*.f64 re re) 1/2)))
5.4b
(+.f64 (*.f64 re im) (*.f64 im (+.f64 1 (*.f64 (*.f64 re re) 1/2))))
Compiler

Compiled 46 to 23 computations (50% saved)

series7.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite132.0ms (1.8%)

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

Useful iterations: 1 (0.0ms)

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

simplify164.0ms (2.2%)

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

Useful iterations: 2 (0.0ms)

IterNodesCost
028576
178556
2193516
3604516
41974516
54150516
65336516
76295516
86692516
96893516
107515516
Stop Event
node limit
Counts
187 → 155
Calls
Call 1
Inputs
im
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
im
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
Outputs
im
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(*.f64 (*.f64 im re) (*.f64 re 1/2))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (*.f64 re (*.f64 re 1/2))))
(*.f64 im (fma.f64 re (*.f64 re 1/2) re))
(*.f64 (fma.f64 re 1/2 1) (*.f64 im re))
(*.f64 (*.f64 im re) (fma.f64 re 1/2 1))
(*.f64 (*.f64 im re) (fma.f64 re 1/2 -1))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(*.f64 (*.f64 im re) (*.f64 re 1/2))
(+.f64 (*.f64 re im) (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(fma.f64 re im (*.f64 1/2 (*.f64 im (*.f64 re re))))
(*.f64 im (+.f64 re (*.f64 re (*.f64 re 1/2))))
(*.f64 im (fma.f64 re (*.f64 re 1/2) re))
(*.f64 (fma.f64 re 1/2 1) (*.f64 im re))
(*.f64 (*.f64 im re) (fma.f64 re 1/2 1))
(*.f64 (*.f64 im re) (fma.f64 re 1/2 -1))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im))))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 1 re)) im)
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 re) (*.f64 -1 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1))) im))
(fma.f64 re im (fma.f64 1/2 (*.f64 im (*.f64 re re)) im))
(*.f64 im (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)))
(fma.f64 im (fma.f64 re (*.f64 re 1/2) re) im)
(*.f64 im (fma.f64 (fma.f64 re 1/2 1) re 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 1) 1))
(*.f64 im (fma.f64 re (fma.f64 re 1/2 -1) 1))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) 1) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
im
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(*.f64 (*.f64 im re) (*.f64 re 1/2))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(*.f64 1/2 (*.f64 (pow.f64 re 2) im))
(*.f64 1/2 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (*.f64 re 1/2)))
(*.f64 (*.f64 im re) (*.f64 re 1/2))
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)
(+.f64 im (*.f64 1/2 (*.f64 (pow.f64 re 2) im)))
(*.f64 im (fma.f64 1/2 (*.f64 re re) 1))
(*.f64 im (fma.f64 re (*.f64 re 1/2) 1))
(fma.f64 1/2 (*.f64 re (*.f64 im re)) im)

localize23.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
0.2b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
0.3b
(sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im)))
Compiler

Compiled 28 to 9 computations (67.9% saved)

series15.0ms (0.2%)

Counts
2 → 40
Calls

12 calls:

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

rewrite78.0ms (1.1%)

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

Useful iterations: 0 (0.0ms)

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

simplify85.0ms (1.1%)

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

Useful iterations: 3 (0.0ms)

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

eval206.0ms (2.8%)

Compiler

Compiled 7932 to 3943 computations (50.3% saved)

prune126.0ms (1.7%)

Pruning

16 alts after pruning (6 fresh and 10 done)

PrunedKeptTotal
New4393442
Fresh134
Picked011
Done1910
Total44116457
Error
0b
Counts
457 → 16
Alt Table
Click to see full alt table
StatusErrorProgram
61.5b
(*.f64 re im)
42.0b
im
56.6b
(-.f64 (+.f64 1 (*.f64 (+.f64 1 re) im)) 1)
21.2b
(+.f64 (*.f64 (sin.f64 im) (+.f64 re 1)) (*.f64 (sin.f64 im) (*.f64 re (*.f64 re 1/2))))
40.7b
(-.f64 1 1)
21.1b
(*.f64 (sin.f64 im) (+.f64 re 1))
21.2b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2))))
59.6b
(-.f64 (+.f64 1 (*.f64 im (*.f64 re (*.f64 re 1/2)))) 1)
43.5b
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 im) (+.f64 re 1))) 2)
61.8b
(*.f64 im (*.f64 re (*.f64 re 1/2)))
21.2b
(sin.f64 im)
61.8b
(*.f64 (*.f64 im re) (*.f64 re 1/2))
22.2b
(pow.f64 (sqrt.f64 (*.f64 (exp.f64 re) (sin.f64 im))) 2)
35.7b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
42.4b
(+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (*.f64 re re) im)) im))
42.2b
(+.f64 (*.f64 re im) im)
Compiler

Compiled 153 to 111 computations (27.5% saved)

regimes111.0ms (1.5%)

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

5 calls:

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

Compiled 242 to 129 computations (46.7% saved)

regimes308.0ms (4.2%)

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

6 calls:

83.0ms
im
82.0ms
(sin.f64 im)
81.0ms
(sin.f64 im)
37.0ms
re
8.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.0b2re
10.3b5im
0.0b2(exp.f64 re)
0.0b2(exp.f64 re)
10.4b5(sin.f64 im)
10.4b5(sin.f64 im)
Compiler

Compiled 158 to 92 computations (41.8% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
0.999988156801354
Compiler

Compiled 12 to 9 computations (25% saved)

regimes184.0ms (2.5%)

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

6 calls:

64.0ms
(sin.f64 im)
44.0ms
im
42.0ms
(sin.f64 im)
18.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.2b2re
10.3b5im
0.2b2(exp.f64 re)
0.2b2(exp.f64 re)
10.4b5(sin.f64 im)
10.4b5(sin.f64 im)
Compiler

Compiled 133 to 78 computations (41.4% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
0.999988156801354
Compiler

Compiled 12 to 9 computations (25% saved)

regimes370.0ms (5%)

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

5 calls:

188.0ms
(sin.f64 im)
77.0ms
re
54.0ms
im
39.0ms
(sin.f64 im)
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.6b2re
10.6b5im
0.6b2(exp.f64 re)
10.7b5(sin.f64 im)
10.7b5(sin.f64 im)
Compiler

Compiled 113 to 65 computations (42.5% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
0.999988156801354
Compiler

Compiled 12 to 9 computations (25% saved)

regimes61.0ms (0.8%)

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

2 calls:

41.0ms
im
15.0ms
re
Results
ErrorSegmentsBranch
21.1b2re
30.0b3im
Compiler

Compiled 95 to 53 computations (44.2% saved)

bsearch45.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
45.0ms
-6.024449220582563e-11
-2.712874051821838e-11
Compiler

Compiled 12 to 9 computations (25% saved)

regimes50.0ms (0.7%)

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

2 calls:

37.0ms
im
10.0ms
re
Results
ErrorSegmentsBranch
21.1b2re
30.0b3im
Compiler

Compiled 54 to 34 computations (37% saved)

bsearch45.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
44.0ms
-6.024449220582563e-11
-2.712874051821838e-11
Compiler

Compiled 12 to 9 computations (25% saved)

regimes94.0ms (1.3%)

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

2 calls:

86.0ms
im
7.0ms
re
Results
ErrorSegmentsBranch
21.3b2re
30.0b3im
Compiler

Compiled 15 to 10 computations (33.3% saved)

bsearch45.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
45.0ms
-6.024449220582563e-11
-2.712874051821838e-11
Compiler

Compiled 12 to 9 computations (25% saved)

regimes7.0ms (0.1%)

Accuracy

Total -20.0b remaining (-47.5%)

Threshold costs -20.0b (-47.5%)

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

2 calls:

3.0ms
re
3.0ms
im
Results
ErrorSegmentsBranch
42.0b1re
42.0b1im
Compiler

Compiled 12 to 7 computations (41.7% saved)

simplify7.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
033114
147114
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2)))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 re -4661191815500473/77371252455336267181195264) (-.f64 1 1) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (*.f64 re re) im)) im)))
(if (<=.f64 re -4661191815500473/77371252455336267181195264) (-.f64 1 1) (+.f64 (*.f64 re im) im))
(if (<=.f64 re -4661191815500473/77371252455336267181195264) (-.f64 1 1) im)
im
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2)))))
(if (<=.f64 (exp.f64 re) 0) 0 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 re (*.f64 re 1/2)))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 0) 0 (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 0) 0 (sin.f64 im))
(if (<=.f64 re -4661191815500473/77371252455336267181195264) (-.f64 1 1) (+.f64 (*.f64 re im) (+.f64 (*.f64 1/2 (*.f64 (*.f64 re re) im)) im)))
(if (<=.f64 re -4661191815500473/77371252455336267181195264) 0 (+.f64 (*.f64 re im) (+.f64 im (*.f64 1/2 (*.f64 im (*.f64 re re))))))
(if (<=.f64 re -4661191815500473/77371252455336267181195264) (-.f64 1 1) (+.f64 (*.f64 re im) im))
(if (<=.f64 re -4661191815500473/77371252455336267181195264) 0 (+.f64 im (*.f64 re im)))
(if (<=.f64 re -4661191815500473/77371252455336267181195264) (-.f64 1 1) im)
(if (<=.f64 re -4661191815500473/77371252455336267181195264) 0 im)
im
Compiler

Compiled 94 to 68 computations (27.7% saved)

soundness0.0ms (0%)

end51.0ms (0.7%)

Compiler

Compiled 80 to 47 computations (41.3% saved)

Profiling

Loading profile data...