Details

Time bar (total: 12.1s)

analyze166.0ms (1.4%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
50%50%0.1%5
50%50%0.1%6
50%40.6%9.5%7
50%39%11%8
50%33.6%16.5%9
50%32.4%17.7%10
50%29.5%20.6%11
50%28.8%21.3%12
Compiler

Compiled 14 to 11 computations (21.4% saved)

sample6.2s (51.5%)

Results
3.0s4264×body1024valid
955.0ms2014×body1024invalid
671.0ms2009×body512valid
631.0ms981×body512invalid
357.0ms248×body2048valid
290.0ms1570×body256invalid
278.0ms1735×body256valid

preprocess84.0ms (0.7%)

Algorithm
egg-herbie
Rules
816×fma-def_binary64
600×times-frac_binary64
532×div-sub_binary64
460×associate-/l*_binary64
456×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01836
13936
29336
324536
455334
5112934
6209334
7402034
8739134
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 im)) (-.f64 (exp.f64 (neg.f64 re)) (exp.f64 re)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (sin.f64 re) (*.f64 1/2 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (sin.f64 re) (fma.f64 (exp.f64 im) -1/2 (/.f64 1/2 (exp.f64 im))))
(*.f64 (*.f64 1/2 (sin.f64 im)) (-.f64 (exp.f64 (neg.f64 re)) (exp.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 im) (-.f64 (exp.f64 (neg.f64 re)) (exp.f64 re))))
(*.f64 (sin.f64 im) (*.f64 1/2 (-.f64 (exp.f64 (neg.f64 re)) (exp.f64 re))))
(*.f64 (sin.f64 im) (fma.f64 (exp.f64 re) -1/2 (/.f64 1/2 (exp.f64 re))))
Compiler

Compiled 15 to 12 computations (20% saved)

simplify81.0ms (0.7%)

Algorithm
egg-herbie
Rules
454×fma-def_binary64
444×times-frac_binary64
364×distribute-rgt-neg-in_binary64
358×neg-mul-1_binary64
346×neg-sub0_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
01118
12318
25118
312818
428617
558117
6139217
7280117
8555617
9732817
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (sin.f64 re) (fma.f64 (exp.f64 im) -1/2 (/.f64 1/2 (exp.f64 im))))

eval1.0ms (0%)

Compiler

Compiled 24 to 15 computations (37.5% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
39.5b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
39.5b
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 13 to 10 computations (23.1% saved)

localize15.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 re)
0.0b
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
5.4b
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Compiler

Compiled 35 to 13 computations (62.9% saved)

series12.0ms (0.1%)

Counts
3 → 36
Calls

12 calls:

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

rewrite368.0ms (3%)

Algorithm
egg-rewrite
egg-rewrite-iter-limit
batch-egg-rewrite
Rules
416×log1p-udef_binary64
274×associate-*r*_binary64
272×pow1_binary64
262×add-sqr-sqrt_binary64
257×*-un-lft-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01130
122830
2355030
0610
112710
2211610
0610
01118
122818
2354518
01118
033
1583
26733
374023
Stop Event
node limit
iter limit
unsound
iter limit
unsound
unsound
Counts
3 → 67
Calls
Call 1
Inputs
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(sin.f64 re)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (exp.f64 (neg.f64 im)) (neg.f64 (exp.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) (cbrt.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) (cbrt.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) (sqrt.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (exp.f64 (neg.f64 im)) 3) (pow.f64 (exp.f64 im) 3)) (+.f64 (*.f64 (exp.f64 (neg.f64 im)) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 (exp.f64 im) (exp.f64 im)) (*.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (exp.f64 (neg.f64 im)) (exp.f64 (neg.f64 im))) (*.f64 (exp.f64 im) (exp.f64 im))) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (sin.f64 re) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sin.f64 re))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sin.f64 re)))) (log.f64 (sqrt.f64 (exp.f64 (sin.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (sin.f64 re) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 (+.f64 re 1)) (cos.f64 1)) (*.f64 (cos.f64 (+.f64 re 1)) (sin.f64 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (cbrt.f64 (sin.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 re)) (sqrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4)) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 re) 1/6) (*.f64 (pow.f64 (sin.f64 re) 1/6) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 re) 1/4) (sqrt.f64 (pow.f64 (sin.f64 re) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 re) 1/4) (*.f64 (pow.f64 (sin.f64 re) 1/4) (sqrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 1/4)) (pow.f64 (sin.f64 re) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (sin.f64 re) 5/2)) (pow.f64 (sin.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 5)) (pow.f64 (sin.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (sin.f64 re) 3/2)) (pow.f64 (sin.f64 re) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2) 1/3) (cbrt.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (sin.f64 re) 5/2) 1/3) (pow.f64 (sin.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (sin.f64 re)) (cbrt.f64 (sin.f64 re))) (pow.f64 (sin.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (sin.f64 re)) (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4))) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (sin.f64 re) 1/6)) (pow.f64 (sin.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 (cos.f64 0) (cos.f64 (+.f64 re re)))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 (sin.f64 re) 1) 3) 1) (+.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) (+.f64 1 (+.f64 (sin.f64 re) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) 1) (+.f64 (+.f64 (sin.f64 re) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sin.f64 re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 re) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 re) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sin.f64 re)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (sin.f64 re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (sin.f64 re))) 2)) (cbrt.f64 (log.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (sin.f64 re)))) (sqrt.f64 (log.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (sin.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (sin.f64 re) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (sin.f64 re))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (sin.f64 re))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (sin.f64 re))) 2))))))

simplify67.0ms (0.6%)

Algorithm
egg-herbie
Rules
446×fma-def_binary64
429×distribute-rgt-in_binary64
403×*-commutative_binary64
358×associate-+l+_binary64
348×unsub-neg_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
079720
1212716
2613660
32170630
44971630
Stop Event
node limit
Counts
103 → 101
Calls
Call 1
Inputs
(*.f64 -2 im)
(+.f64 (*.f64 -2 im) (*.f64 -1/3 (pow.f64 im 3)))
(+.f64 (*.f64 -2 im) (+.f64 (*.f64 -1/60 (pow.f64 im 5)) (*.f64 -1/3 (pow.f64 im 3))))
(+.f64 (*.f64 -1/2520 (pow.f64 im 7)) (+.f64 (*.f64 -2 im) (+.f64 (*.f64 -1/60 (pow.f64 im 5)) (*.f64 -1/3 (pow.f64 im 3)))))
(-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))
(-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))
(-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))
(-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(+.f64 (*.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re)))
(+.f64 (*.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re)) (*.f64 1/240 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 5)))))
(+.f64 (*.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re)) (+.f64 (*.f64 1/240 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 5))) (*.f64 -1/10080 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 7))))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 -1/120 (*.f64 (sin.f64 re) (pow.f64 im 5))) (*.f64 -1 (*.f64 (sin.f64 re) im))))
(+.f64 (*.f64 -1/5040 (*.f64 (sin.f64 re) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 -1/120 (*.f64 (sin.f64 re) (pow.f64 im 5))) (*.f64 -1 (*.f64 (sin.f64 re) im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
Outputs
(*.f64 -2 im)
(+.f64 (*.f64 -2 im) (*.f64 -1/3 (pow.f64 im 3)))
(fma.f64 -2 im (*.f64 -1/3 (pow.f64 im 3)))
(fma.f64 -1/3 (pow.f64 im 3) (*.f64 -2 im))
(+.f64 (*.f64 -2 im) (+.f64 (*.f64 -1/60 (pow.f64 im 5)) (*.f64 -1/3 (pow.f64 im 3))))
(fma.f64 -2 im (fma.f64 -1/60 (pow.f64 im 5) (*.f64 -1/3 (pow.f64 im 3))))
(fma.f64 -2 im (fma.f64 -1/3 (pow.f64 im 3) (*.f64 -1/60 (pow.f64 im 5))))
(fma.f64 -1/3 (pow.f64 im 3) (fma.f64 -1/60 (pow.f64 im 5) (*.f64 -2 im)))
(+.f64 (*.f64 -1/2520 (pow.f64 im 7)) (+.f64 (*.f64 -2 im) (+.f64 (*.f64 -1/60 (pow.f64 im 5)) (*.f64 -1/3 (pow.f64 im 3)))))
(fma.f64 -1/2520 (pow.f64 im 7) (fma.f64 -2 im (fma.f64 -1/60 (pow.f64 im 5) (*.f64 -1/3 (pow.f64 im 3)))))
(fma.f64 -1/2520 (pow.f64 im 7) (fma.f64 -2 im (fma.f64 -1/3 (pow.f64 im 3) (*.f64 -1/60 (pow.f64 im 5)))))
(fma.f64 -1/2520 (pow.f64 im 7) (fma.f64 -1/3 (pow.f64 im 3) (fma.f64 -1/60 (pow.f64 im 5) (*.f64 -2 im))))
(fma.f64 -2 im (fma.f64 -1/2520 (pow.f64 im 7) (fma.f64 -1/3 (pow.f64 im 3) (*.f64 -1/60 (pow.f64 im 5)))))
(-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
(-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
(-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
(-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(+.f64 (*.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3))) (*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re)))
(fma.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3)) (*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re)))
(fma.f64 (*.f64 1/2 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) re (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (pow.f64 re 3) -1/12)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (+.f64 (*.f64 1/2 re) (*.f64 -1/12 (pow.f64 re 3))))
(+.f64 (*.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re)) (*.f64 1/240 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 5)))))
(fma.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re) (*.f64 1/240 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 5)))))
(fma.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re) (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (pow.f64 re 5) 1/240))))
(fma.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re) (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (+.f64 (*.f64 -1/12 (pow.f64 re 3)) (*.f64 1/240 (pow.f64 re 5)))))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (+.f64 (*.f64 1/2 re) (+.f64 (*.f64 1/240 (pow.f64 re 5)) (*.f64 -1/12 (pow.f64 re 3)))))
(+.f64 (*.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re)) (+.f64 (*.f64 1/240 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 5))) (*.f64 -1/10080 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 7))))))
(fma.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re) (fma.f64 1/240 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 5)) (*.f64 (*.f64 -1/10080 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) (pow.f64 re 7)))))
(fma.f64 -1/12 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re) (fma.f64 1/240 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (pow.f64 re 5)) (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (pow.f64 re 7) -1/10080)))))
(+.f64 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (+.f64 (*.f64 1/2 re) (*.f64 1/240 (pow.f64 re 5)))) (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (+.f64 (*.f64 -1/10080 (pow.f64 re 7)) (*.f64 -1/12 (pow.f64 re 3)))))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (+.f64 (+.f64 (*.f64 1/240 (pow.f64 re 5)) (*.f64 -1/12 (pow.f64 re 3))) (+.f64 (*.f64 -1/10080 (pow.f64 re 7)) (*.f64 1/2 re))))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (+.f64 (+.f64 (*.f64 1/2 re) (*.f64 -1/12 (pow.f64 re 3))) (+.f64 (*.f64 -1/10080 (pow.f64 re 7)) (*.f64 1/240 (pow.f64 re 5)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 im (sin.f64 re)))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 (neg.f64 im) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(-.f64 (*.f64 (pow.f64 im 3) (*.f64 (sin.f64 re) -1/6)) (*.f64 im (sin.f64 re)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 -1/120 (*.f64 (sin.f64 re) (pow.f64 im 5))) (*.f64 -1 (*.f64 (sin.f64 re) im))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (fma.f64 -1/120 (*.f64 (pow.f64 im 5) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re)))))
(-.f64 (fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (pow.f64 im 5) (*.f64 (sin.f64 re) -1/120))) (*.f64 im (sin.f64 re)))
(fma.f64 (pow.f64 im 5) (*.f64 (sin.f64 re) -1/120) (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))
(*.f64 (sin.f64 re) (-.f64 (+.f64 (*.f64 (pow.f64 im 5) -1/120) (*.f64 (pow.f64 im 3) -1/6)) im))
(*.f64 (sin.f64 re) (+.f64 (*.f64 (pow.f64 im 3) -1/6) (-.f64 (*.f64 (pow.f64 im 5) -1/120) im)))
(+.f64 (*.f64 -1/5040 (*.f64 (sin.f64 re) (pow.f64 im 7))) (+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (+.f64 (*.f64 -1/120 (*.f64 (sin.f64 re) (pow.f64 im 5))) (*.f64 -1 (*.f64 (sin.f64 re) im)))))
(fma.f64 -1/5040 (*.f64 (pow.f64 im 7) (sin.f64 re)) (fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (fma.f64 -1/120 (*.f64 (pow.f64 im 5) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))))
(fma.f64 -1/5040 (*.f64 (pow.f64 im 7) (sin.f64 re)) (-.f64 (fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (pow.f64 im 5) (*.f64 (sin.f64 re) -1/120))) (*.f64 im (sin.f64 re))))
(+.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 5) -1/120) im)) (*.f64 (sin.f64 re) (+.f64 (*.f64 (pow.f64 im 7) -1/5040) (*.f64 (pow.f64 im 3) -1/6))))
(*.f64 (sin.f64 re) (+.f64 (-.f64 (*.f64 (pow.f64 im 5) -1/120) im) (+.f64 (*.f64 (pow.f64 im 7) -1/5040) (*.f64 (pow.f64 im 3) -1/6))))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 (sin.f64 re)))
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(+.f64 re (*.f64 (pow.f64 re 3) -1/6))
(fma.f64 (pow.f64 re 3) -1/6 re)
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (*.f64 (pow.f64 re 3) -1/6)))
(fma.f64 (pow.f64 re 5) 1/120 (fma.f64 (pow.f64 re 3) -1/6 re))
(fma.f64 (pow.f64 re 3) -1/6 (fma.f64 (pow.f64 re 5) 1/120 re))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (*.f64 (pow.f64 re 7) -1/5040))))
(+.f64 (fma.f64 (pow.f64 re 5) 1/120 (fma.f64 (pow.f64 re 3) -1/6 re)) (*.f64 (pow.f64 re 7) -1/5040))
(fma.f64 (pow.f64 re 5) 1/120 (fma.f64 (pow.f64 re 3) -1/6 (fma.f64 (pow.f64 re 7) -1/5040 re)))

