Details

Time bar (total: 9.3s)

analyze101.0ms (1.1%)

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)

sample3.9s (41.8%)

Results
1.6s1358×body1024valid
1.2s6225×body256valid
493.0ms670×body512valid
391.0ms692×body1024infinite
120.0ms341×body512infinite
100.0ms455×body256infinite
4.0msbody2048valid
Bogosity

preprocess51.0ms (0.6%)

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)

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

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

series4.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

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

simplify96.0ms (1%)

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)

prune6.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

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

Compiled 36 to 27 computations (25% saved)

localize4.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize5.0ms (0.1%)

Compiler

Compiled 10 to 4 computations (60% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 16 to 9 computations (43.8% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite46.0ms (0.5%)

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

simplify148.0ms (1.6%)

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

Useful iterations: 3 (0.0ms)

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

localize24.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 30 to 12 computations (60% saved)

series8.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite157.0ms (1.7%)

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

Useful iterations: 1 (0.0ms)

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

simplify157.0ms (1.7%)

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

Useful iterations: 3 (0.0ms)

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

eval158.0ms (1.7%)

Compiler

Compiled 2483 to 1319 computations (46.9% saved)

prune138.0ms (1.5%)

Pruning

11 alts after pruning (6 fresh and 5 done)

PrunedKeptTotal
New1726178
Fresh000
Picked011
Done044
Total17211183
Error
0b
Counts
183 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
41.6b
(-.f64 1 1)
21.7b
(*.f64 (exp.f64 re) im)
32.1b
(-.f64 (+.f64 (sin.f64 im) 1) 1)
20.9b
(sin.f64 im)
21.0b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
35.6b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
42.2b
(*.f64 (+.f64 1 re) im)
19.8b
(-.f64 (+.f64 1 (*.f64 (exp.f64 re) (sin.f64 im))) 1)
21.0b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
20.9b
(*.f64 (sin.f64 im) (+.f64 re 1))
Compiler

Compiled 164 to 127 computations (22.6% saved)

localize44.0ms (0.5%)

Local error

Found 1 expressions with local error:

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

Compiled 40 to 21 computations (47.5% saved)

series4.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite117.0ms (1.3%)

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

Useful iterations: 1 (0.0ms)

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

simplify126.0ms (1.4%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
039474
1111472
2370420
31817396
43603396
54023396
64718396
74818396
84926396
95064396
107604396
117998396
Stop Event
node limit
Counts
88 → 82
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)))))
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 (fma.f64 1/2 (*.f64 re re) (+.f64 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/6 (pow.f64 im 3)) (*.f64 (+.f64 re (fma.f64 1/2 (*.f64 re re) 1)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (fma.f64 1/2 (*.f64 re re) (+.f64 re 1)) (+.f64 (*.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 1/120 (pow.f64 im 5)) (+.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/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 (fma.f64 1/2 (*.f64 re re) (+.f64 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 (+.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))
(+.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 (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 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 (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 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))

localize8.0ms (0.1%)

Compiler

Compiled 6 to 6 computations (0% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 8 computations (38.5% saved)

series4.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite73.0ms (0.8%)

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

Useful iterations: 0 (0.0ms)

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

simplify13.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.5b
(+.f64 (sin.f64 im) 1)
2.6b
(-.f64 (+.f64 (sin.f64 im) 1) 1)
Compiler

Compiled 16 to 10 computations (37.5% saved)

series2.0ms (0%)

Counts
2 → 20
Calls

6 calls:

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

rewrite57.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
630×pow1_binary64
590×add-log-exp_binary64
590×log1p-expm1-u_binary64
590×expm1-log1p-u_binary64
580×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify172.0ms (1.8%)

Algorithm
egg-herbie
Rules
675×sqr-pow_binary64
665×fma-def_binary64
624×unswap-sqr_binary64
596×cube-prod_binary64
521×fabs-mul_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
025128
169128
2156128
3401128
4743128
51546128
62285128
73261128
83418128
93665128
103980128
114461128
125140128
136035128
146684128
157193128
167598128
177975128
Stop Event
node limit
Counts
96 → 92
Calls
Call 1
Inputs
im
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
1
(+.f64 1 im)
(+.f64 1 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(+.f64 1 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(+.f64 1 (sin.f64 im))
(+.f64 1 (sin.f64 im))
(+.f64 1 (sin.f64 im))
(+.f64 1 (sin.f64 im))
Outputs
im
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 -1/5040 (pow.f64 im 7) (fma.f64 1/120 (pow.f64 im 5) im)))
(fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) (fma.f64 -1/5040 (pow.f64 im 7) im)))
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
(sin.f64 im)
1
(+.f64 1 im)
(+.f64 im 1)
(+.f64 1 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(+.f64 (fma.f64 -1/6 (pow.f64 im 3) im) 1)
(+.f64 im (fma.f64 -1/6 (pow.f64 im 3) 1))
(fma.f64 -1/6 (pow.f64 im 3) (+.f64 im 1))
(+.f64 1 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) im)))
(+.f64 (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) im)) 1)
(+.f64 (fma.f64 1/120 (pow.f64 im 5) im) (fma.f64 -1/6 (pow.f64 im 3) 1))
(+.f64 im (fma.f64 -1/6 (pow.f64 im 3) (fma.f64 1/120 (pow.f64 im 5) 1)))
(+.f64 (fma.f64 -1/6 (pow.f64 im 3) im) (fma.f64 1/120 (pow.f64 im 5) 1))
(+.f64 1 (sin.f64 im))
(+.f64 (sin.f64 im) 1)
(+.f64 1 (sin.f64 im))
(+.f64 (sin.f64 im) 1)
(+.f64 1 (sin.f64 im))
(+.f64 (sin.f64 im) 1)
(+.f64 1 (sin.f64 im))
(+.f64 (sin.f64 im) 1)

localize46.0ms (0.5%)

Local error

Found 3 expressions with local error:

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

rewrite132.0ms (1.4%)

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

simplify291.0ms (3.1%)

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)

eval369.0ms (4%)

Compiler

Compiled 6518 to 3976 computations (39% saved)

prune81.0ms (0.9%)

Pruning

15 alts after pruning (5 fresh and 10 done)

PrunedKeptTotal
New4454449
Fresh011
Picked011
Done099
Total44515460
Error
0b
Counts
460 → 15
Alt Table
Click to see full alt table
StatusErrorProgram
41.6b
(-.f64 1 1)
21.7b
(*.f64 (exp.f64 re) im)
32.1b
(-.f64 (+.f64 (sin.f64 im) 1) 1)
20.9b
(sin.f64 im)
21.0b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
35.6b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
42.2b
(*.f64 (+.f64 1 re) im)
21.0b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
42.2b
(+.f64 (*.f64 re im) im)
20.9b
(*.f64 (sin.f64 im) (+.f64 re 1))
42.4b
(/.f64 (*.f64 (-.f64 1 (*.f64 re re)) im) (-.f64 1 re))
19.8b
(-.f64 (+.f64 1 (*.f64 (exp.f64 re) (sin.f64 im))) 1)
61.3b
(*.f64 re im)
42.0b
im
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
Compiler

Compiled 128 to 95 computations (25.8% saved)

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize35.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

Compiled 61 to 37 computations (39.3% saved)

series9.0ms (0.1%)

Counts
4 → 60
Calls

15 calls:

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

rewrite106.0ms (1.1%)

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

Useful iterations: 1 (0.0ms)

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

simplify156.0ms (1.7%)

Algorithm
egg-herbie
Rules
1319×distribute-rgt-in_binary64
1071×distribute-lft-in_binary64
444×unswap-sqr_binary64
430×*-commutative_binary64
315×distribute-lft-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
050896
1146825
2483716
32400684
43236684
53626684
64440684
74567684
84707684
Stop Event
node limit
Counts
243 → 214
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5)))))
(+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5))))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/6 re)
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
1/2
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(*.f64 1/6 re)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(*.f64 1/6 re)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
Outputs
(*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im)
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im)
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im)
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) im im)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im))
(fma.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 3)) (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im))
(fma.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (*.f64 (pow.f64 im 3) -1/6)))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5)))))
(fma.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 3)) (fma.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 5)))))
(fma.f64 -1/6 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (pow.f64 im 3)) (fma.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (*.f64 (pow.f64 im 5) 1/120))))
(fma.f64 (pow.f64 im 3) (fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) -1/6 -1/6) (*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 im (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5)))))
(+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 3))) (+.f64 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) im) (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))) (pow.f64 im 5))))))
(fma.f64 -1/5040 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 3)) (fma.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) im (*.f64 1/120 (*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (pow.f64 im 5))))))
(fma.f64 -1/5040 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (pow.f64 im 7)) (fma.f64 -1/6 (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (pow.f64 im 3)) (fma.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) im (*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (*.f64 (pow.f64 im 5) 1/120)))))
(+.f64 (*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 im (*.f64 -1/6 (pow.f64 im 3)))) (*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 (*.f64 1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 (+.f64 im (*.f64 1/120 (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (*.f64 -1/6 (pow.f64 im 3)))))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (+.f64 (*.f64 -1/5040 (pow.f64 im 7)) (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (+.f64 im (*.f64 1/120 (pow.f64 im 5))))))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 (+.f64 re (*.f64 (pow.f64 re 2) (+.f64 (*.f64 1/6 re) 1/2)))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(sin.f64 im)
(+.f64 (sin.f64 im) (*.f64 (sin.f64 im) re))
(+.f64 (sin.f64 im) (*.f64 re (sin.f64 im)))
(*.f64 (+.f64 1 re) (sin.f64 im))
(*.f64 (sin.f64 im) (+.f64 1 re))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(+.f64 (sin.f64 im) (fma.f64 (sin.f64 im) re (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))))
(+.f64 (sin.f64 im) (fma.f64 1/2 (*.f64 re (*.f64 re (sin.f64 im))) (*.f64 re (sin.f64 im))))
(*.f64 (sin.f64 im) (+.f64 (*.f64 re (*.f64 re 1/2)) (+.f64 1 re)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 (*.f64 re re) 1/2 re)))
(*.f64 (sin.f64 im) (+.f64 1 (fma.f64 re (*.f64 re 1/2) re)))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(*.f64 (pow.f64 re 3) (*.f64 1/6 (sin.f64 im)))
(*.f64 (sin.f64 im) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 re (fma.f64 re 1/6 1/2)) (sin.f64 im)))
(*.f64 re (*.f64 re (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im))))
(*.f64 (*.f64 re re) (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im)))
(+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))))
(fma.f64 re (sin.f64 im) (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))))
(*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)))
(*.f64 (pow.f64 re 3) (*.f64 1/6 (sin.f64 im)))
(*.f64 (sin.f64 im) (*.f64 1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im))))
(fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im))))
(*.f64 re (*.f64 (*.f64 re (fma.f64 re 1/6 1/2)) (sin.f64 im)))
(*.f64 re (*.f64 re (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im))))
(*.f64 (*.f64 re re) (*.f64 (fma.f64 re 1/6 1/2) (sin.f64 im)))
(+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2)))))
(fma.f64 (sin.f64 im) re (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (*.f64 re re) (sin.f64 im)))))
(fma.f64 re (sin.f64 im) (fma.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3)) (*.f64 (*.f64 re re) (*.f64 1/2 (sin.f64 im)))))
(*.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im))
(+.f64 (sin.f64 im) (+.f64 (*.f64 (sin.f64 im) re) (+.f64 (*.f64 1/6 (*.f64 (sin.f64 im) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (sin.f64 im) (pow.f64 re 2))))))
(*.f64 (+.f64 1 (+.f64 re (*.f64 (*.f64 re re) (fma.f64 1/6 re 1/2)))) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 (*.f64 re re) (fma.f64 re 1/6 1/2) re)) (sin.f64 im))
(fma.f64 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re) (sin.f64 im) (sin.f64 im))
(*.f64 (+.f64 1 (fma.f64 re (*.f64 re (fma.f64 re 1/6 1/2)) re)) (sin.f64 im))
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/6 re)
(*.f64 re 1/6)
(*.f64 1/2 (pow.f64 re 2))
(*.f64 (*.f64 re re) 1/2)
(*.f64 re (*.f64 re 1/2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(*.f64 1/6 (pow.f64 re 3))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/6 (pow.f64 re 3)))
(fma.f64 1/2 (*.f64 re re) (*.f64 1/6 (pow.f64 re 3)))
(*.f64 re (*.f64 re (fma.f64 re 1/6 1/2)))
1/2
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(*.f64 1/6 re)
(*.f64 re 1/6)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(*.f64 1/6 re)
(*.f64 re 1/6)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)
(+.f64 (*.f64 1/6 re) 1/2)
(fma.f64 1/6 re 1/2)
(fma.f64 re 1/6 1/2)

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