eval30.0ms (0.2%)

Compiler

Compiled 1866 to 855 computations (54.2% saved)

prune17.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New974101
Fresh000
Picked011
Done000
Total975102
Error
0.1b
Counts
102 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
1.2b
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
1.2b
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
1.5b
(*.f64 (neg.f64 im) (sin.f64 re))
39.5b
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
40.6b
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 61 to 45 computations (26.2% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series6.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite58.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
495×pow1_binary64
474×add-sqr-sqrt_binary64
454×add-log-exp_binary64
453×log1p-expm1-u_binary64
453×expm1-log1p-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify98.0ms (0.8%)

Algorithm
egg-herbie
Rules
709×distribute-rgt-neg-in_binary64
604×fma-def_binary64
575×distribute-lft-neg-in_binary64
486×fma-neg_binary64
442×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
029247
181241
2223230
3709226
42279226
54410226
66350226
77867226
Stop Event
node limit
Counts
37 → 23
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 re im))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im)))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im))))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/5040 (*.f64 (pow.f64 re 7) im)))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
Outputs
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 re im))
(neg.f64 (*.f64 re im))
(*.f64 re (neg.f64 im))
(*.f64 im (neg.f64 re))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im)))
(fma.f64 -1 (*.f64 re im) (*.f64 1/6 (*.f64 im (pow.f64 re 3))))
(*.f64 im (+.f64 (neg.f64 re) (*.f64 1/6 (pow.f64 re 3))))
(*.f64 im (fma.f64 1/6 (pow.f64 re 3) (neg.f64 re)))
(*.f64 im (-.f64 (*.f64 1/6 (pow.f64 re 3)) re))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im))))
(fma.f64 -1/120 (*.f64 im (pow.f64 re 5)) (fma.f64 -1 (*.f64 re im) (*.f64 1/6 (*.f64 im (pow.f64 re 3)))))
(fma.f64 -1/120 (*.f64 im (pow.f64 re 5)) (*.f64 im (+.f64 (neg.f64 re) (*.f64 1/6 (pow.f64 re 3)))))
(*.f64 im (+.f64 (fma.f64 1/6 (pow.f64 re 3) (neg.f64 re)) (*.f64 -1/120 (pow.f64 re 5))))
(*.f64 im (fma.f64 1/6 (pow.f64 re 3) (fma.f64 -1/120 (pow.f64 re 5) (neg.f64 re))))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/5040 (*.f64 (pow.f64 re 7) im)))))
(fma.f64 -1/120 (*.f64 im (pow.f64 re 5)) (fma.f64 -1 (*.f64 re im) (fma.f64 1/6 (*.f64 im (pow.f64 re 3)) (*.f64 1/5040 (*.f64 im (pow.f64 re 7))))))
(fma.f64 -1/120 (*.f64 im (pow.f64 re 5)) (-.f64 (*.f64 im (+.f64 (*.f64 1/6 (pow.f64 re 3)) (*.f64 1/5040 (pow.f64 re 7)))) (*.f64 re im)))
(*.f64 im (+.f64 (fma.f64 1/6 (pow.f64 re 3) (*.f64 1/5040 (pow.f64 re 7))) (-.f64 (*.f64 -1/120 (pow.f64 re 5)) re)))
(*.f64 im (-.f64 (fma.f64 -1/120 (pow.f64 re 5) (fma.f64 1/6 (pow.f64 re 3) (*.f64 1/5040 (pow.f64 re 7)))) re))
(*.f64 im (fma.f64 -1/120 (pow.f64 re 5) (fma.f64 1/6 (pow.f64 re 3) (fma.f64 1/5040 (pow.f64 re 7) (neg.f64 re)))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))

localize18.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 re)
0.0b
(-.f64 (*.f64 (pow.f64 im 3) -1/6) im)
0.1b
(*.f64 (pow.f64 im 3) -1/6)
0.1b
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
Compiler

Compiled 33 to 22 computations (33.3% saved)

series7.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

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

rewrite77.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
646×prod-diff_binary64
478×log-prod_binary64
333×fma-def_binary64
310×pow-prod-down_binary64
266×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01032
121832
2264232
Stop Event
node limit
Counts
3 → 159
Calls
Call 1
Inputs
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (pow.f64 im 3) -1/6)
(-.f64 (*.f64 (pow.f64 im 3) -1/6) im)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (pow.f64 im 3) -1/6) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)) (*.f64 (sin.f64 re) (neg.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3)) (sin.f64 re)) (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im)) (sin.f64 re)) (fma.f64 (pow.f64 im 3) -1/6 im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3))) (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im))) (fma.f64 (pow.f64 im 3) -1/6 im))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6) (*.f64 (sin.f64 re) (neg.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 im 3) -1/6) (sin.f64 re) (*.f64 (neg.f64 im) (sin.f64 re)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (*.f64 (pow.f64 im 3) -1/6))) 2)) (log.f64 (cbrt.f64 (exp.f64 (*.f64 (pow.f64 im 3) -1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 (pow.f64 im 3) -1/6)))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 (pow.f64 im 3) -1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (pow.f64 im 3) -1/6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 im 3) -1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 im 6) 1/36) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 im (cbrt.f64 -1/6)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 im 9) -1/216) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 im 6) 1/36))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (pow.f64 im 3) -1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 im 3) -1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 im 9) -1/216))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 im 3) -1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 im 3) -1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (pow.f64 im 3) -1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 im 3) -1/6)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 im (cbrt.f64 -1/6))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 im 9) -1/216)) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 3) -1/6) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 3) -1/6) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (fma.f64 (neg.f64 im) 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (+.f64 (neg.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (fma.f64 -1 im im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 im) 2)) (cbrt.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 im) (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))) (log.f64 (sqrt.f64 (exp.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3)) (/.f64 1 (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im)) (/.f64 1 (fma.f64 (pow.f64 im 3) -1/6 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2) (sqrt.f64 im)) (-.f64 (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2)) (sqrt.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36)) (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (pow.f64 im 3) -1/6 im) (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3)) (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im)) (fma.f64 (pow.f64 im 3) -1/6 im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3))) (neg.f64 (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im))) (neg.f64 (fma.f64 (pow.f64 im 3) -1/6 im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 im 9) -1/216 (pow.f64 (neg.f64 im) 3)) (fma.f64 (pow.f64 im 6) 1/36 (-.f64 (pow.f64 (neg.f64 im) 2) (*.f64 (*.f64 (pow.f64 im 3) -1/6) (neg.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 im 6) 1/36) (pow.f64 (neg.f64 im) 2)) (fma.f64 (pow.f64 im 3) -1/6 (neg.f64 (neg.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36)) (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (pow.f64 im 3) -1/6 im) (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 im 3) -1/6))) (exp.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (exp.f64 (*.f64 (pow.f64 im 3) -1/6)) (+.f64 1 (expm1.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 im 3) -1/6))) (+.f64 1 (expm1.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 im 3) -1/6))) (exp.f64 (neg.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 im 3) -1/6))) (/.f64 1 (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (neg.f64 im)) (exp.f64 (*.f64 (pow.f64 im 3) -1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (neg.f64 im)) (+.f64 1 (expm1.f64 (*.f64 (pow.f64 im 3) -1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (/.f64 1 (exp.f64 im)) (+.f64 1 (expm1.f64 (*.f64 (pow.f64 im 3) -1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 im (*.f64 (*.f64 im im) -1/6) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 im (*.f64 (*.f64 im im) -1/6) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 im 3) -1/6 (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 im 3) -1/6 (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1/6 (pow.f64 im 3) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 im 3) -1/6) 1 (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 im 3) -1/6) 1 (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 1 (fma.f64 (neg.f64 im) 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 1 (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 1 (+.f64 (neg.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (pow.f64 im 3) -1/6) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (pow.f64 im 3) -1/6) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (fma.f64 (neg.f64 im) 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (+.f64 (neg.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (neg.f64 im) (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im im) (*.f64 im -1/6) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (cbrt.f64 -1/6)) (pow.f64 (*.f64 im (cbrt.f64 -1/6)) 2) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 im (cbrt.f64 -1/6)) (pow.f64 (*.f64 im (cbrt.f64 -1/6)) 2) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 im (cbrt.f64 -1/6)) 2) (*.f64 im (cbrt.f64 -1/6)) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 im (cbrt.f64 -1/6)) 2) (*.f64 im (cbrt.f64 -1/6)) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (fma.f64 (neg.f64 im) 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (+.f64 (neg.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (fma.f64 (neg.f64 im) 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (+.f64 (neg.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 im) 2) (neg.f64 (cbrt.f64 im)) (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2)) (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2)) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2)) (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2)) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (fma.f64 (neg.f64 im) 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (+.f64 (neg.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 im) (neg.f64 (sqrt.f64 im)) (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3)) (/.f64 1 (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36))) (fma.f64 (neg.f64 im) 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3)) (/.f64 1 (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36))) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3)) (/.f64 1 (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36))) (+.f64 (neg.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im)) (/.f64 1 (fma.f64 (pow.f64 im 3) -1/6 im)) (fma.f64 (neg.f64 im) 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im)) (/.f64 1 (fma.f64 (pow.f64 im 3) -1/6 im)) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im)) (/.f64 1 (fma.f64 (pow.f64 im 3) -1/6 im)) (+.f64 (neg.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 im 3/2) (*.f64 (pow.f64 im 3/2) -1/6) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 im 3/2) (*.f64 (pow.f64 im 3/2) -1/6) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (neg.f64 im)) 2) (cbrt.f64 (neg.f64 im)) (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (neg.f64 im)) (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (sqrt.f64 im)) (sqrt.f64 im) (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1 im (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2) (sqrt.f64 im)) (-.f64 (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2)) (sqrt.f64 im)) (fma.f64 (neg.f64 im) 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2) (sqrt.f64 im)) (-.f64 (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2)) (sqrt.f64 im)) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2) (sqrt.f64 im)) (-.f64 (*.f64 (sqrt.f64 -1/6) (pow.f64 im 3/2)) (sqrt.f64 im)) (+.f64 (neg.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (pow.f64 (cbrt.f64 im) 2)) (cbrt.f64 im) (*.f64 (pow.f64 im 3) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/6 im) (*.f64 im im) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/6 im) (*.f64 im im) (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/6 (*.f64 im im)) im (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/6 (*.f64 im im)) im (*.f64 (neg.f64 im) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/6 (pow.f64 im 3/2)) (pow.f64 im 3/2) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/6 (pow.f64 im 3/2)) (pow.f64 im 3/2) (*.f64 (neg.f64 im) 1))))))

simplify80.0ms (0.7%)

Algorithm
egg-herbie
Rules
680×unsub-neg_binary64
619×associate-+l+_binary64
435×fma-neg_binary64
415×associate-+r+_binary64
401×distribute-rgt-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
038644
1107606
2341576
31818576
44712576
Stop Event
node limit
Counts
207 → 178
Calls
Call 1
Inputs
(*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (+.f64 (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (*.f64 1/120 (*.f64 (pow.f64 re 5) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (+.f64 (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (*.f64 1/120 (*.f64 (pow.f64 re 5) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))))))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1 im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(*.f64 -1/6 (pow.f64 im 3))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(*.f64 -1/6 (pow.f64 im 3))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
Outputs
(*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(fma.f64 -1/6 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 3)) (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (fma.f64 -1/6 (pow.f64 re 3) re))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (fma.f64 -1/6 (pow.f64 re 3) re))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (+.f64 (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (*.f64 1/120 (*.f64 (pow.f64 re 5) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))))
(fma.f64 -1/6 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 3)) (fma.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (*.f64 1/120 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 5)))))
(fma.f64 -1/6 (*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (pow.f64 re 3)) (*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 re (*.f64 1/120 (pow.f64 re 5)))))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (fma.f64 1/120 (pow.f64 re 5) re)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (fma.f64 -1/6 (pow.f64 re 3) re)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (+.f64 (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (*.f64 1/120 (*.f64 (pow.f64 re 5) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))))))
(fma.f64 -1/6 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 3)) (fma.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (fma.f64 -1/5040 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 7)) (*.f64 1/120 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 5))))))
(+.f64 (*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3)))) (*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (*.f64 -1/5040 (pow.f64 re 7)))))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 (fma.f64 -1/6 (pow.f64 re 3) re) (fma.f64 1/120 (pow.f64 re 5) (*.f64 -1/5040 (pow.f64 re 7)))))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (+.f64 (fma.f64 -1/6 (pow.f64 re 3) re) (fma.f64 1/120 (pow.f64 re 5) (*.f64 -1/5040 (pow.f64 re 7)))))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 im (sin.f64 re)))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 (sin.f64 re) (neg.f64 im))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1/6 (pow.f64 im 3))
(*.f64 -1 im)
(neg.f64 im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(*.f64 -1/6 (pow.f64 im 3))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(*.f64 -1/6 (pow.f64 im 3))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))

localize22.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
5.4b
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Compiler

Compiled 31 to 12 computations (61.3% saved)

series8.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite93.0ms (0.8%)

Algorithm
egg-rewrite-iter-limit
batch-egg-rewrite
Rules
108×add-sqr-sqrt_binary64
103×*-un-lft-identity_binary64
103×pow1_binary64
102×add-log-exp_binary64
100×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01016
120916
2330216
01016
Stop Event
iter limit
unsound
Counts
1 → 6
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) (*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))) (*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))))

simplify87.0ms (0.7%)

Algorithm
egg-herbie
Rules
699×distribute-rgt-neg-in_binary64
572×distribute-lft-neg-in_binary64
509×fma-def_binary64
446×unswap-sqr_binary64
409×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
039407
1108404
2265396
3767368
42324368
54643368
66770368
Stop Event
node limit
Counts
30 → 17
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 -1 (*.f64 re im))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 -1/120 (*.f64 re (pow.f64 im 5))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 -1/120 (*.f64 re (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 re (pow.f64 im 7))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
Outputs
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 -1 (*.f64 re im))
(neg.f64 (*.f64 im re))
(*.f64 im (neg.f64 re))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(fma.f64 -1 (*.f64 im re) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(-.f64 (*.f64 -1/6 (*.f64 re (pow.f64 im 3))) (*.f64 im re))
(*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 -1/120 (*.f64 re (pow.f64 im 5))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(fma.f64 -1 (*.f64 im re) (fma.f64 -1/120 (*.f64 re (pow.f64 im 5)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(-.f64 (fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (*.f64 -1/120 (*.f64 re (pow.f64 im 5)))) (*.f64 im re))
(fma.f64 re (*.f64 -1/120 (pow.f64 im 5)) (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(*.f64 re (-.f64 (fma.f64 -1/6 (pow.f64 im 3) (*.f64 -1/120 (pow.f64 im 5))) im))
(+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 -1/120 (*.f64 re (pow.f64 im 5))) (+.f64 (*.f64 -1/5040 (*.f64 re (pow.f64 im 7))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(fma.f64 -1 (*.f64 im re) (fma.f64 -1/120 (*.f64 re (pow.f64 im 5)) (fma.f64 -1/5040 (*.f64 re (pow.f64 im 7)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(-.f64 (fma.f64 -1/120 (*.f64 re (pow.f64 im 5)) (fma.f64 -1/6 (*.f64 re (pow.f64 im 3)) (*.f64 re (*.f64 (pow.f64 im 7) -1/5040)))) (*.f64 im re))
(+.f64 (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (*.f64 re (+.f64 (*.f64 -1/120 (pow.f64 im 5)) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 re (+.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (fma.f64 -1/120 (pow.f64 im 5) (*.f64 -1/5040 (pow.f64 im 7)))))
(*.f64 re (+.f64 (*.f64 -1/120 (pow.f64 im 5)) (-.f64 (fma.f64 -1/5040 (pow.f64 im 7) (*.f64 -1/6 (pow.f64 im 3))) im)))
(*.f64 re (+.f64 (fma.f64 -1/5040 (pow.f64 im 7) (*.f64 -1/120 (pow.f64 im 5))) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 1/2 (*.f64 re (-.f64 (exp.f64 (*.f64 -1 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) re))
(*.f64 re (fma.f64 -1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))

localize21.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
0.1b
(*.f64 (sin.f64 re) (pow.f64 im 3))
0.1b
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
0.1b
(*.f64 (sin.f64 re) im)
Compiler

Compiled 51 to 27 computations (47.1% saved)

series14.0ms (0.1%)

Counts
4 → 19
Calls

24 calls:

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

rewrite155.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
613×log-prod_binary64
387×pow-prod-down_binary64
307×pow2_binary64
274×pow-unpow_binary64
255×fma-def_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify73.0ms (0.6%)

Algorithm
egg-herbie
Rules
810×fma-def_binary64
786×associate-+l+_binary64
520×associate-*l*_binary64
492×associate-+r+_binary64
442×distribute-rgt-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
079486
1232455
2842410
33711408
46040408
Stop Event
node limit
Counts
214 → 229
Calls
Call 1
Inputs
(*.f64 re im)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 re im))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 re im)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) im)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 re im))))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (+.f64 (*.f64 1/30240 (*.f64 (pow.f64 re 7) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(*.f64 re (pow.f64 im 3))
(+.f64 (*.f64 re (pow.f64 im 3)) (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 3))))
(+.f64 (*.f64 re (pow.f64 im 3)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 3)))))
(+.f64 (*.f64 re (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (pow.f64 im 3))) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 3))))))
(*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re)
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re))
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re) (*.f64 (pow.f64 re 5) (+.f64 (*.f64 -1/720 (pow.f64 im 3)) (*.f64 -1/120 im)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 (*.f64 1/30240 (pow.f64 im 3)) (*.f64 1/5040 im)) (pow.f64 re 7)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re) (*.f64 (pow.f64 re 5) (+.f64 (*.f64 -1/720 (pow.f64 im 3)) (*.f64 -1/120 im))))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
Outputs
(*.f64 re im)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 re im))
(fma.f64 -1/6 (*.f64 im (pow.f64 re 3)) (*.f64 re im))
(*.f64 im (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(*.f64 im (fma.f64 -1/6 (pow.f64 re 3) re))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 re im)))
(fma.f64 1/120 (*.f64 im (pow.f64 re 5)) (fma.f64 -1/6 (*.f64 im (pow.f64 re 3)) (*.f64 re im)))
(fma.f64 1/120 (*.f64 im (pow.f64 re 5)) (*.f64 im (+.f64 re (*.f64 -1/6 (pow.f64 re 3)))))
(*.f64 im (+.f64 (fma.f64 -1/6 (pow.f64 re 3) (*.f64 1/120 (pow.f64 re 5))) re))
(*.f64 im (+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (*.f64 1/120 (pow.f64 re 5)))))
(*.f64 im (+.f64 (*.f64 1/120 (pow.f64 re 5)) (fma.f64 -1/6 (pow.f64 re 3) re)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) im)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 re im))))
(fma.f64 1/120 (*.f64 im (pow.f64 re 5)) (fma.f64 -1/5040 (*.f64 im (pow.f64 re 7)) (fma.f64 -1/6 (*.f64 im (pow.f64 re 3)) (*.f64 re im))))
(fma.f64 1/120 (*.f64 im (pow.f64 re 5)) (fma.f64 -1/5040 (*.f64 im (pow.f64 re 7)) (*.f64 im (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))))
(*.f64 im (+.f64 (fma.f64 -1/6 (pow.f64 re 3) re) (fma.f64 1/120 (pow.f64 re 5) (*.f64 -1/5040 (pow.f64 re 7)))))
(*.f64 im (+.f64 (fma.f64 1/120 (pow.f64 re 5) (*.f64 -1/5040 (pow.f64 re 7))) (fma.f64 -1/6 (pow.f64 re 3) re)))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(*.f64 (*.f64 -1/6 re) (pow.f64 im 3))
(*.f64 re (*.f64 -1/6 (pow.f64 im 3)))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(fma.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (*.f64 (*.f64 -1/6 re) (pow.f64 im 3)))
(*.f64 (pow.f64 im 3) (+.f64 (*.f64 re -1/6) (*.f64 (pow.f64 re 3) 1/36)))
(*.f64 (pow.f64 im 3) (fma.f64 re -1/6 (*.f64 (pow.f64 re 3) 1/36)))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(fma.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (fma.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3)) (*.f64 (*.f64 -1/6 re) (pow.f64 im 3))))
(fma.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (*.f64 (pow.f64 im 3) (+.f64 (*.f64 re -1/6) (*.f64 (pow.f64 re 5) -1/720))))
(*.f64 (pow.f64 im 3) (+.f64 (*.f64 re -1/6) (fma.f64 (pow.f64 re 3) 1/36 (*.f64 (pow.f64 re 5) -1/720))))
(*.f64 (pow.f64 im 3) (+.f64 (*.f64 (pow.f64 re 3) 1/36) (fma.f64 re -1/6 (*.f64 (pow.f64 re 5) -1/720))))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (+.f64 (*.f64 1/30240 (*.f64 (pow.f64 re 7) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(fma.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (fma.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3)) (fma.f64 1/30240 (*.f64 (pow.f64 re 7) (pow.f64 im 3)) (*.f64 (*.f64 -1/6 re) (pow.f64 im 3)))))
(+.f64 (*.f64 (pow.f64 im 3) (+.f64 (*.f64 re -1/6) (*.f64 (pow.f64 re 7) 1/30240))) (*.f64 (pow.f64 im 3) (+.f64 (*.f64 (pow.f64 re 3) 1/36) (*.f64 (pow.f64 re 5) -1/720))))
(*.f64 (pow.f64 im 3) (+.f64 (fma.f64 (pow.f64 re 3) 1/36 (*.f64 (pow.f64 re 5) -1/720)) (fma.f64 re -1/6 (*.f64 (pow.f64 re 7) 1/30240))))
(*.f64 (pow.f64 im 3) (+.f64 (fma.f64 (pow.f64 re 5) -1/720 (*.f64 (pow.f64 re 7) 1/30240)) (fma.f64 re -1/6 (*.f64 (pow.f64 re 3) 1/36))))
(*.f64 re (pow.f64 im 3))
(+.f64 (*.f64 re (pow.f64 im 3)) (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 3))))
(fma.f64 re (pow.f64 im 3) (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 3))))
(*.f64 (pow.f64 im 3) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(*.f64 (pow.f64 im 3) (fma.f64 -1/6 (pow.f64 re 3) re))
(+.f64 (*.f64 re (pow.f64 im 3)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 3)))))
(fma.f64 re (pow.f64 im 3) (fma.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (*.f64 (*.f64 1/120 (pow.f64 re 5)) (pow.f64 im 3))))
(fma.f64 re (pow.f64 im 3) (*.f64 (pow.f64 im 3) (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 1/120 (pow.f64 re 5)))))
(*.f64 (pow.f64 im 3) (+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (*.f64 1/120 (pow.f64 re 5)))))
(*.f64 (pow.f64 im 3) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (fma.f64 -1/6 (pow.f64 re 3) re)))
(+.f64 (*.f64 re (pow.f64 im 3)) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (pow.f64 im 3))) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 3))))))
(fma.f64 re (pow.f64 im 3) (fma.f64 -1/5040 (*.f64 (pow.f64 re 7) (pow.f64 im 3)) (fma.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (*.f64 (*.f64 1/120 (pow.f64 re 5)) (pow.f64 im 3)))))
(+.f64 (*.f64 (pow.f64 im 3) (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 1/120 (pow.f64 re 5)))) (*.f64 (pow.f64 im 3) (+.f64 re (*.f64 -1/5040 (pow.f64 re 7)))))
(*.f64 (pow.f64 im 3) (+.f64 (fma.f64 -1/6 (pow.f64 re 3) (*.f64 1/120 (pow.f64 re 5))) (+.f64 re (*.f64 -1/5040 (pow.f64 re 7)))))
(*.f64 (pow.f64 im 3) (+.f64 (fma.f64 1/120 (pow.f64 re 5) (*.f64 -1/5040 (pow.f64 re 7))) (fma.f64 -1/6 (pow.f64 re 3) re)))
(*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re)
(*.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re))
(fma.f64 (fma.f64 1/6 im (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3) (*.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(fma.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (*.f64 (pow.f64 re 3) (fma.f64 im 1/6 (*.f64 (pow.f64 im 3) 1/36))))
(fma.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (*.f64 (pow.f64 re 3) (fma.f64 (pow.f64 im 3) 1/36 (*.f64 im 1/6))))
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re) (*.f64 (pow.f64 re 5) (+.f64 (*.f64 -1/720 (pow.f64 im 3)) (*.f64 -1/120 im)))))
(fma.f64 (fma.f64 1/6 im (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3) (fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (*.f64 (pow.f64 re 5) (fma.f64 -1/720 (pow.f64 im 3) (*.f64 im -1/120)))))
(fma.f64 (pow.f64 re 3) (fma.f64 im 1/6 (*.f64 (pow.f64 im 3) 1/36)) (fma.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (*.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120)))))
(fma.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (fma.f64 (pow.f64 re 3) (fma.f64 (pow.f64 im 3) 1/36 (*.f64 im 1/6)) (*.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 (*.f64 1/30240 (pow.f64 im 3)) (*.f64 1/5040 im)) (pow.f64 re 7)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re) (*.f64 (pow.f64 re 5) (+.f64 (*.f64 -1/720 (pow.f64 im 3)) (*.f64 -1/120 im))))))
(fma.f64 (fma.f64 1/6 im (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3) (fma.f64 (fma.f64 1/30240 (pow.f64 im 3) (*.f64 im 1/5040)) (pow.f64 re 7) (fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (*.f64 (pow.f64 re 5) (fma.f64 -1/720 (pow.f64 im 3) (*.f64 im -1/120))))))
(fma.f64 (pow.f64 re 3) (fma.f64 im 1/6 (*.f64 (pow.f64 im 3) 1/36)) (fma.f64 (pow.f64 re 7) (fma.f64 (pow.f64 im 3) 1/30240 (*.f64 im 1/5040)) (fma.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (*.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120))))))
(fma.f64 (pow.f64 re 3) (fma.f64 im 1/6 (*.f64 (pow.f64 im 3) 1/36)) (fma.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (fma.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120)) (*.f64 (pow.f64 re 7) (fma.f64 (pow.f64 im 3) 1/30240 (*.f64 im 1/5040))))))
(fma.f64 (pow.f64 re 3) (fma.f64 (pow.f64 im 3) 1/36 (*.f64 im 1/6)) (fma.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (fma.f64 (pow.f64 re 7) (fma.f64 im 1/5040 (*.f64 (pow.f64 im 3) 1/30240)) (*.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120))))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 im (sin.f64 re)))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 (neg.f64 im) (sin.f64 re))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))