series5.0ms (0.1%)

Counts
1 → 21
Calls

6 calls:

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

rewrite96.0ms (1%)

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

simplify29.0ms (0.3%)

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)

localize39.0ms (0.4%)

Local error

Found 2 expressions with local error:

NewErrorProgram
1.6b
(*.f64 (-.f64 1 (*.f64 re re)) im)
5.0b
(/.f64 (*.f64 (-.f64 1 (*.f64 re re)) im) (-.f64 1 re))
Compiler

Compiled 34 to 17 computations (50% saved)

series11.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite98.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
515×log-prod_binary64
349×prod-diff_binary64
331×pow-prod-down_binary64
264×pow2_binary64
191×fma-def_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify65.0ms (0.7%)

Algorithm
egg-herbie
Rules
950×fma-neg_binary64
349×associate-/r/_binary64
331×associate-/l/_binary64
322×associate-*l*_binary64
295×div-sub_binary64
Iterations

Useful iterations: 6 (0.0ms)

IterNodesCost
017496
141475
289475
3196475
4623475
52416475
66200403
Stop Event
node limit
Counts
142 → 107
Calls
Call 1
Inputs
im
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(+.f64 (*.f64 re im) im)
(*.f64 re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(*.f64 re im)
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(+.f64 im (*.f64 re im))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
im
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 -1 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 -1 (*.f64 (pow.f64 re 2) im))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(*.f64 (-.f64 1 (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) im)
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 (*.f64 re im) im)
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 re im)
(*.f64 im re)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(*.f64 re im)
(*.f64 im re)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(+.f64 im (*.f64 re im))
(fma.f64 re im im)
(fma.f64 im re im)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
(/.f64 (*.f64 (-.f64 1 (pow.f64 re 2)) im) (-.f64 1 re))
(/.f64 (-.f64 1 (*.f64 re re)) (/.f64 (-.f64 1 re) im))
(/.f64 (fma.f64 (*.f64 re (neg.f64 re)) im im) (-.f64 1 re))
(/.f64 (-.f64 im (*.f64 re (*.f64 im re))) (-.f64 1 re))
(*.f64 im (/.f64 (-.f64 1 (*.f64 re re)) (-.f64 1 re)))
(/.f64 (fma.f64 im (*.f64 re (neg.f64 re)) im) (-.f64 1 re))
(/.f64 (neg.f64 (fma.f64 im re im)) -1)
im
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 -1 (*.f64 (pow.f64 re 2) im))
(neg.f64 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (neg.f64 re)))
(*.f64 (*.f64 (neg.f64 im) re) re)
(*.f64 (*.f64 re re) (neg.f64 im))
(*.f64 re (*.f64 im (neg.f64 re)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 -1 (*.f64 (pow.f64 re 2) im))
(neg.f64 (*.f64 im (*.f64 re re)))
(*.f64 im (*.f64 re (neg.f64 re)))
(*.f64 (*.f64 (neg.f64 im) re) re)
(*.f64 (*.f64 re re) (neg.f64 im))
(*.f64 re (*.f64 im (neg.f64 re)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 re 2) im)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)
(*.f64 (-.f64 1 (pow.f64 re 2)) im)
(fma.f64 -1 (*.f64 im (*.f64 re re)) im)
(fma.f64 (*.f64 re (neg.f64 re)) im im)
(-.f64 im (*.f64 re (*.f64 im re)))
(fma.f64 im (neg.f64 (*.f64 re re)) im)
(fma.f64 im (*.f64 re (neg.f64 re)) im)