eval240.0ms (2%)

Compiler

Compiled 10567 to 5809 computations (45% saved)

prune107.0ms (0.9%)

Pruning

26 alts after pruning (22 fresh and 4 done)

PrunedKeptTotal
New55822580
Fresh000
Picked101
Done044
Total55926585
Error
0.0b
Counts
585 → 26
Alt Table
Click to see full alt table
StatusErrorProgram
38.4b
(*.f64 (neg.f64 im) (*.f64 (pow.f64 (pow.f64 (sin.f64 re) 5/2) 1/3) (pow.f64 (sin.f64 re) 1/6)))
42.0b
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
2.1b
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 3)
17.4b
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
26.7b
(*.f64 (neg.f64 im) re)
8.7b
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (sin.f64 re) 3)))
1.5b
(*.f64 (neg.f64 im) (sin.f64 re))
42.0b
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
26.5b
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
35.1b
(*.f64 (neg.f64 im) (exp.f64 (log.f64 (sin.f64 re))))
34.2b
(*.f64 (sin.f64 re) (fma.f64 (sqrt.f64 im) (neg.f64 (sqrt.f64 im)) (*.f64 (pow.f64 im 3) -1/6)))
17.4b
(*.f64 (neg.f64 im) (/.f64 (-.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) 1) (+.f64 (+.f64 (sin.f64 re) 1) 1)))
23.1b
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) im)) 2)))
39.5b
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.2b
(*.f64 (sin.f64 re) (fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im)))
26.5b
(*.f64 re (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
2.2b
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
40.6b
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
34.2b
(fma.f64 (*.f64 (neg.f64 (sin.f64 re)) (sqrt.f64 im)) (sqrt.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
2.0b
(*.f64 (sin.f64 re) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3))
25.2b
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2)
1.2b
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
1.5b
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
1.2b
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
17.3b
(*.f64 (neg.f64 im) (-.f64 (+.f64 (sin.f64 re) 1) 1))
2.4b
(*.f64 (sin.f64 re) (fma.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im)))
Compiler

Compiled 666 to 495 computations (25.7% saved)

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 re)
0.1b
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
0.1b
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
0.1b
(*.f64 (pow.f64 im 3) -1/6)
Compiler

Compiled 39 to 23 computations (41% saved)

series5.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
re
@inf
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
1.0ms
re
@-inf
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
1.0ms
re
@0
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
0.0ms
im
@0
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
0.0ms
im
@-inf
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))

rewrite63.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
964×pow1_binary64
897×add-log-exp_binary64
896×log1p-expm1-u_binary64
896×expm1-log1p-u_binary64
112×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify86.0ms (0.7%)

Algorithm
egg-herbie
Rules
727×associate-+l+_binary64
585×sub-neg_binary64
477×fma-def_binary64
474×associate-+r+_binary64
408×unswap-sqr_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
059884
1166870
2607767
32634767
44953767
57239767
Stop Event
node limit
Counts
85 → 59
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re)
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re))
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re) (*.f64 (pow.f64 re 5) (+.f64 (*.f64 -1/720 (pow.f64 im 3)) (*.f64 -1/120 im)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 (*.f64 1/30240 (pow.f64 im 3)) (*.f64 1/5040 im)) (pow.f64 re 7)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re) (*.f64 (pow.f64 re 5) (+.f64 (*.f64 -1/720 (pow.f64 im 3)) (*.f64 -1/120 im))))))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (+.f64 (*.f64 1/30240 (*.f64 (pow.f64 re 7) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
Outputs
(*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re)
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re)
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re))
(fma.f64 (fma.f64 1/6 im (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3) (*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re))
(fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (*.f64 (fma.f64 im 1/6 (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3)))
(fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (*.f64 (fma.f64 (pow.f64 im 3) 1/36 (*.f64 im 1/6)) (pow.f64 re 3)))
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re) (*.f64 (pow.f64 re 5) (+.f64 (*.f64 -1/720 (pow.f64 im 3)) (*.f64 -1/120 im)))))
(fma.f64 (fma.f64 1/6 im (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3) (fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (*.f64 (pow.f64 re 5) (fma.f64 -1/720 (pow.f64 im 3) (*.f64 im -1/120)))))
(fma.f64 (fma.f64 im 1/6 (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3) (fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (*.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120)))))
(fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (fma.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120)) (*.f64 (fma.f64 (pow.f64 im 3) 1/36 (*.f64 im 1/6)) (pow.f64 re 3))))
(fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (fma.f64 (fma.f64 im 1/6 (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3) (*.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120)))))
(+.f64 (*.f64 (+.f64 (*.f64 1/6 im) (*.f64 1/36 (pow.f64 im 3))) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 (*.f64 1/30240 (pow.f64 im 3)) (*.f64 1/5040 im)) (pow.f64 re 7)) (+.f64 (*.f64 (+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im)) re) (*.f64 (pow.f64 re 5) (+.f64 (*.f64 -1/720 (pow.f64 im 3)) (*.f64 -1/120 im))))))
(fma.f64 (fma.f64 1/6 im (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3) (fma.f64 (fma.f64 1/30240 (pow.f64 im 3) (*.f64 im 1/5040)) (pow.f64 re 7) (fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (*.f64 (pow.f64 re 5) (fma.f64 -1/720 (pow.f64 im 3) (*.f64 im -1/120))))))
(fma.f64 (fma.f64 im 1/6 (*.f64 (pow.f64 im 3) 1/36)) (pow.f64 re 3) (fma.f64 (fma.f64 (pow.f64 im 3) 1/30240 (*.f64 im 1/5040)) (pow.f64 re 7) (fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (*.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120))))))
(fma.f64 (fma.f64 (pow.f64 im 3) 1/30240 (*.f64 im 1/5040)) (pow.f64 re 7) (fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (fma.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120)) (*.f64 (fma.f64 (pow.f64 im 3) 1/36 (*.f64 im 1/6)) (pow.f64 re 3)))))
(fma.f64 (fma.f64 (pow.f64 im 3) 1/36 (*.f64 im 1/6)) (pow.f64 re 3) (fma.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) re (fma.f64 (pow.f64 re 5) (fma.f64 (pow.f64 im 3) -1/720 (*.f64 im -1/120)) (*.f64 (fma.f64 (pow.f64 im 3) 1/30240 (*.f64 im 1/5040)) (pow.f64 re 7)))))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 im (sin.f64 re)))
(*.f64 (neg.f64 im) (sin.f64 re))
(*.f64 im (neg.f64 (sin.f64 re)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (neg.f64 (*.f64 im (sin.f64 re))))
(fma.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) re))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(fma.f64 1/36 (*.f64 (pow.f64 im 3) (pow.f64 re 3)) (*.f64 -1/6 (*.f64 (pow.f64 im 3) re)))
(*.f64 (pow.f64 im 3) (+.f64 (*.f64 -1/6 re) (*.f64 1/36 (pow.f64 re 3))))
(*.f64 (pow.f64 im 3) (fma.f64 1/36 (pow.f64 re 3) (*.f64 -1/6 re)))
(*.f64 (pow.f64 im 3) (fma.f64 -1/6 re (*.f64 1/36 (pow.f64 re 3))))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(fma.f64 1/36 (*.f64 (pow.f64 im 3) (pow.f64 re 3)) (fma.f64 -1/720 (*.f64 (pow.f64 im 3) (pow.f64 re 5)) (*.f64 -1/6 (*.f64 (pow.f64 im 3) re))))
(fma.f64 1/36 (*.f64 (pow.f64 im 3) (pow.f64 re 3)) (*.f64 (pow.f64 im 3) (+.f64 (*.f64 -1/6 re) (*.f64 (pow.f64 re 5) -1/720))))
(*.f64 (pow.f64 im 3) (+.f64 (*.f64 -1/6 re) (fma.f64 1/36 (pow.f64 re 3) (*.f64 (pow.f64 re 5) -1/720))))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (+.f64 (*.f64 1/30240 (*.f64 (pow.f64 re 7) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(fma.f64 1/36 (*.f64 (pow.f64 im 3) (pow.f64 re 3)) (fma.f64 -1/720 (*.f64 (pow.f64 im 3) (pow.f64 re 5)) (fma.f64 1/30240 (*.f64 (pow.f64 im 3) (pow.f64 re 7)) (*.f64 -1/6 (*.f64 (pow.f64 im 3) re)))))
(+.f64 (*.f64 (pow.f64 im 3) (+.f64 (*.f64 1/30240 (pow.f64 re 7)) (*.f64 -1/6 re))) (*.f64 (pow.f64 im 3) (+.f64 (*.f64 1/36 (pow.f64 re 3)) (*.f64 (pow.f64 re 5) -1/720))))
(*.f64 (pow.f64 im 3) (+.f64 (fma.f64 -1/6 re (*.f64 1/30240 (pow.f64 re 7))) (fma.f64 1/36 (pow.f64 re 3) (*.f64 (pow.f64 re 5) -1/720))))
(*.f64 (pow.f64 im 3) (+.f64 (fma.f64 1/36 (pow.f64 re 3) (*.f64 (pow.f64 re 5) -1/720)) (fma.f64 -1/6 re (*.f64 1/30240 (pow.f64 re 7)))))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))

localize4.0ms (0%)

Compiler

Compiled 10 to 4 computations (60% saved)

localize12.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 re)
0.1b
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
0.3b
(*.f64 -1/6 (sin.f64 re))
Compiler

Compiled 23 to 14 computations (39.1% saved)

series3.0ms (0%)

Counts
2 → 28
Calls

9 calls:

TimeVariablePointExpression
0.0ms
re
@0
(*.f64 -1/6 (sin.f64 re))
0.0ms
re
@-inf
(*.f64 -1/6 (sin.f64 re))
0.0ms
re
@inf
(*.f64 -1/6 (sin.f64 re))
0.0ms
re
@0
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
0.0ms
re
@inf
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))

rewrite58.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
811×pow1_binary64
755×add-log-exp_binary64
755×log1p-expm1-u_binary64
755×expm1-log1p-u_binary64
739×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify192.0ms (1.6%)

Algorithm
egg-herbie
Rules
860×unswap-sqr_binary64
686×*-commutative_binary64
623×sqr-pow_binary64
505×distribute-lft-out_binary64
443×distribute-rgt-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
041416
1115394
2393380
31622380
42723380
53499380
63954380
74595380
84787380
94903380
105092380
116228380
126508380
136815380
147161380
157533380
Stop Event
node limit
Counts
52 → 41
Calls
Call 1
Inputs
(*.f64 -1/6 re)
(+.f64 (*.f64 1/36 (pow.f64 re 3)) (*.f64 -1/6 re))
(+.f64 (*.f64 1/36 (pow.f64 re 3)) (+.f64 (*.f64 -1/6 re) (*.f64 -1/720 (pow.f64 re 5))))
(+.f64 (*.f64 1/36 (pow.f64 re 3)) (+.f64 (*.f64 -1/6 re) (+.f64 (*.f64 1/30240 (pow.f64 re 7)) (*.f64 -1/720 (pow.f64 re 5)))))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (+.f64 (*.f64 1/30240 (*.f64 (pow.f64 re 7) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
Outputs
(*.f64 -1/6 re)
(+.f64 (*.f64 1/36 (pow.f64 re 3)) (*.f64 -1/6 re))
(fma.f64 1/36 (pow.f64 re 3) (*.f64 -1/6 re))
(fma.f64 -1/6 re (*.f64 1/36 (pow.f64 re 3)))
(+.f64 (*.f64 1/36 (pow.f64 re 3)) (+.f64 (*.f64 -1/6 re) (*.f64 -1/720 (pow.f64 re 5))))
(fma.f64 1/36 (pow.f64 re 3) (fma.f64 -1/6 re (*.f64 -1/720 (pow.f64 re 5))))
(fma.f64 1/36 (pow.f64 re 3) (fma.f64 -1/720 (pow.f64 re 5) (*.f64 -1/6 re)))
(fma.f64 -1/6 re (fma.f64 -1/720 (pow.f64 re 5) (*.f64 1/36 (pow.f64 re 3))))
(+.f64 (*.f64 1/36 (pow.f64 re 3)) (+.f64 (*.f64 -1/6 re) (+.f64 (*.f64 1/30240 (pow.f64 re 7)) (*.f64 -1/720 (pow.f64 re 5)))))
(fma.f64 1/36 (pow.f64 re 3) (fma.f64 -1/6 re (fma.f64 1/30240 (pow.f64 re 7) (*.f64 -1/720 (pow.f64 re 5)))))
(fma.f64 1/36 (pow.f64 re 3) (fma.f64 -1/6 re (fma.f64 -1/720 (pow.f64 re 5) (*.f64 1/30240 (pow.f64 re 7)))))
(fma.f64 -1/6 re (fma.f64 1/36 (pow.f64 re 3) (fma.f64 -1/720 (pow.f64 re 5) (*.f64 1/30240 (pow.f64 re 7)))))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(*.f64 re (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (*.f64 -1/6 re) (pow.f64 im 3))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(fma.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(*.f64 (pow.f64 im 3) (fma.f64 1/36 (pow.f64 re 3) (*.f64 -1/6 re)))
(*.f64 (fma.f64 1/36 (pow.f64 re 3) (*.f64 -1/6 re)) (pow.f64 im 3))
(*.f64 (fma.f64 -1/6 re (*.f64 1/36 (pow.f64 re 3))) (pow.f64 im 3))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(fma.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (fma.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3)))))
(fma.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (*.f64 (pow.f64 im 3) (fma.f64 -1/720 (pow.f64 re 5) (*.f64 -1/6 re))))
(*.f64 (pow.f64 im 3) (fma.f64 1/36 (pow.f64 re 3) (fma.f64 -1/720 (pow.f64 re 5) (*.f64 -1/6 re))))
(*.f64 (fma.f64 1/36 (pow.f64 re 3) (fma.f64 -1/720 (pow.f64 re 5) (*.f64 -1/6 re))) (pow.f64 im 3))
(*.f64 (fma.f64 -1/6 re (fma.f64 -1/720 (pow.f64 re 5) (*.f64 1/36 (pow.f64 re 3)))) (pow.f64 im 3))
(+.f64 (*.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3))) (+.f64 (*.f64 1/30240 (*.f64 (pow.f64 re 7) (pow.f64 im 3))) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(fma.f64 1/36 (*.f64 (pow.f64 re 3) (pow.f64 im 3)) (fma.f64 -1/720 (*.f64 (pow.f64 re 5) (pow.f64 im 3)) (fma.f64 1/30240 (*.f64 (pow.f64 re 7) (pow.f64 im 3)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))))
(+.f64 (*.f64 (pow.f64 im 3) (fma.f64 -1/720 (pow.f64 re 5) (*.f64 1/30240 (pow.f64 re 7)))) (*.f64 (pow.f64 im 3) (fma.f64 1/36 (pow.f64 re 3) (*.f64 -1/6 re))))
(*.f64 (pow.f64 im 3) (fma.f64 -1/6 re (fma.f64 1/36 (pow.f64 re 3) (fma.f64 -1/720 (pow.f64 re 5) (*.f64 1/30240 (pow.f64 re 7))))))
(*.f64 (fma.f64 -1/6 re (fma.f64 1/36 (pow.f64 re 3) (fma.f64 -1/720 (pow.f64 re 5) (*.f64 1/30240 (pow.f64 re 7))))) (pow.f64 im 3))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))

localize14.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 re)
0.1b
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (sin.f64 re) 3)))
0.3b
(pow.f64 (sin.f64 re) 3)
22.7b
(cbrt.f64 (pow.f64 (sin.f64 re) 3))
Compiler

Compiled 26 to 14 computations (46.2% saved)

series6.0ms (0%)

Counts
3 → 40
Calls

12 calls:

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

rewrite96.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
665×pow1_binary64
622×add-log-exp_binary64
621×log1p-expm1-u_binary64
621×expm1-log1p-u_binary64
607×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify92.0ms (0.8%)

Algorithm
egg-herbie
Rules
957×fma-def_binary64
700×distribute-rgt-neg-in_binary64
564×distribute-lft-neg-in_binary64
486×fma-neg_binary64
442×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
053385
1141371
2394358
31194354
43232354
55485354
67539354
Stop Event
node limit
Counts
94 → 78
Calls
Call 1
Inputs
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(pow.f64 re 3)
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (pow.f64 re 3))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7))))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 (*.f64 -41/3024 (pow.f64 re 9)) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7)))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 re im))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im)))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im))))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/5040 (*.f64 (pow.f64 re 7) im)))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
Outputs
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(fma.f64 -1/6 (pow.f64 re 3) re)
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/6 (pow.f64 re 3) re))
(fma.f64 -1/6 (pow.f64 re 3) (fma.f64 1/120 (pow.f64 re 5) re))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (*.f64 -1/5040 (pow.f64 re 7)))))
(+.f64 (fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/6 (pow.f64 re 3) re)) (*.f64 -1/5040 (pow.f64 re 7)))
(fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/5040 (pow.f64 re 7) (fma.f64 -1/6 (pow.f64 re 3) re)))
(fma.f64 -1/6 (pow.f64 re 3) (fma.f64 -1/5040 (pow.f64 re 7) (fma.f64 1/120 (pow.f64 re 5) re)))
(fma.f64 -1/6 (pow.f64 re 3) (fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/5040 (pow.f64 re 7) re)))
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(pow.f64 re 3)
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (pow.f64 re 3))
(fma.f64 -1/2 (pow.f64 re 5) (pow.f64 re 3))
(fma.f64 (pow.f64 re 5) -1/2 (pow.f64 re 3))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7))))
(fma.f64 -1/2 (pow.f64 re 5) (+.f64 (pow.f64 re 3) (*.f64 (pow.f64 re 7) 13/120)))
(fma.f64 (pow.f64 re 5) -1/2 (fma.f64 (pow.f64 re 7) 13/120 (pow.f64 re 3)))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 (*.f64 -41/3024 (pow.f64 re 9)) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7)))))
(fma.f64 -1/2 (pow.f64 re 5) (fma.f64 -41/3024 (pow.f64 re 9) (+.f64 (pow.f64 re 3) (*.f64 (pow.f64 re 7) 13/120))))
(fma.f64 (pow.f64 re 5) -1/2 (fma.f64 -41/3024 (pow.f64 re 9) (fma.f64 (pow.f64 re 7) 13/120 (pow.f64 re 3))))
(fma.f64 (pow.f64 re 5) -1/2 (fma.f64 (pow.f64 re 7) 13/120 (fma.f64 -41/3024 (pow.f64 re 9) (pow.f64 re 3))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 re im))
(neg.f64 (*.f64 re im))
(*.f64 re (neg.f64 im))
(*.f64 im (neg.f64 re))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im)))
(fma.f64 -1 (*.f64 re im) (*.f64 1/6 (*.f64 (pow.f64 re 3) im)))
(*.f64 im (+.f64 (neg.f64 re) (*.f64 (pow.f64 re 3) 1/6)))
(*.f64 im (fma.f64 (pow.f64 re 3) 1/6 (neg.f64 re)))
(*.f64 im (-.f64 (*.f64 (pow.f64 re 3) 1/6) re))
(*.f64 (neg.f64 im) (fma.f64 -1/6 (pow.f64 re 3) re))
(*.f64 (fma.f64 -1/6 (pow.f64 re 3) re) (neg.f64 im))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im))))
(fma.f64 -1/120 (*.f64 (pow.f64 re 5) im) (fma.f64 -1 (*.f64 re im) (*.f64 1/6 (*.f64 (pow.f64 re 3) im))))
(fma.f64 -1/120 (*.f64 (pow.f64 re 5) im) (*.f64 im (+.f64 (neg.f64 re) (*.f64 (pow.f64 re 3) 1/6))))
(*.f64 im (+.f64 (*.f64 (pow.f64 re 3) 1/6) (fma.f64 (pow.f64 re 5) -1/120 (neg.f64 re))))
(*.f64 im (-.f64 (fma.f64 (pow.f64 re 3) 1/6 (*.f64 (pow.f64 re 5) -1/120)) re))
(*.f64 im (-.f64 (*.f64 (pow.f64 re 5) -1/120) (fma.f64 -1/6 (pow.f64 re 3) re)))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/5040 (*.f64 (pow.f64 re 7) im)))))
(fma.f64 -1/120 (*.f64 (pow.f64 re 5) im) (fma.f64 -1 (*.f64 re im) (fma.f64 1/6 (*.f64 (pow.f64 re 3) im) (*.f64 1/5040 (*.f64 (pow.f64 re 7) im)))))
(fma.f64 -1/120 (*.f64 (pow.f64 re 5) im) (-.f64 (*.f64 im (+.f64 (*.f64 (pow.f64 re 3) 1/6) (*.f64 (pow.f64 re 7) 1/5040))) (*.f64 re im)))
(*.f64 im (+.f64 (fma.f64 (pow.f64 re 3) 1/6 (*.f64 (pow.f64 re 7) 1/5040)) (fma.f64 (pow.f64 re 5) -1/120 (neg.f64 re))))
(*.f64 im (-.f64 (fma.f64 (pow.f64 re 5) -1/120 (fma.f64 (pow.f64 re 3) 1/6 (*.f64 (pow.f64 re 7) 1/5040))) re))
(*.f64 im (-.f64 (*.f64 (pow.f64 re 5) -1/120) (fma.f64 -1/6 (pow.f64 re 3) (fma.f64 -1/5040 (pow.f64 re 7) re))))
(*.f64 im (-.f64 (*.f64 (pow.f64 re 7) 1/5040) (fma.f64 -1/6 (pow.f64 re 3) (fma.f64 1/120 (pow.f64 re 5) re))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 im (neg.f64 (sin.f64 re)))

localize28.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (pow.f64 im 3) -1/6)
0.1b
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
0.2b
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2)
17.0b
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))
Compiler

Compiled 58 to 39 computations (32.8% saved)

series12.0ms (0.1%)

Counts
2 → 16
Calls

12 calls:

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