eval311.0ms (3.4%)

Compiler

Compiled 6634 to 4004 computations (39.6% saved)

prune237.0ms (2.6%)

Pruning

17 alts after pruning (3 fresh and 14 done)

PrunedKeptTotal
New3643367
Fresh101
Picked011
Done01313
Total36517382
Error
0b
Counts
382 → 17
Alt Table
Click to see full alt table
StatusErrorProgram
41.6b
(-.f64 1 1)
21.7b
(*.f64 (exp.f64 re) im)
42.0b
im
32.1b
(-.f64 (+.f64 (sin.f64 im) 1) 1)
20.9b
(sin.f64 im)
21.0b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6)))))
35.6b
(-.f64 (+.f64 1 (*.f64 (sin.f64 im) (+.f64 re 1))) 1)
42.2b
(*.f64 (+.f64 1 re) im)
21.0b
(*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re))))
42.2b
(+.f64 (*.f64 re im) im)
20.9b
(*.f64 (sin.f64 im) (+.f64 re 1))
42.4b
(/.f64 (*.f64 (-.f64 1 (*.f64 re re)) im) (-.f64 1 re))
40.9b
(*.f64 (-.f64 1 (*.f64 re re)) (/.f64 1 (/.f64 (-.f64 1 re) im)))
19.8b
(-.f64 (+.f64 1 (*.f64 (exp.f64 re) (sin.f64 im))) 1)
61.3b
(*.f64 re im)
61.8b
(/.f64 (*.f64 re (*.f64 im (neg.f64 re))) (-.f64 1 re))
0.0b
(*.f64 (exp.f64 re) (sin.f64 im))
Compiler