rewrite73.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
646×prod-diff_binary64
540×log-prod_binary64
344×fma-def_binary64
300×pow2_binary64
210×expm1-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01332
128332
2306632
Stop Event
node limit
Counts
2 → 72
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/6) (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4) (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (sqrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 re)) (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/6) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (pow.f64 im 3) -1/6) (sin.f64 re)) (*.f64 (neg.f64 im) (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)) (*.f64 (sin.f64 re) (neg.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (*.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (sin.f64 re) 2)) (*.f64 (cbrt.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) (*.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/6) (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2) (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4) (*.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4) (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (*.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 re)) (*.f64 (sqrt.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 re)) (*.f64 (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4) 3) (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2)) (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (cbrt.f64 (pow.f64 (sin.f64 re) 2))) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) (sqrt.f64 (sin.f64 re))) (sqrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))) (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) (sqrt.f64 (sin.f64 re))) (sqrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3)) (sin.f64 re)) (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im)) (sin.f64 re)) (fma.f64 (pow.f64 im 3) -1/6 im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 9) -1/216) (pow.f64 im 3))) (fma.f64 im (fma.f64 (pow.f64 im 3) -1/6 im) (*.f64 (pow.f64 im 6) 1/36)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 6) 1/36) (*.f64 im im))) (fma.f64 (pow.f64 im 3) -1/6 im))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sin.f64 re)) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 3) (pow.f64 (sin.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6) (*.f64 (sin.f64 re) (neg.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 im 3) -1/6) (sin.f64 re) (*.f64 (neg.f64 im) (sin.f64 re)))))))

simplify139.0ms (1.1%)

Algorithm
egg-herbie
Rules
664×fma-neg_binary64
634×distribute-rgt-neg-in_binary64
622×fma-def_binary64
611×cancel-sign-sub-inv_binary64
455×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
011256
124256
253256
3152256
4440256
51184256
62347256
74729256
85513256
96040256
106377256
116774256
127220256
Stop Event
node limit
Counts
88 → 76
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
Outputs
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(sqrt.f64 (*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))

eval256.0ms (2.1%)

Compiler

Compiled 9422 to 5780 computations (38.7% saved)

prune155.0ms (1.3%)

Pruning

29 alts after pruning (22 fresh and 7 done)

PrunedKeptTotal
New5558563
Fresh31417
Picked101
Done178
Total56029589
Error
0b
Counts
589 → 29
Alt Table
Click to see full alt table
StatusErrorProgram
38.4b
(*.f64 (neg.f64 im) (*.f64 (pow.f64 (pow.f64 (sin.f64 re) 5/2) 1/3) (pow.f64 (sin.f64 re) 1/6)))
42.0b
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
2.1b
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 3)
17.4b
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
25.3b
(pow.f64 (pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4) 2) 2)
26.7b
(*.f64 (neg.f64 im) re)
8.7b
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (sin.f64 re) 3)))
1.5b
(*.f64 (neg.f64 im) (sin.f64 re))
9.2b
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 3) 3)))
18.3b
(*.f64 (neg.f64 im) (cbrt.f64 (-.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1)))
42.0b
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
26.5b
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
35.1b
(*.f64 (neg.f64 im) (exp.f64 (log.f64 (sin.f64 re))))
6.3b
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 re (*.f64 (pow.f64 im 3) -1/6)))
34.2b
(*.f64 (sin.f64 re) (fma.f64 (sqrt.f64 im) (neg.f64 (sqrt.f64 im)) (*.f64 (pow.f64 im 3) -1/6)))
17.4b
(*.f64 (neg.f64 im) (/.f64 (-.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) 1) (+.f64 (+.f64 (sin.f64 re) 1) 1)))
23.1b
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) im)) 2)))
39.5b
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.2b
(*.f64 (sin.f64 re) (fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im)))
26.5b
(*.f64 re (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
40.6b
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
42.2b
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
1.2b
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
32.3b
(cbrt.f64 (*.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 3) (pow.f64 (sin.f64 re) 3)))
1.5b
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
2.2b
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
17.3b
(*.f64 (neg.f64 im) (-.f64 (+.f64 (sin.f64 re) 1) 1))
25.3b
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (neg.f64 im))) 2)
2.0b
(*.f64 (sin.f64 re) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3))
Compiler

Compiled 666 to 513 computations (23% saved)

localize15.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 re)
0.0b
(fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im))
0.1b
(*.f64 (sin.f64 re) (fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im)))
0.3b
(*.f64 im -1/6)
Compiler

Compiled 36 to 15 computations (58.3% saved)

series7.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

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

rewrite78.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
855×pow1_binary64
789×add-log-exp_binary64
788×log1p-expm1-u_binary64
788×expm1-log1p-u_binary64
771×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify91.0ms (0.8%)

Algorithm
egg-herbie
Rules
680×unsub-neg_binary64
619×associate-+l+_binary64
435×fma-neg_binary64
415×associate-+r+_binary64
405×distribute-rgt-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
039608
1109570
2341540
31791540
44677540
Stop Event
node limit
Counts
97 → 70
Calls
Call 1
Inputs
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (+.f64 (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (*.f64 1/120 (*.f64 (pow.f64 re 5) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (+.f64 (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (*.f64 1/120 (*.f64 (pow.f64 re 5) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))))))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 -1 im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(*.f64 -1/6 (pow.f64 im 3))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(*.f64 -1/6 (pow.f64 im 3))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
Outputs
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 -1/6 im)
(*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 re (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(fma.f64 -1/6 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 3)) (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (fma.f64 -1/6 (pow.f64 re 3) re))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (fma.f64 -1/6 (pow.f64 re 3) re))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (+.f64 (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (*.f64 1/120 (*.f64 (pow.f64 re 5) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)))))
(fma.f64 -1/6 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 3)) (fma.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (*.f64 1/120 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 5)))))
(fma.f64 -1/6 (*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (pow.f64 re 3)) (*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 re (*.f64 1/120 (pow.f64 re 5)))))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (fma.f64 1/120 (pow.f64 re 5) re)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (fma.f64 -1/6 (pow.f64 re 3) re)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (+.f64 (*.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))) (*.f64 1/120 (*.f64 (pow.f64 re 5) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))))))
(fma.f64 -1/6 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 3)) (fma.f64 re (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (fma.f64 -1/5040 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 7)) (*.f64 1/120 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (pow.f64 re 5))))))
(+.f64 (*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3)))) (*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (*.f64 -1/5040 (pow.f64 re 7)))))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (+.f64 (fma.f64 1/120 (pow.f64 re 5) (*.f64 -1/5040 (pow.f64 re 7))) (fma.f64 -1/6 (pow.f64 re 3) re)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (+.f64 (fma.f64 -1/6 (pow.f64 re 3) re) (fma.f64 1/120 (pow.f64 re 5) (*.f64 -1/5040 (pow.f64 re 7)))))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 im (sin.f64 re)))
(*.f64 im (neg.f64 (sin.f64 re)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3)))
(*.f64 -1/6 (*.f64 (pow.f64 im 3) (sin.f64 re)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 3)) im) (sin.f64 re))
(*.f64 (fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im)) (sin.f64 re))
(*.f64 -1 im)
(neg.f64 im)
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(*.f64 -1/6 (pow.f64 im 3))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(*.f64 -1/6 (pow.f64 im 3))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))
(+.f64 (*.f64 -1/6 (pow.f64 im 3)) (*.f64 -1 im))
(-.f64 (*.f64 -1/6 (pow.f64 im 3)) im)
(fma.f64 -1/6 (pow.f64 im 3) (neg.f64 im))

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
3.2b
(*.f64 re (pow.f64 im 3))
Compiler

Compiled 21 to 14 computations (33.3% saved)

series6.0ms (0%)

Counts
2 → 0
Calls

12 calls:

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

rewrite69.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

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

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 re)
0.1b
(*.f64 (neg.f64 im) (exp.f64 (log.f64 (sin.f64 re))))
0.3b
(log.f64 (sin.f64 re))
1.9b
(exp.f64 (log.f64 (sin.f64 re)))
Compiler

Compiled 22 to 7 computations (68.2% saved)

series299.0ms (2.5%)

Counts
3 → 40
Calls

12 calls:

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

rewrite72.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
564×pow1_binary64
516×add-log-exp_binary64
515×log1p-expm1-u_binary64
515×expm1-log1p-u_binary64
504×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify90.0ms (0.7%)

Algorithm
egg-herbie
Rules
683×fma-neg_binary64
653×associate-*l*_binary64
579×cancel-sign-sub-inv_binary64
511×associate-*r*_binary64
508×unswap-sqr_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
057383
1147371
2406354
31336354
44005350
Stop Event
node limit
Counts
91 → 75
Calls
Call 1
Inputs
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(log.f64 re)
(+.f64 (log.f64 re) (*.f64 -1/6 (pow.f64 re 2)))
(+.f64 (log.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 re 2)) (*.f64 -1/180 (pow.f64 re 4))))
(+.f64 (log.f64 re) (+.f64 (*.f64 -1/2835 (pow.f64 re 6)) (+.f64 (*.f64 -1/6 (pow.f64 re 2)) (*.f64 -1/180 (pow.f64 re 4)))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 re im))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im)))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im))))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/5040 (*.f64 (pow.f64 re 7) im)))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
Outputs
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(fma.f64 -1/6 (pow.f64 re 3) re)
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/6 (pow.f64 re 3) re))
(fma.f64 -1/6 (pow.f64 re 3) (fma.f64 1/120 (pow.f64 re 5) re))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (*.f64 -1/5040 (pow.f64 re 7)))))
(+.f64 (fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/6 (pow.f64 re 3) re)) (*.f64 -1/5040 (pow.f64 re 7)))
(fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/6 (pow.f64 re 3) (fma.f64 -1/5040 (pow.f64 re 7) re)))
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(log.f64 re)
(+.f64 (log.f64 re) (*.f64 -1/6 (pow.f64 re 2)))
(+.f64 (log.f64 re) (*.f64 -1/6 (*.f64 re re)))
(fma.f64 -1/6 (*.f64 re re) (log.f64 re))
(fma.f64 re (*.f64 re -1/6) (log.f64 re))
(+.f64 (log.f64 re) (+.f64 (*.f64 -1/6 (pow.f64 re 2)) (*.f64 -1/180 (pow.f64 re 4))))
(+.f64 (log.f64 re) (fma.f64 -1/6 (*.f64 re re) (*.f64 -1/180 (pow.f64 re 4))))
(+.f64 (fma.f64 -1/6 (*.f64 re re) (log.f64 re)) (*.f64 -1/180 (pow.f64 re 4)))
(fma.f64 re (*.f64 re -1/6) (fma.f64 -1/180 (pow.f64 re 4) (log.f64 re)))
(+.f64 (log.f64 re) (+.f64 (*.f64 -1/2835 (pow.f64 re 6)) (+.f64 (*.f64 -1/6 (pow.f64 re 2)) (*.f64 -1/180 (pow.f64 re 4)))))
(+.f64 (log.f64 re) (fma.f64 -1/2835 (pow.f64 re 6) (fma.f64 -1/6 (*.f64 re re) (*.f64 -1/180 (pow.f64 re 4)))))
(fma.f64 -1/2835 (pow.f64 re 6) (fma.f64 re (*.f64 re -1/6) (fma.f64 -1/180 (pow.f64 re 4) (log.f64 re))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 re im))
(neg.f64 (*.f64 re im))
(*.f64 re (neg.f64 im))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im)))
(fma.f64 -1 (*.f64 re im) (*.f64 1/6 (*.f64 (pow.f64 re 3) im)))
(*.f64 im (+.f64 (neg.f64 re) (*.f64 (pow.f64 re 3) 1/6)))
(*.f64 im (-.f64 (*.f64 (pow.f64 re 3) 1/6) re))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 1/6 (*.f64 (pow.f64 re 3) im))))
(fma.f64 -1/120 (*.f64 (pow.f64 re 5) im) (fma.f64 -1 (*.f64 re im) (*.f64 1/6 (*.f64 (pow.f64 re 3) im))))
(fma.f64 -1/120 (*.f64 (pow.f64 re 5) im) (*.f64 im (+.f64 (neg.f64 re) (*.f64 (pow.f64 re 3) 1/6))))
(*.f64 im (+.f64 (*.f64 (pow.f64 re 3) 1/6) (fma.f64 (pow.f64 re 5) -1/120 (neg.f64 re))))
(*.f64 im (+.f64 (*.f64 (pow.f64 re 5) -1/120) (-.f64 (*.f64 (pow.f64 re 3) 1/6) re)))
(*.f64 im (-.f64 (*.f64 (pow.f64 re 5) -1/120) (fma.f64 -1/6 (pow.f64 re 3) re)))
(+.f64 (*.f64 -1/120 (*.f64 (pow.f64 re 5) im)) (+.f64 (*.f64 -1 (*.f64 re im)) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 re 3) im)) (*.f64 1/5040 (*.f64 (pow.f64 re 7) im)))))
(fma.f64 -1/120 (*.f64 (pow.f64 re 5) im) (fma.f64 -1 (*.f64 re im) (fma.f64 1/6 (*.f64 (pow.f64 re 3) im) (*.f64 1/5040 (*.f64 (pow.f64 re 7) im)))))
(fma.f64 -1/120 (*.f64 (pow.f64 re 5) im) (-.f64 (*.f64 im (+.f64 (*.f64 (pow.f64 re 3) 1/6) (*.f64 (pow.f64 re 7) 1/5040))) (*.f64 re im)))
(*.f64 im (+.f64 (fma.f64 (pow.f64 re 3) 1/6 (*.f64 (pow.f64 re 7) 1/5040)) (fma.f64 (pow.f64 re 5) -1/120 (neg.f64 re))))
(*.f64 im (+.f64 (fma.f64 (pow.f64 re 3) 1/6 (*.f64 (pow.f64 re 7) 1/5040)) (-.f64 (*.f64 (pow.f64 re 5) -1/120) re)))
(*.f64 im (-.f64 (*.f64 (pow.f64 re 5) -1/120) (fma.f64 -1/6 (pow.f64 re 3) (fma.f64 -1/5040 (pow.f64 re 7) re))))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))
(*.f64 -1 (*.f64 (sin.f64 re) im))
(neg.f64 (*.f64 (sin.f64 re) im))
(*.f64 (sin.f64 re) (neg.f64 im))

localize44.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(+.f64 1 (pow.f64 (sin.f64 re) 3))
0.2b
(cbrt.f64 (-.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1))
0.3b
(pow.f64 (sin.f64 re) 3)
1.6b
(-.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1)
Compiler

Compiled 49 to 33 computations (32.7% saved)

series114.0ms (0.9%)

Counts
3 → 28
Calls

9 calls:

TimeVariablePointExpression
110.0ms
re
@0
(+.f64 1 (pow.f64 (sin.f64 re) 3))
1.0ms
re
@0
(-.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1)
1.0ms
re
@inf
(+.f64 1 (pow.f64 (sin.f64 re) 3))
1.0ms
re
@-inf
(+.f64 1 (pow.f64 (sin.f64 re) 3))
0.0ms
re
@0
(cbrt.f64 (-.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1))

rewrite97.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
816×pow1_binary64
771×add-log-exp_binary64
770×log1p-expm1-u_binary64
770×expm1-log1p-u_binary64
756×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify245.0ms (2%)

Algorithm
egg-herbie
Rules
1472×fma-def_binary64
1040×unswap-sqr_binary64
580×sqr-pow_binary64
566×associate-*l*_binary64
372×associate-*r*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
039231
1108221
2262219
3661219
41277219
52764219
63485219
75065219
85335219
95734219
106242219
117834219
Stop Event
node limit
Counts
129 → 122
Calls
Call 1
Inputs
(pow.f64 re 3)
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (pow.f64 re 3))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7))))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 (*.f64 -41/3024 (pow.f64 re 9)) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7)))))
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
1
(+.f64 1 (pow.f64 re 3))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 1 (pow.f64 re 3)))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 1 (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7)))))
Outputs
(pow.f64 re 3)
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (pow.f64 re 3))
(fma.f64 -1/2 (pow.f64 re 5) (pow.f64 re 3))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7))))
(fma.f64 -1/2 (pow.f64 re 5) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7))))
(fma.f64 -1/2 (pow.f64 re 5) (fma.f64 13/120 (pow.f64 re 7) (pow.f64 re 3)))
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 (*.f64 -41/3024 (pow.f64 re 9)) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7)))))
(fma.f64 -1/2 (pow.f64 re 5) (fma.f64 -41/3024 (pow.f64 re 9) (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7)))))
(fma.f64 -1/2 (pow.f64 re 5) (fma.f64 -41/3024 (pow.f64 re 9) (fma.f64 13/120 (pow.f64 re 7) (pow.f64 re 3))))
(fma.f64 -1/2 (pow.f64 re 5) (fma.f64 13/120 (pow.f64 re 7) (fma.f64 -41/3024 (pow.f64 re 9) (pow.f64 re 3))))
(fma.f64 13/120 (pow.f64 re 7) (fma.f64 -1/2 (pow.f64 re 5) (fma.f64 -41/3024 (pow.f64 re 9) (pow.f64 re 3))))
(fma.f64 13/120 (pow.f64 re 7) (fma.f64 -41/3024 (pow.f64 re 9) (fma.f64 -1/2 (pow.f64 re 5) (pow.f64 re 3))))
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
(pow.f64 (sin.f64 re) 3)
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(+.f64 re (*.f64 (pow.f64 re 3) -1/6))
(fma.f64 (pow.f64 re 3) -1/6 re)
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (*.f64 (pow.f64 re 3) -1/6)))
(fma.f64 (pow.f64 re 5) 1/120 (fma.f64 (pow.f64 re 3) -1/6 re))
(fma.f64 (pow.f64 re 3) -1/6 (fma.f64 (pow.f64 re 5) 1/120 re))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (*.f64 (pow.f64 re 7) -1/5040))))
(+.f64 (fma.f64 (pow.f64 re 3) -1/6 (*.f64 (pow.f64 re 7) -1/5040)) (fma.f64 (pow.f64 re 5) 1/120 re))
(fma.f64 (pow.f64 re 5) 1/120 (fma.f64 (pow.f64 re 7) -1/5040 (fma.f64 (pow.f64 re 3) -1/6 re)))
(fma.f64 (pow.f64 re 3) -1/6 (fma.f64 (pow.f64 re 7) -1/5040 (fma.f64 (pow.f64 re 5) 1/120 re)))
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
1
(+.f64 1 (pow.f64 re 3))
(+.f64 (pow.f64 re 3) 1)
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 1 (pow.f64 re 3)))
(fma.f64 -1/2 (pow.f64 re 5) (+.f64 (pow.f64 re 3) 1))
(+.f64 (pow.f64 re 3) (fma.f64 -1/2 (pow.f64 re 5) 1))
(+.f64 (fma.f64 -1/2 (pow.f64 re 5) (pow.f64 re 3)) 1)
(+.f64 (*.f64 -1/2 (pow.f64 re 5)) (+.f64 1 (+.f64 (pow.f64 re 3) (*.f64 13/120 (pow.f64 re 7)))))
(fma.f64 -1/2 (pow.f64 re 5) (+.f64 (+.f64 (pow.f64 re 3) 1) (*.f64 13/120 (pow.f64 re 7))))
(+.f64 (fma.f64 13/120 (pow.f64 re 7) (pow.f64 re 3)) (fma.f64 -1/2 (pow.f64 re 5) 1))
(+.f64 (fma.f64 -1/2 (pow.f64 re 5) (pow.f64 re 3)) (fma.f64 13/120 (pow.f64 re 7) 1))
(+.f64 (pow.f64 re 3) (fma.f64 -1/2 (pow.f64 re 5) (fma.f64 13/120 (pow.f64 re 7) 1)))

localize73.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 3) 3)
0.7b
(cbrt.f64 (sin.f64 re))
0.7b
(pow.f64 (cbrt.f64 (sin.f64 re)) 3)
22.7b
(cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 3) 3))
Compiler

Compiled 43 to 23 computations (46.5% saved)

series25.0ms (0.2%)

Counts
4 → 36
Calls

12 calls:

TimeVariablePointExpression
7.0ms
re
@0
(pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 3) 3)
4.0ms
re
@inf
(pow.f64 (cbrt.f64 (sin.f64 re)) 3)
4.0ms
re
@-inf
(pow.f64 (cbrt.f64 (sin.f64 re)) 3)
2.0ms
re
@0
(pow.f64 (cbrt.f64 (sin.f64 re)) 3)
2.0ms
re
@inf
(pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 3) 3)

rewrite103.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
519×pow1_binary64
505×add-sqr-sqrt_binary64
491×add-log-exp_binary64
491×log1p-expm1-u_binary64
491×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
117117
2145617
Stop Event
node limit
Counts
4 → 90
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 3) 3))
(pow.f64 (cbrt.f64 (sin.f64 re)) 3)
(cbrt.f64 (sin.f64 re))
(pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 3) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sin.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (cbrt.f64 (sin.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 re)) (sqrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 re) 1/6) (*.f64 (pow.f64 (sin.f64 re) 1/6) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) 3) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (sin.f64 re) 1/6) 3) (pow.f64 (pow.f64 (sin.f64 re) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (sin.f64 re) 3/2) 1/3) (pow.f64 (pow.f64 (sin.f64 re) 3/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) 1) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (sin.f64 re) 1/6)) (pow.f64 (sin.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sin.f64 re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sin.f64 re)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 re) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (sin.f64 re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (sin.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 re)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sin.f64 re)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sin.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (cbrt.f64 (sin.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 re)) (sqrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 re) 1/6) (*.f64 (pow.f64 (sin.f64 re) 1/6) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) 3) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (sin.f64 re) 1/6) 3) (pow.f64 (pow.f64 (sin.f64 re) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (sin.f64 re) 3/2) 1/3) (pow.f64 (pow.f64 (sin.f64 re) 3/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) 1) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (sin.f64 re) 1/6)) (pow.f64 (sin.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (sin.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (sin.f64 re) 3))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 re)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sin.f64 re)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (sin.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (cbrt.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 re) 1/6) (pow.f64 (sin.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) 1/3) (cbrt.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (sin.f64 re)) 1/3) (pow.f64 (sqrt.f64 (sin.f64 re)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sin.f64 re) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sin.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 re) 3) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 re) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (sin.f64 re))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 re) (pow.f64 (sin.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 re)) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (sin.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 re) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (sin.f64 re) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 re) 2) (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (*.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 re)) (*.f64 (sqrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 re) 3/2) (pow.f64 (sin.f64 re) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (sin.f64 re)) 3) (pow.f64 (sqrt.f64 (sin.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) 9) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 9))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (sin.f64 re) 1/6) 9) (pow.f64 (pow.f64 (sin.f64 re) 1/6) 9))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (sin.f64 re) 2) (cbrt.f64 (sin.f64 re))) (pow.f64 (cbrt.f64 (sin.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (sin.f64 re) 2) 1) (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (sin.f64 re) 2) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)) (cbrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (sin.f64 re) 2) (sqrt.f64 (sin.f64 re))) (sqrt.f64 (sin.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (sin.f64 re) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (sin.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (sin.f64 re) 3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (sin.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (sin.f64 re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (sin.f64 re))))))))

simplify162.0ms (1.3%)

Algorithm
egg-herbie
Rules
1040×unswap-sqr_binary64
591×sqr-pow_binary64
530×cube-prod_binary64
492×fma-def_binary64
465×pow-sqr_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
027212
177184
2163182
3378182
4723182
51678182
62609182
74203182
84454182
94854182
105366182
116153182
126755182
137471182
147911182
Stop Event
node limit
Counts
126 → 80
Calls
Call 1
Inputs
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(pow.f64 (sin.f64 re) 1/3)
(pow.f64 (sin.f64 re) 1/3)
(pow.f64 (sin.f64 re) 1/3)
(pow.f64 (sin.f64 re) 1/3)
(pow.f64 (sin.f64 re) 1/3)
(pow.f64 (sin.f64 re) 1/3)
(pow.f64 (sin.f64 re) 1/3)
(pow.f64 (sin.f64 re) 1/3)
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
Outputs
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(fma.f64 -1/6 (pow.f64 re 3) re)
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/6 (pow.f64 re 3) re))
(fma.f64 -1/6 (pow.f64 re 3) (fma.f64 1/120 (pow.f64 re 5) re))
(+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 -1/5040 (pow.f64 re 7)))))
(fma.f64 1/120 (pow.f64 re 5) (+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (*.f64 -1/5040 (pow.f64 re 7)))))
(+.f64 (fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/6 (pow.f64 re 3) re)) (*.f64 -1/5040 (pow.f64 re 7)))
(fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/6 (pow.f64 re 3) (fma.f64 -1/5040 (pow.f64 re 7) re)))
(fma.f64 -1/6 (pow.f64 re 3) (fma.f64 -1/5040 (pow.f64 re 7) (fma.f64 1/120 (pow.f64 re 5) re)))
(fma.f64 -1/6 (pow.f64 re 3) (fma.f64 1/120 (pow.f64 re 5) (fma.f64 -1/5040 (pow.f64 re 7) re)))
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(sin.f64 re)
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(sin.f64 re)
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(sin.f64 re)
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(sin.f64 re)
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(sin.f64 re)
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(sin.f64 re)
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(sin.f64 re)
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(sin.f64 re)
(*.f64 (sin.f64 re) (pow.f64 1 1/3))
(sin.f64 re)
(pow.f64 (sin.f64 re) 1/3)
(cbrt.f64 (sin.f64 re))
(pow.f64 (sin.f64 re) 1/3)
(cbrt.f64 (sin.f64 re))
(pow.f64 (sin.f64 re) 1/3)
(cbrt.f64 (sin.f64 re))
(pow.f64 (sin.f64 re) 1/3)
(cbrt.f64 (sin.f64 re))
(pow.f64 (sin.f64 re) 1/3)
(cbrt.f64 (sin.f64 re))
(pow.f64 (sin.f64 re) 1/3)
(cbrt.f64 (sin.f64 re))
(pow.f64 (sin.f64 re) 1/3)
(cbrt.f64 (sin.f64 re))
(pow.f64 (sin.f64 re) 1/3)
(cbrt.f64 (sin.f64 re))
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 1 (pow.f64 (sin.f64 re) 3))
(pow.f64 (sin.f64 re) 3)
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 1 (pow.f64 (sin.f64 re) 3))
(pow.f64 (sin.f64 re) 3)
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 1 (pow.f64 (sin.f64 re) 3))
(pow.f64 (sin.f64 re) 3)
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 1 (pow.f64 (sin.f64 re) 3))
(pow.f64 (sin.f64 re) 3)
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 1 (pow.f64 (sin.f64 re) 3))
(pow.f64 (sin.f64 re) 3)
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 1 (pow.f64 (sin.f64 re) 3))
(pow.f64 (sin.f64 re) 3)
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 1 (pow.f64 (sin.f64 re) 3))
(pow.f64 (sin.f64 re) 3)
(*.f64 (pow.f64 (sin.f64 re) 3) (pow.f64 1 1/3))
(*.f64 1 (pow.f64 (sin.f64 re) 3))
(pow.f64 (sin.f64 re) 3)