Compiled 155 to 114 computations (26.5% saved)

regimes215.0ms (2.3%)

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

5 calls:

108.0ms
re
54.0ms
im
23.0ms
(sin.f64 im)
15.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 145 to 83 computations (42.8% saved)

regimes258.0ms (2.8%)

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

6 calls:

120.0ms
im
65.0ms
(sin.f64 im)
29.0ms
(sin.f64 im)
21.0ms
re
10.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.7b2re
9.2b5im
0.7b2(exp.f64 re)
0.7b2(exp.f64 re)
11.0b3(sin.f64 im)
11.0b3(sin.f64 im)
Compiler

Compiled 132 to 79 computations (40.2% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.1245040290084366e-84
0.9335366765871629
Compiler

Compiled 12 to 9 computations (25% saved)

regimes161.0ms (1.7%)

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

6 calls:

55.0ms
im
46.0ms
(sin.f64 im)
28.0ms
(sin.f64 im)
19.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.8b2re
9.2b5im
0.8b2(exp.f64 re)
0.8b2(exp.f64 re)
11.0b3(sin.f64 im)
11.0b3(sin.f64 im)
Compiler

Compiled 116 to 70 computations (39.7% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.0
1.1245040290084366e-84
Compiler

Compiled 12 to 9 computations (25% saved)

regimes150.0ms (1.6%)

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

49.0ms
im
46.0ms
(sin.f64 im)
25.0ms
(sin.f64 im)
18.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.9b2re
9.2b5im
0.9b2(exp.f64 re)
0.9b2(exp.f64 re)
11.0b3(sin.f64 im)
11.0b3(sin.f64 im)
Compiler

Compiled 104 to 64 computations (38.5% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.1245040290084366e-84
0.9335366765871629
Compiler

Compiled 12 to 9 computations (25% saved)

regimes144.0ms (1.6%)

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

5 calls:

51.0ms
(sin.f64 im)
50.0ms
im
24.0ms
(sin.f64 im)
13.0ms
re
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
1.2b2re
9.4b5im
1.2b2(exp.f64 re)
11.1b3(sin.f64 im)
11.1b3(sin.f64 im)
Compiler

Compiled 84 to 51 computations (39.3% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.9999982056354294
0.9999993802247586
Compiler

Compiled 12 to 9 computations (25% saved)

regimes169.0ms (1.8%)

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

4 calls:

56.0ms
im
28.0ms
(sin.f64 im)
28.0ms
(sin.f64 im)
12.0ms
re
Results
ErrorSegmentsBranch
1.3b2re
15.7b8im
18.4b4(sin.f64 im)
18.4b4(sin.f64 im)
Compiler

Compiled 70 to 42 computations (40% saved)

bsearch28.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
28.0ms
-6767.8794052527655
-193.29980573615578
Compiler

Compiled 12 to 9 computations (25% saved)

regimes45.0ms (0.5%)

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

2 calls:

30.0ms
im
13.0ms
re
Results
ErrorSegmentsBranch
22.1b2re
27.9b5im
Compiler

Compiled 60 to 35 computations (41.7% saved)

bsearch72.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
71.0ms
-193.29980573615578
-0.06877502744472773
Compiler

Compiled 12 to 9 computations (25% saved)

regimes31.0ms (0.3%)

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

2 calls:

19.0ms
im
11.0ms
re
Results
ErrorSegmentsBranch
22.3b2re
29.1b5im
Compiler

Compiled 16 to 10 computations (37.5% saved)

bsearch82.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
81.0ms
-193.29980573615578
-0.06877502744472773
Compiler

Compiled 12 to 9 computations (25% saved)

regimes8.0ms (0.1%)

Accuracy

Total -19.8b remaining (-47.1%)

Threshold costs -19.8b (-47.1%)

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

2 calls:

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

Compiled 13 to 7 computations (46.2% saved)

simplify9.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
042136
157136
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 546812681195753/273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881728) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re)))))
(if (<=.f64 (exp.f64 re) 546812681195753/273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881728) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 9007190247541737/9007199254740992) (*.f64 (exp.f64 re) im) (sin.f64 im))
(if (<=.f64 re -7441362101461135/1099511627776) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 re -6801132289719847/35184372088832) (-.f64 1 1) (+.f64 (*.f64 re im) im))
(if (<=.f64 re -6801132289719847/35184372088832) (-.f64 1 1) im)
im
Outputs
(*.f64 (exp.f64 re) (sin.f64 im))
(if (<=.f64 (exp.f64 re) 546812681195753/273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881728) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(if (<=.f64 (exp.f64 re) 546812681195753/273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881728) 0 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) (+.f64 1/2 (*.f64 re 1/6))))))
(if (<=.f64 (exp.f64 re) 0) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 1/2 (*.f64 re re)))))
(if (<=.f64 (exp.f64 re) 0) 0 (*.f64 (sin.f64 im) (+.f64 (+.f64 re 1) (*.f64 (*.f64 re re) 1/2))))
(if (<=.f64 (exp.f64 re) 546812681195753/273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881728) (-.f64 1 1) (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 546812681195753/273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881728) 0 (*.f64 (sin.f64 im) (+.f64 re 1)))
(if (<=.f64 (exp.f64 re) 9007190247541737/9007199254740992) (*.f64 (exp.f64 re) im) (sin.f64 im))
(if (<=.f64 re -7441362101461135/1099511627776) (-.f64 1 1) (sin.f64 im))
(if (<=.f64 re -7441362101461135/1099511627776) 0 (sin.f64 im))
(if (<=.f64 re -6801132289719847/35184372088832) (-.f64 1 1) (+.f64 (*.f64 re im) im))
(if (<=.f64 re -6801132289719847/35184372088832) 0 (+.f64 im (*.f64 re im)))
(if (<=.f64 re -6801132289719847/35184372088832) (-.f64 1 1) im)
(if (<=.f64 re -6801132289719847/35184372088832) 0 im)
im
Compiler

Compiled 110 to 80 computations (27.3% saved)

soundness0.0ms (0%)

end63.0ms (0.7%)

Compiler

Compiled 94 to 54 computations (42.6% saved)

Profiling

Loading profile data...