eval195.0ms (1.6%)

Compiler

Compiled 7380 to 4267 computations (42.2% saved)

prune222.0ms (1.8%)

Pruning

30 alts after pruning (18 fresh and 12 done)

PrunedKeptTotal
New5045509
Fresh41317
Picked011
Done01111
Total50830538
Error
0b
Counts
538 → 30
Alt Table
Click to see full alt table
StatusErrorProgram
42.0b
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
2.1b
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 3)
25.3b
(pow.f64 (pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4) 2) 2)
26.7b
(*.f64 (neg.f64 im) re)
8.7b
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (sin.f64 re) 3)))
1.5b
(*.f64 (neg.f64 im) (sin.f64 re))
9.2b
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 3) 3)))
18.3b
(*.f64 (neg.f64 im) (cbrt.f64 (-.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1)))
42.0b
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
26.5b
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
32.3b
(cbrt.f64 (*.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 3) (pow.f64 (sin.f64 re) 3)))
17.4b
(*.f64 (neg.f64 im) (+.f64 1 (-.f64 (sin.f64 re) 1)))
1.5b
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
35.1b
(*.f64 (neg.f64 im) (exp.f64 (log.f64 (sin.f64 re))))
6.3b
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 re (*.f64 (pow.f64 im 3) -1/6)))
34.2b
(*.f64 (sin.f64 re) (fma.f64 (sqrt.f64 im) (neg.f64 (sqrt.f64 im)) (*.f64 (pow.f64 im 3) -1/6)))
35.4b
(*.f64 (neg.f64 im) (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (sin.f64 re))) 3)))
17.4b
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
17.4b
(*.f64 (neg.f64 im) (/.f64 (-.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) 1) (+.f64 (+.f64 (sin.f64 re) 1) 1)))
23.1b
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) im)) 2)))
39.5b
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.2b
(*.f64 (sin.f64 re) (fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im)))
26.5b
(*.f64 re (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
40.6b
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
42.2b
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
2.2b
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
1.2b
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
17.3b
(*.f64 (neg.f64 im) (-.f64 (+.f64 (sin.f64 re) 1) 1))
25.3b
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (neg.f64 im))) 2)
2.0b
(*.f64 (sin.f64 re) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3))
Compiler

Compiled 375 to 290 computations (22.7% saved)

regimes171.0ms (1.4%)

Counts
40 → 2
Calls
Call 1
Inputs
(*.f64 (neg.f64 im) re)
(*.f64 (neg.f64 im) (sin.f64 re))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(*.f64 (neg.f64 im) (+.f64 1 (-.f64 (sin.f64 re) 1)))
(*.f64 re (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (neg.f64 im) (-.f64 (+.f64 (sin.f64 re) 1) 1))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (sin.f64 re) (fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im)))
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (exp.f64 (log.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (neg.f64 im))) 2)
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (sin.f64 re) 3)))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (neg.f64 im) (cbrt.f64 (-.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1)))
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 re (*.f64 (pow.f64 im 3) -1/6)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (neg.f64 im) (/.f64 (-.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) 1) (+.f64 (+.f64 (sin.f64 re) 1) 1)))
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 3)
(*.f64 (sin.f64 re) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3))
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2)
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
(*.f64 (neg.f64 im) (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (sin.f64 re))) 3)))
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 3) 3)))
(*.f64 (neg.f64 im) (*.f64 (pow.f64 (pow.f64 (sin.f64 re) 5/2) 1/3) (pow.f64 (sin.f64 re) 1/6)))
(*.f64 (sin.f64 re) (fma.f64 (sqrt.f64 im) (neg.f64 (sqrt.f64 im)) (*.f64 (pow.f64 im 3) -1/6)))
(cbrt.f64 (*.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im) 3) (pow.f64 (sin.f64 re) 3)))
(pow.f64 (pow.f64 (pow.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 1/4) 2) 2)
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) im)) 2)))
(fma.f64 (*.f64 (neg.f64 (sin.f64 re)) (sqrt.f64 im)) (sqrt.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
(*.f64 (sin.f64 re) (fma.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 2) (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (fma.f64 (neg.f64 (cbrt.f64 im)) (pow.f64 (cbrt.f64 im) 2) im)))
Outputs
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6)))
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Calls

7 calls:

48.0ms
im
37.0ms
(*.f64 1/2 (sin.f64 re))
24.0ms
(sin.f64 re)
20.0ms
re
10.0ms
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Results
ErrorSegmentsBranch
1.2b1re
0.1b2im
1.2b1(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.2b1(*.f64 1/2 (sin.f64 re))
1.2b1(sin.f64 re)
0.1b2(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
0.1b2(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Compiler

Compiled 495 to 286 computations (42.2% saved)

bsearch1.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
2.9490580895741303e-5
6.955476198692088
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes103.0ms (0.8%)

Counts
30 → 2
Calls
Call 1
Inputs
(*.f64 (neg.f64 im) re)
(*.f64 (neg.f64 im) (sin.f64 re))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(*.f64 (neg.f64 im) (+.f64 1 (-.f64 (sin.f64 re) 1)))
(*.f64 re (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (neg.f64 im) (-.f64 (+.f64 (sin.f64 re) 1) 1))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (sin.f64 re) (fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im)))
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (exp.f64 (log.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (neg.f64 im))) 2)
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (sin.f64 re) 3)))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (neg.f64 im) (cbrt.f64 (-.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1)))
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 re (*.f64 (pow.f64 im 3) -1/6)))
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (neg.f64 im) (/.f64 (-.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) 1) (+.f64 (+.f64 (sin.f64 re) 1) 1)))
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 3)
(*.f64 (sin.f64 re) (pow.f64 (cbrt.f64 (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) 3))
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))) 2)
Outputs
(+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im)))
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Calls

7 calls:

28.0ms
im
17.0ms
(*.f64 1/2 (sin.f64 re))
14.0ms
re
14.0ms
(sin.f64 re)
7.0ms
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Results
ErrorSegmentsBranch
1.2b1re
0.1b2im
1.2b1(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.2b1(*.f64 1/2 (sin.f64 re))
1.2b1(sin.f64 re)
0.1b2(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
0.1b2(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Compiler

Compiled 336 to 190 computations (43.5% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
2.9490580895741303e-5
6.955476198692088
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes94.0ms (0.8%)

Counts
25 → 2
Calls
Call 1
Inputs
(*.f64 (neg.f64 im) re)
(*.f64 (neg.f64 im) (sin.f64 re))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(*.f64 (neg.f64 im) (+.f64 1 (-.f64 (sin.f64 re) 1)))
(*.f64 re (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (neg.f64 im) (-.f64 (+.f64 (sin.f64 re) 1) 1))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (sin.f64 re) (fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im)))
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (exp.f64 (log.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (neg.f64 im))) 2)
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (sin.f64 re) 3)))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (neg.f64 im) (cbrt.f64 (-.f64 (+.f64 1 (pow.f64 (sin.f64 re) 3)) 1)))
(fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 re (*.f64 (pow.f64 im 3) -1/6)))
Outputs
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Calls

7 calls:

29.0ms
im
18.0ms
(*.f64 1/2 (sin.f64 re))
12.0ms
(sin.f64 re)
12.0ms
re
6.0ms
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Results
ErrorSegmentsBranch
1.2b1re
0.1b2im
1.2b1(*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.2b1(*.f64 1/2 (sin.f64 re))
1.2b1(sin.f64 re)
0.1b2(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
0.1b2(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Compiler

Compiled 261 to 141 computations (46% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
2.9490580895741303e-5
6.955476198692088
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes47.0ms (0.4%)

Counts
22 → 1
Calls
Call 1
Inputs
(*.f64 (neg.f64 im) re)
(*.f64 (neg.f64 im) (sin.f64 re))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(*.f64 (neg.f64 im) (+.f64 1 (-.f64 (sin.f64 re) 1)))
(*.f64 re (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (neg.f64 im) (-.f64 (+.f64 (sin.f64 re) 1) 1))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (*.f64 1/2 re) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (sin.f64 re) (fma.f64 (*.f64 im im) (*.f64 im -1/6) (neg.f64 im)))
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log.f64 (exp.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (exp.f64 (log.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (log1p.f64 (expm1.f64 (sin.f64 re))))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
(pow.f64 (sqrt.f64 (*.f64 (sin.f64 re) (neg.f64 im))) 2)
(*.f64 (neg.f64 im) (cbrt.f64 (pow.f64 (sin.f64 re) 3)))
(*.f64 (neg.f64 im) (pow.f64 (cbrt.f64 (sin.f64 re)) 3))
Outputs
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
Calls

4 calls:

13.0ms
im
10.0ms
(sin.f64 re)
10.0ms
re
7.0ms
(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Results
ErrorSegmentsBranch
1.2b1re
1.2b1im
1.2b1(sin.f64 re)
1.2b1(-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Compiler

Compiled 199 to 103 computations (48.2% saved)

regimes22.0ms (0.2%)

Accuracy

Total -41.5b remaining (-2796.7%)

Threshold costs -41.5b (-2796.7%)

Counts
9 → 1
Calls
Call 1
Inputs
(*.f64 (neg.f64 im) re)
(*.f64 (neg.f64 im) (sin.f64 re))
(*.f64 -1/6 (*.f64 re (pow.f64 im 3)))
(*.f64 (neg.f64 im) (+.f64 1 (-.f64 (sin.f64 re) 1)))
(*.f64 re (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (neg.f64 im) (-.f64 (+.f64 (sin.f64 re) 1) 1))
(+.f64 (*.f64 -1 (*.f64 re im)) (*.f64 -1/6 (*.f64 re (pow.f64 im 3))))
(*.f64 (pow.f64 im 3) (*.f64 -1/6 (sin.f64 re)))
(*.f64 (*.f64 -1/6 (pow.f64 im 3)) (sin.f64 re))
Outputs
(*.f64 (neg.f64 im) (sin.f64 re))
Calls

3 calls:

8.0ms
(sin.f64 re)
6.0ms
re
5.0ms
im
Results
ErrorSegmentsBranch
1.5b1re
1.5b1im
1.5b1(sin.f64 re)
Compiler

Compiled 84 to 53 computations (36.9% saved)

simplify14.0ms (0.1%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
033185
155183
272183
384183
491183
593183
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))) (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im))) (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (neg.f64 im) (sin.f64 re))
(*.f64 (neg.f64 im) re)
Outputs
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))) (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (fma.f64 (sin.f64 re) (neg.f64 im) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 3) -1/6))) (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (sin.f64 re) 1/2)))
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 -1 (*.f64 (sin.f64 re) im))) (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (+.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 (neg.f64 im) (sin.f64 re))) (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (sin.f64 re) 1/2)))
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (-.f64 (*.f64 -1/6 (*.f64 (sin.f64 re) (pow.f64 im 3))) (*.f64 im (sin.f64 re))) (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (sin.f64 re) 1/2)))
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (*.f64 (*.f64 1/2 (sin.f64 re)) (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(if (<=.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 7378697629483821/147573952589676412928) (*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im)) (*.f64 (-.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (sin.f64 re) 1/2)))
(*.f64 (sin.f64 re) (-.f64 (*.f64 (pow.f64 im 3) -1/6) im))
(*.f64 (neg.f64 im) (sin.f64 re))
(*.f64 im (neg.f64 (sin.f64 re)))
(*.f64 (neg.f64 im) re)
(*.f64 im (neg.f64 re))
Compiler

Compiled 127 to 76 computations (40.2% saved)

soundness0.0ms (0%)

end69.0ms (0.6%)

Compiler

Compiled 117 to 54 computations (53.8% saved)

Profiling

Loading profile data...