Details

Time bar (total: 19.3s)

analyze501.0ms (2.6%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
50%50%50%0.1%0%0%0%5
50%50%50%0.1%0%0%0%6
55.2%50%40.6%0.1%9.4%0%0%7
56.1%50%39%0.1%10.9%0%0%8
59.8%50%33.6%0.1%16.4%0%0%9
60.7%50%32.4%0.1%17.6%0%0%10
62.9%50%29.5%0.1%20.5%0%0%11
63.4%50%28.8%0.1%21.2%0%0%12
Compiler

Compiled 15 to 12 computations (20% saved)

sample11.8s (61.5%)

Results
3.5s1988×body1024infinite
3.0s2119×body1024valid
2.4s5092×body256valid
1.9s990×body512infinite
681.0ms1038×body512valid
290.0ms1582×body256infinite
7.0msbody2048valid
Bogosity

preprocess86.0ms (0.4%)

Algorithm
egg-herbie
Rules
1138×rational.json-simplify-1
882×rational.json-simplify-44
872×rational.json-simplify-61
832×rational.json-simplify-26
822×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02170
13570
25570
38470
410870
514470
622570
749370
8158270
9278670
10755970
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 (-.f64 0 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 im)) (+.f64 (exp.f64 (-.f64 0 re)) (exp.f64 re)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.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 (*.f64 1/2 (sin.f64 im)) (+.f64 (exp.f64 (-.f64 0 re)) (exp.f64 re)))
(*.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))))
Compiler

Compiled 16 to 13 computations (18.8% saved)

simplify123.0ms (0.6%)

Algorithm
egg-herbie
Rules
2226×rational.json-simplify-1
1504×rational.json-simplify-35
1374×rational.json-simplify-2
1110×rational.json-simplify-26
942×rational.json-simplify-48
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01435
12235
23335
35035
46435
58535
612935
727135
877335
9219235
10274935
11343235
12536635
13641835
14753335
Stop Event
node limit
Counts
1 → 3
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.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))))

eval1.0ms (0%)

Compiler

Compiled 36 to 20 computations (44.4% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New213
Fresh101
Picked000
Done000
Total314
Error
0.0b
Counts
4 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
Compiler

Compiled 13 to 10 computations (23.1% saved)

localize12.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 40 to 11 computations (72.5% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite68.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1212×bool.json-1
1212×bool.json-2
1210×rational.json-simplify-35
1174×rational.json-1
1174×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01129
111529
233029
373129
4162129
5388429
Stop Event
node limit
Counts
1 → 10
Calls
Call 1
Inputs
(*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2)) (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (sin.f64 re) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4)))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))))

simplify150.0ms (0.8%)

Algorithm
egg-herbie
Rules
1630×rational.json-simplify-35
1222×rational.json-simplify-2
1076×rational.json-simplify-38
1036×rational.json-simplify-1
1016×rational.json-simplify-48
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0831300
11901270
23501178
36741120
417011120
528441120
637661120
739601120
844311120
953921120
1062401120
Stop Event
node limit
Counts
34 → 48
Calls
Call 1
Inputs
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 2 (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 1/12 (*.f64 (sin.f64 re) (pow.f64 im 4))) (+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (*.f64 1/12 (*.f64 (sin.f64 re) (pow.f64 im 4))) (+.f64 (*.f64 1/360 (*.f64 (sin.f64 re) (pow.f64 im 6))) (+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))))
(+.f64 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 0)
(+.f64 0 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(+.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2)) (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2)))
(-.f64 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 0)
(/.f64 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 1)
(/.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (sin.f64 re) 2)) 2)
(/.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4)) 4)
(/.f64 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4)))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4)))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))))) 32)
Outputs
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) (*.f64 -1/6 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 3))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 (pow.f64 re 3) -1/6)))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re)))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 5))) (+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) (*.f64 -1/6 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 3)))))
(+.f64 (+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 (pow.f64 re 3) -1/6))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 (pow.f64 re 5) 1/120)))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 -1/6 (pow.f64 re 3))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 re (*.f64 1/120 (pow.f64 re 5)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 re (+.f64 (*.f64 1/120 (pow.f64 re 5)) (*.f64 -1/6 (pow.f64 re 3)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (+.f64 re (*.f64 1/120 (pow.f64 re 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 3))) (+.f64 (*.f64 1/120 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 5))) (+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) (*.f64 -1/5040 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 7))))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 (pow.f64 re 7) -1/5040)) (+.f64 (+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 (pow.f64 re 3) -1/6))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 (pow.f64 re 5) 1/120))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 -1/6 (pow.f64 re 3))) (+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 re (*.f64 1/120 (pow.f64 re 5)))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 -1/5040 (pow.f64 re 7)))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 -1/6 (pow.f64 re 3))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/5040 (pow.f64 re 7))))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 -1/6 (pow.f64 re 3))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 re (+.f64 (*.f64 1/120 (pow.f64 re 5)) (*.f64 -1/5040 (pow.f64 re 7))))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 2 (sin.f64 re))
(*.f64 (sin.f64 re) 2)
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) 2))
(*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 1/12 (*.f64 (sin.f64 re) (pow.f64 im 4))) (+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) 2)) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 4) 1/12)))
(+.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) (*.f64 (sin.f64 re) (*.f64 1/12 (pow.f64 im 4))))
(*.f64 (sin.f64 re) (+.f64 (*.f64 1/12 (pow.f64 im 4)) (+.f64 2 (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 2 (+.f64 (pow.f64 im 2) (*.f64 1/12 (pow.f64 im 4)))))
(+.f64 (*.f64 1/12 (*.f64 (sin.f64 re) (pow.f64 im 4))) (+.f64 (*.f64 1/360 (*.f64 (sin.f64 re) (pow.f64 im 6))) (+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))))
(+.f64 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 6) 1/360)) (+.f64 (+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) 2)) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 4) 1/12))))
(+.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 (sin.f64 re) (*.f64 1/360 (pow.f64 im 6))) (*.f64 (sin.f64 re) (*.f64 1/12 (pow.f64 im 4)))))
(+.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) (*.f64 (sin.f64 re) (+.f64 (*.f64 1/360 (pow.f64 im 6)) (*.f64 1/12 (pow.f64 im 4)))))
(*.f64 (sin.f64 re) (+.f64 (*.f64 1/12 (pow.f64 im 4)) (+.f64 (pow.f64 im 2) (+.f64 2 (*.f64 1/360 (pow.f64 im 6))))))
(*.f64 (sin.f64 re) (+.f64 (pow.f64 im 2) (+.f64 (*.f64 1/12 (pow.f64 im 4)) (+.f64 2 (*.f64 1/360 (pow.f64 im 6))))))
(*.f64 (sin.f64 re) (+.f64 (*.f64 1/12 (pow.f64 im 4)) (+.f64 (*.f64 1/360 (pow.f64 im 6)) (+.f64 2 (pow.f64 im 2)))))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(+.f64 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 0)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(+.f64 0 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(+.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2)) (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2)))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(-.f64 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 0)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(/.f64 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))) 1)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(/.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (sin.f64 re) 2)) 2)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(/.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4)) 4)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(/.f64 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))) 8)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4)))) 16)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4)))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))))) 32)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re))

eval14.0ms (0.1%)

Compiler

Compiled 1095 to 572 computations (47.8% saved)

prune81.0ms (0.4%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New44448
Fresh000
Picked011
Done000
Total44549
Error
0.0b
Counts
49 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.7b
(*.f64 1/2 (+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) 2)))
32.5b
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))
0.0b
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
0.7b
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
0.9b
(*.f64 1/2 (*.f64 (sin.f64 re) 2))
Compiler

Compiled 60 to 47 computations (21.7% saved)

localize7.0ms (0%)

Compiler

Compiled 17 to 11 computations (35.3% saved)

localize125.0ms (0.6%)

Local error

Found 1 expressions with local error:

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

Compiled 34 to 23 computations (32.4% saved)

series3.0ms (0%)

Counts
1 → 16
Calls

6 calls:

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

rewrite174.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1586×bool.json-1
1586×bool.json-2
1548×rational.json-1
1548×rational.json-2
1548×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01023
110123
227823
356623
4119923
5271223
6598023
Stop Event
node limit
Counts
1 → 10
Calls
Call 1
Inputs
(*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2)) (*.f64 (sin.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8)) (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))))))

simplify189.0ms (1%)

Algorithm
egg-herbie
Rules
2112×rational.json-simplify-1
2060×rational.json-simplify-2
1358×rational.json-simplify-35
984×rational.json-simplify-43
976×rational.json-simplify-48
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
060964
1136720
2259684
3706666
42611666
53646666
64564666
74747666
85169666
96014666
107155666
117399666
Stop Event
node limit
Counts
26 → 31
Calls
Call 1
Inputs
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 -1/6 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 3))))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 5))) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 -1/6 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 3)))))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 5))) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 3))) (*.f64 -1/5040 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 7))))))
(*.f64 2 (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 (sin.f64 re) (pow.f64 im 2))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 (sin.f64 re) (pow.f64 im 2))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 0)
(+.f64 0 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
(+.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2)) (*.f64 (sin.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2)))
(-.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 0)
(/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1)
(/.f64 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 2)
(/.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 4)
(/.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8)) (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8))) 32)
Outputs
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 -1/6 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 3))))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (pow.f64 re 3) -1/6)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 5))) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 -1/6 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 3)))))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (pow.f64 re 3) -1/6)) (*.f64 1/120 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 5)))))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3)))) (*.f64 1/120 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 5))))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3)))))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 5))) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 3))) (*.f64 -1/5040 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 7))))))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (+.f64 (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (pow.f64 re 3) -1/6)) (*.f64 -1/5040 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 7)))) (*.f64 1/120 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 5)))))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 -1/6 (pow.f64 re 3))) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 re (*.f64 -1/5040 (pow.f64 re 7)))) (*.f64 1/120 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 5)))))
(+.f64 (*.f64 1/120 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 5))) (*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (+.f64 re (*.f64 -1/5040 (pow.f64 re 7))))))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (+.f64 (*.f64 -1/5040 (pow.f64 re 7)) (*.f64 -1/6 (pow.f64 re 3))))))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 re (+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 (*.f64 -1/5040 (pow.f64 re 7)) (*.f64 -1/6 (pow.f64 re 3))))))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (*.f64 -1/5040 (pow.f64 re 7)) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))))
(*.f64 2 (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (sin.f64 re) (pow.f64 im 2))
(*.f64 (pow.f64 im 2) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (sin.f64 re) (pow.f64 im 2))
(*.f64 (pow.f64 im 2) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 0)
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 0 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2)) (*.f64 (sin.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(-.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 0)
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1)
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 2)
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 (sin.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 4)
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8) 8)
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8)) 16)
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8)) (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 8))) 32)
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))

localize11.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 36 to 10 computations (72.2% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite172.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1054×rational.json-simplify-35
1010×bool.json-1
1010×bool.json-2
972×rational.json-1
972×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
110225
228125
362025
4135925
5324625
6766625
Stop Event
node limit
Counts
1 → 10
Calls
Call 1
Inputs
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re 1/2)) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 re re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8)) (*.f64 2 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))))))

simplify369.0ms (1.9%)

Algorithm
egg-herbie
Rules
2016×rational.json-simplify-2
1664×rational.json-simplify-35
1556×rational.json-simplify-46
892×rational.json-simplify-38
870×rational.json-simplify-1
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
060586
1129586
2253574
3532568
41751568
53106568
63835568
74170568
84332568
94544568
105082568
117249568
Stop Event
node limit
Counts
22 → 28
Calls
Call 1
Inputs
(*.f64 2 re)
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 1/12 (*.f64 re (pow.f64 im 4))) (*.f64 2 re)))
(+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 1/360 (*.f64 re (pow.f64 im 6))) (+.f64 (*.f64 1/12 (*.f64 re (pow.f64 im 4))) (*.f64 2 re))))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re)
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re)
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 0)
(+.f64 0 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re 1/2)) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re 1/2)))
(-.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 0)
(/.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 1)
(/.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 re re)) 2)
(/.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re 4)) 4)
(/.f64 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8)) (*.f64 2 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8))) 32)
Outputs
(*.f64 2 re)
(+.f64 re re)
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 1/12 (*.f64 re (pow.f64 im 4))) (*.f64 2 re)))
(+.f64 (*.f64 1/12 (*.f64 re (pow.f64 im 4))) (*.f64 re (+.f64 2 (pow.f64 im 2))))
(+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (*.f64 1/12 (*.f64 re (pow.f64 im 4))))
(*.f64 re (+.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 1/12 (pow.f64 im 4))))
(*.f64 re (+.f64 (*.f64 1/12 (pow.f64 im 4)) (+.f64 2 (pow.f64 im 2))))
(*.f64 re (+.f64 2 (+.f64 (pow.f64 im 2) (*.f64 1/12 (pow.f64 im 4)))))
(+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 1/360 (*.f64 re (pow.f64 im 6))) (+.f64 (*.f64 1/12 (*.f64 re (pow.f64 im 4))) (*.f64 2 re))))
(+.f64 (*.f64 1/360 (*.f64 re (pow.f64 im 6))) (+.f64 (*.f64 1/12 (*.f64 re (pow.f64 im 4))) (*.f64 re (+.f64 2 (pow.f64 im 2)))))
(+.f64 (+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (*.f64 1/12 (*.f64 re (pow.f64 im 4)))) (*.f64 1/360 (*.f64 re (pow.f64 im 6))))
(+.f64 (*.f64 re (*.f64 1/12 (pow.f64 im 4))) (*.f64 re (+.f64 (*.f64 1/360 (pow.f64 im 6)) (+.f64 2 (pow.f64 im 2)))))
(*.f64 re (+.f64 (*.f64 1/360 (pow.f64 im 6)) (+.f64 (*.f64 1/12 (pow.f64 im 4)) (+.f64 2 (pow.f64 im 2)))))
(*.f64 re (+.f64 (pow.f64 im 2) (+.f64 (*.f64 1/12 (pow.f64 im 4)) (+.f64 2 (*.f64 1/360 (pow.f64 im 6))))))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 0)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 0 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re 1/2)) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re 1/2)))
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(-.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 0)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(/.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 1)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(/.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 re re)) 2)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(/.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 re 4)) 4)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(/.f64 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8) 8)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8)) 16)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8)) (*.f64 2 (*.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re) 8))) 32)
(*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))

localize19.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 45 to 26 computations (42.2% saved)

series4.0ms (0%)

Counts
2 → 28
Calls

12 calls:

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

rewrite92.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
1688×bool.json-1
1688×bool.json-2
1650×rational.json-1
1650×rational.json-2
1060×bool.json-3
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01150
111140
230240
362540
4131340
5305340
6645140
Stop Event
node limit
Counts
2 → 43
Calls
Call 1
Inputs
(*.f64 (sin.f64 re) (pow.f64 im 2))
(+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 re) (pow.f64 im 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2)) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sin.f64 re) (pow.f64 im 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4)))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (sin.f64 re) (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) (pow.f64 im 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) (pow.f64 im 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (sin.f64 re) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) 2) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) 2) (/.f64 (+.f64 2 (pow.f64 im 2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) 2) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) 4) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (sin.f64 re) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 2 (pow.f64 im 2))) (*.f64 (sin.f64 re) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) 1/2) (*.f64 2 (+.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2) (*.f64 (sin.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4) (*.f64 (sin.f64 re) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (sin.f64 re) 1/4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 2 (pow.f64 im 2)) 2) (*.f64 (sin.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sin.f64 re) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)) (*.f64 (sin.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))))))

simplify287.0ms (1.5%)

Algorithm
egg-herbie
Rules
2336×rational.json-simplify-2
1788×rational.json-simplify-35
1058×rational.json-simplify-53
882×rational.json-simplify-51
872×rational.json-simplify-48
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01282389
12771889
26001853
315141829
430471829
538741829
640191829
742061829
846771829
955381829
1059851829
1166031829
1273251829
Stop Event
node limit
Counts
71 → 76
Calls
Call 1
Inputs
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (pow.f64 im 2))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2)))))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 2)) 1/3) (pow.f64 re 3)) (*.f64 (+.f64 2 (pow.f64 im 2)) re))
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 2)) 1/3) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 1/120 (pow.f64 im 2))))))
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 2)) 1/3) (pow.f64 re 3)) (+.f64 (*.f64 (-.f64 (*.f64 -1/5040 (pow.f64 im 2)) 1/2520) (pow.f64 re 7)) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 1/120 (pow.f64 im 2)))))))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 2 (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 (sin.f64 re) (pow.f64 im 2))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 (sin.f64 re) (pow.f64 im 2))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 0)
(+.f64 0 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2)) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2)))
(-.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 0)
(/.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 1)
(/.f64 (*.f64 2 (*.f64 (sin.f64 re) (pow.f64 im 2))) 2)
(/.f64 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4)) 4)
(/.f64 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4)))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4)))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4))))) 32)
(-.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 0)
(*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2)))
(*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1/2))
(*.f64 2 (+.f64 (sin.f64 re) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2))))
(*.f64 (*.f64 (sin.f64 re) 2) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2))
(*.f64 (*.f64 (sin.f64 re) 2) (/.f64 (+.f64 2 (pow.f64 im 2)) 2))
(*.f64 (*.f64 (sin.f64 re) 2) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))
(*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1)
(*.f64 1 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 1/2)
(*.f64 (*.f64 (sin.f64 re) 4) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 4 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (sin.f64 re) 1/4)))
(*.f64 4 (/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))
(*.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4) 1/4)
(*.f64 1/2 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))))
(*.f64 (*.f64 2 (+.f64 2 (pow.f64 im 2))) (*.f64 (sin.f64 re) 1/2))
(*.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1/2) 2)
(*.f64 (*.f64 (sin.f64 re) 1/2) (*.f64 2 (+.f64 2 (pow.f64 im 2))))
(*.f64 1/4 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2) (*.f64 (sin.f64 re) 2))
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4) (*.f64 (sin.f64 re) 4))
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (sin.f64 re) 1/4)) 4)
(*.f64 (/.f64 (+.f64 2 (pow.f64 im 2)) 2) (*.f64 (sin.f64 re) 2))
(*.f64 (/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4) 4)
(*.f64 (+.f64 (sin.f64 re) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2))) 2)
(*.f64 (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)) (*.f64 (sin.f64 re) 2))
(/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1)
(/.f64 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 2)
(/.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4)))) 32)
Outputs
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2)))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 -1/6 (*.f64 (pow.f64 im 2) (pow.f64 re 3))))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 3) -1/6)))
(*.f64 (pow.f64 im 2) (+.f64 re (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 im 2) (pow.f64 re 3))) (+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 1/120 (*.f64 (pow.f64 im 2) (pow.f64 re 5)))))
(+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 5) 1/120)) (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 3) -1/6))))
(+.f64 (*.f64 (pow.f64 im 2) (+.f64 re (*.f64 -1/6 (pow.f64 re 3)))) (*.f64 1/120 (*.f64 (pow.f64 im 2) (pow.f64 re 5))))
(*.f64 (pow.f64 im 2) (+.f64 (*.f64 1/120 (pow.f64 re 5)) (+.f64 re (*.f64 -1/6 (pow.f64 re 3)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (pow.f64 im 2))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 im 2) (pow.f64 re 3))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 im 2) (pow.f64 re 5))) (+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 -1/5040 (*.f64 (pow.f64 im 2) (pow.f64 re 7))))))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 3) -1/6)) (+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/5040 (pow.f64 re 7))) (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 5) 1/120)))))
(+.f64 (*.f64 (pow.f64 im 2) (+.f64 re (*.f64 -1/6 (pow.f64 re 3)))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 im 2) (pow.f64 re 5))) (*.f64 -1/5040 (*.f64 (pow.f64 im 2) (pow.f64 re 7)))))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/6 (pow.f64 re 3))) (*.f64 (pow.f64 im 2) (+.f64 (*.f64 -1/5040 (pow.f64 re 7)) (+.f64 re (*.f64 1/120 (pow.f64 re 5))))))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 2)) 1/3) (pow.f64 re 3)) (*.f64 (+.f64 2 (pow.f64 im 2)) re))
(+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (*.f64 (pow.f64 re 3) (-.f64 (*.f64 (pow.f64 im 2) -1/6) 1/3)))
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 2)) 1/3) (pow.f64 re 3)) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 1/120 (pow.f64 im 2))))))
(+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 (pow.f64 im 2) 1/120))) (*.f64 (pow.f64 re 3) (-.f64 (*.f64 (pow.f64 im 2) -1/6) 1/3))))
(+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 (pow.f64 im 2) -1/6) 1/3)) (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 (pow.f64 im 2) 1/120)))))
(+.f64 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 (pow.f64 im 2) -1/6) 1/3)) (+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 (pow.f64 im 2) 1/120)))))
(+.f64 (*.f64 (-.f64 (*.f64 -1/6 (pow.f64 im 2)) 1/3) (pow.f64 re 3)) (+.f64 (*.f64 (-.f64 (*.f64 -1/5040 (pow.f64 im 2)) 1/2520) (pow.f64 re 7)) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 1/120 (pow.f64 im 2)))))))
(+.f64 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 (pow.f64 im 2) -1/6) 1/3)) (+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 (pow.f64 im 2) 1/120))) (*.f64 (pow.f64 re 7) (-.f64 (*.f64 (pow.f64 im 2) -1/5040) 1/2520)))))
(+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (+.f64 (+.f64 (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 (pow.f64 im 2) 1/120))) (*.f64 (pow.f64 re 7) (-.f64 (*.f64 (pow.f64 im 2) -1/5040) 1/2520))) (*.f64 (pow.f64 re 3) (-.f64 (*.f64 (pow.f64 im 2) -1/6) 1/3))))
(+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 (pow.f64 im 2) -1/6) 1/3)) (+.f64 (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 (pow.f64 im 2) 1/120))) (*.f64 (pow.f64 re 7) (-.f64 (*.f64 (pow.f64 im 2) -1/5040) 1/2520)))))
(+.f64 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 (pow.f64 im 2) -1/6) 1/3)) (+.f64 (*.f64 (pow.f64 re 5) (+.f64 1/60 (*.f64 (pow.f64 im 2) 1/120))) (+.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) (*.f64 (pow.f64 re 7) (-.f64 (*.f64 (pow.f64 im 2) -1/5040) 1/2520)))))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 2 (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (sin.f64 re) (pow.f64 im 2))
(*.f64 (pow.f64 im 2) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (sin.f64 re) (pow.f64 im 2))
(*.f64 (pow.f64 im 2) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 2 (sin.f64 re)) (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 0)
(*.f64 (pow.f64 im 2) (sin.f64 re))
(+.f64 0 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 (pow.f64 im 2) (sin.f64 re))
(+.f64 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2)) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2)))
(*.f64 (pow.f64 im 2) (sin.f64 re))
(-.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 0)
(*.f64 (pow.f64 im 2) (sin.f64 re))
(/.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 1)
(*.f64 (pow.f64 im 2) (sin.f64 re))
(/.f64 (*.f64 2 (*.f64 (sin.f64 re) (pow.f64 im 2))) 2)
(*.f64 (pow.f64 im 2) (sin.f64 re))
(/.f64 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4)) 4)
(*.f64 (pow.f64 im 2) (sin.f64 re))
(/.f64 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4))) 8)
(*.f64 (pow.f64 im 2) (sin.f64 re))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4)))) 16)
(*.f64 (pow.f64 im 2) (sin.f64 re))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4)))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 4))))) 32)
(*.f64 (pow.f64 im 2) (sin.f64 re))
(-.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 0)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1/2))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 2 (+.f64 (sin.f64 re) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2))))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (sin.f64 re) 2) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (sin.f64 re) 2) (/.f64 (+.f64 2 (pow.f64 im 2)) 2))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (sin.f64 re) 2) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 1 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 1/2)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (sin.f64 re) 4) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 4 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (sin.f64 re) 1/4)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 4 (/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4) 1/4)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 1/2 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 2 (+.f64 2 (pow.f64 im 2))) (*.f64 (sin.f64 re) 1/2))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1/2) 2)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (sin.f64 re) 1/2) (*.f64 2 (+.f64 2 (pow.f64 im 2))))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 1/4 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2) (*.f64 (sin.f64 re) 2))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4) (*.f64 (sin.f64 re) 4))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (sin.f64 re) 1/4)) 4)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (/.f64 (+.f64 2 (pow.f64 im 2)) 2) (*.f64 (sin.f64 re) 2))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4) 4)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (+.f64 (sin.f64 re) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 2) 1/2))) 2)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(*.f64 (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)) (*.f64 (sin.f64 re) 2))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 1)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 (sin.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 2)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4) 4)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4)) 8)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))) 16)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))) 4)))) 32)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) (*.f64 2 (sin.f64 re)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (sin.f64 re))

eval233.0ms (1.2%)

Compiler

Compiled 2662 to 1999 computations (24.9% saved)

prune194.0ms (1%)

Pruning

8 alts after pruning (3 fresh and 5 done)

PrunedKeptTotal
New1323135
Fresh000
Picked011
Done044
Total1328140
Error
0.0b
Counts
140 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.7b
(*.f64 1/2 (+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) 2)))
33.0b
(*.f64 1/2 (+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re)))
33.0b
(*.f64 1/2 (+.f64 re re))
32.5b
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))
33.0b
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) re))
0.0b
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
0.7b
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
0.9b
(*.f64 1/2 (*.f64 (sin.f64 re) 2))
Compiler

Compiled 91 to 71 computations (22% saved)

localize11.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 30 to 22 computations (26.7% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite93.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
1574×bool.json-1
1574×bool.json-2
1542×rational.json-1
1542×rational.json-2
1542×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
17919
221119
342819
487919
5192019
6391519
7626319
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 2 (pow.f64 im 2)) re))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 re 1/2)) (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 re re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 re 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2))))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2)))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 2 (pow.f64 im 2)) re)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 (+.f64 2 (pow.f64 im 2)) re))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 2 (pow.f64 im 2)) re) (*.f64 (+.f64 2 (pow.f64 im 2)) re))))))

simplify2.3s (12%)

Algorithm
egg-herbie
Rules
4266×rational.json-simplify-35
2876×rational.json-simplify-2
1872×rational.json-simplify-53
1394×rational.json-simplify-1
1084×rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
041413
195413
2197413
3450413
41511413
53065413
64225413
74337413
84404413
94469413
104534413
114599413
125108413
135306413
145422413
155487413
165552413
175617413
185682413
195747413
205747413
215747413
225981413
236255413
246372413
256459413
266527413
276592413
286657413
296722413
306787413
316852413
326917413
337308413
347373413
357438413
367503413
377568413
387633413
397698413
407763413
417763413
427828413
437893413
447958413
Stop Event
node limit
Counts
23 → 16
Calls
Call 1
Inputs
(*.f64 2 re)
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) 0)
(+.f64 0 (*.f64 (+.f64 2 (pow.f64 im 2)) re))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 re 1/2)) (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 re 1/2)))
(-.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) 0)
(/.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) 1)
(/.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 re re)) 2)
(/.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 re 4)) 4)
(/.f64 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2))) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2)))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2))))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2))))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2)))))) 64)
Outputs
(*.f64 2 re)
(+.f64 re re)
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) 0)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 0 (*.f64 (+.f64 2 (pow.f64 im 2)) re))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 re 1/2)) (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 re 1/2)))
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(-.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) 0)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(/.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) re) 1)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(/.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 re re)) 2)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(/.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 re 4)) 4)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(/.f64 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2))) 8)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(/.f64 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2)))) 16)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2))))) 32)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2))))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (+.f64 2 (pow.f64 im 2)))))) 64)
(*.f64 re (+.f64 2 (pow.f64 im 2)))

localize4.0ms (0%)

Compiler

Compiled 12 to 6 computations (50% saved)

localize193.0ms (1%)

Local error

Found 2 expressions with local error:

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

Compiled 37 to 25 computations (32.4% saved)

series2.0ms (0%)

Counts
2 → 15
Calls

12 calls:

TimeVariablePointExpression
0.0ms
re
@inf
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
0.0ms
re
@inf
(*.f64 re (pow.f64 im 2))
0.0ms
re
@0
(*.f64 re (pow.f64 im 2))
0.0ms
im
@inf
(*.f64 re (pow.f64 im 2))
0.0ms
re
@0
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))

rewrite83.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1428×bool.json-1
1428×bool.json-2
1386×rational.json-1
1386×rational.json-2
1386×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0932
19132
224632
349732
4101232
5236332
6517032
Stop Event
node limit
Counts
2 → 49
Calls
Call 1
Inputs
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 re (pow.f64 im 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 re (pow.f64 im 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 re (pow.f64 im 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 re (pow.f64 im 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 re (*.f64 (pow.f64 im 2) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 re (pow.f64 im 2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 re (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 re (pow.f64 im 2)) (*.f64 re (pow.f64 im 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 re (pow.f64 im 2)) (*.f64 re (pow.f64 im 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 re (+.f64 2 (pow.f64 im 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 re (+.f64 1 (+.f64 (pow.f64 im 2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 re (*.f64 (pow.f64 im 2) (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re re) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 re (+.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 2 (pow.f64 im 2)) re)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 re 4) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 re 4) (+.f64 1/2 (*.f64 (pow.f64 im 2) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 re re) (+.f64 2 (pow.f64 im 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 2 (pow.f64 im 2)) (/.f64 re 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (+.f64 (*.f64 re 1/2) (*.f64 (pow.f64 im 2) (/.f64 re 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (+.f64 (*.f64 re 1/2) (/.f64 (*.f64 re (pow.f64 im 2)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 re (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 2 (pow.f64 im 2))) (*.f64 re 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 re re) (+.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 re 4) (*.f64 (pow.f64 im 2) (+.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) (*.f64 re 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 re 1/2) (*.f64 2 (+.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 re 1/2) (+.f64 4 (*.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 re 1/2) (+.f64 (*.f64 2 (pow.f64 im 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (*.f64 (pow.f64 im 2) (*.f64 re 1/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2) (+.f64 re re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 re (*.f64 (+.f64 2 (pow.f64 im 2)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4) (*.f64 re 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (/.f64 re 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)) (+.f64 re re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re re) (+.f64 2 (pow.f64 im 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 re (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 re (+.f64 2 (pow.f64 im 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 re (+.f64 2 (pow.f64 im 2))) (*.f64 re (+.f64 2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 re (+.f64 2 (pow.f64 im 2))) (*.f64 re (+.f64 2 (pow.f64 im 2))))))))

simplify384.0ms (2%)

Algorithm
egg-herbie
Rules
2492×rational.json-simplify-35
2006×rational.json-simplify-2
1398×rational.json-simplify-53
942×rational.json-simplify-52
858×rational.json-simplify-1
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01121174
12381174
24971162
315591162
432961162
539481162
641391162
742991162
844571162
946041162
1052071162
1158361162
1262321162
1367151162
1472551162
1577161162
1677521162
1779371162
Stop Event
node limit
Counts
64 → 56
Calls
Call 1
Inputs
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 -1 (*.f64 re (-.f64 (*.f64 -1 (pow.f64 im 2)) 2)))
(*.f64 -1 (*.f64 re (-.f64 (*.f64 -1 (pow.f64 im 2)) 2)))
(*.f64 -1 (*.f64 re (-.f64 (*.f64 -1 (pow.f64 im 2)) 2)))
(*.f64 -1 (*.f64 re (-.f64 (*.f64 -1 (pow.f64 im 2)) 2)))
(*.f64 2 re)
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 re (pow.f64 im 2)) 0)
(+.f64 0 (*.f64 re (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))
(-.f64 (*.f64 re (pow.f64 im 2)) 0)
(/.f64 (*.f64 re (pow.f64 im 2)) 1)
(/.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) 2)
(/.f64 (*.f64 re (*.f64 (pow.f64 im 2) 4)) 4)
(/.f64 (*.f64 (*.f64 re (pow.f64 im 2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8)))) 64)
(-.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 0)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(*.f64 re (+.f64 1 (+.f64 (pow.f64 im 2) 1)))
(*.f64 2 (+.f64 re (*.f64 (pow.f64 im 2) (*.f64 re 1/2))))
(*.f64 (+.f64 re re) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2))
(*.f64 (+.f64 re re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))
(*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 1)
(*.f64 1 (*.f64 re (+.f64 2 (pow.f64 im 2))))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 re 4) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4))
(*.f64 (*.f64 re 4) (+.f64 1/2 (*.f64 (pow.f64 im 2) 1/4)))
(*.f64 (*.f64 (+.f64 re re) (+.f64 2 (pow.f64 im 2))) 1/2)
(*.f64 4 (*.f64 (+.f64 2 (pow.f64 im 2)) (/.f64 re 4)))
(*.f64 4 (/.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 4))
(*.f64 4 (+.f64 (*.f64 re 1/2) (*.f64 (pow.f64 im 2) (/.f64 re 4))))
(*.f64 4 (+.f64 (*.f64 re 1/2) (/.f64 (*.f64 re (pow.f64 im 2)) 4)))
(*.f64 (*.f64 re (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 1/4)
(*.f64 (*.f64 2 (+.f64 2 (pow.f64 im 2))) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 (+.f64 re re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (+.f64 (*.f64 re 4) (*.f64 (pow.f64 im 2) (+.f64 re re))))
(*.f64 1/2 (+.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) (*.f64 re 4)))
(*.f64 (*.f64 re 1/2) (*.f64 2 (+.f64 2 (pow.f64 im 2))))
(*.f64 (*.f64 re 1/2) (+.f64 4 (*.f64 2 (pow.f64 im 2))))
(*.f64 (*.f64 re 1/2) (+.f64 (*.f64 2 (pow.f64 im 2)) 4))
(*.f64 (+.f64 re (*.f64 (pow.f64 im 2) (*.f64 re 1/2))) 2)
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2) (+.f64 re re))
(*.f64 1/4 (*.f64 re (*.f64 (+.f64 2 (pow.f64 im 2)) 4)))
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4) (*.f64 re 4))
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (/.f64 re 4)) 4)
(*.f64 (/.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 4) 4)
(*.f64 (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)) (+.f64 re re))
(/.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 1)
(/.f64 (*.f64 (+.f64 re re) (+.f64 2 (pow.f64 im 2))) 2)
(/.f64 (*.f64 re (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 4)
(/.f64 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8)))) 64)
Outputs
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 -1 (*.f64 re (-.f64 (*.f64 -1 (pow.f64 im 2)) 2)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 -1 (*.f64 re (-.f64 (*.f64 -1 (pow.f64 im 2)) 2)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 -1 (*.f64 re (-.f64 (*.f64 -1 (pow.f64 im 2)) 2)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 -1 (*.f64 re (-.f64 (*.f64 -1 (pow.f64 im 2)) 2)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 2 re)
(+.f64 re re)
(*.f64 re (pow.f64 im 2))
(*.f64 (pow.f64 im 2) re)
(*.f64 re (pow.f64 im 2))
(*.f64 (pow.f64 im 2) re)
(+.f64 (*.f64 re (pow.f64 im 2)) 0)
(*.f64 (pow.f64 im 2) re)
(+.f64 0 (*.f64 re (pow.f64 im 2)))
(*.f64 (pow.f64 im 2) re)
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))
(*.f64 (pow.f64 im 2) re)
(-.f64 (*.f64 re (pow.f64 im 2)) 0)
(*.f64 (pow.f64 im 2) re)
(/.f64 (*.f64 re (pow.f64 im 2)) 1)
(*.f64 (pow.f64 im 2) re)
(/.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) 2)
(*.f64 (pow.f64 im 2) re)
(/.f64 (*.f64 re (*.f64 (pow.f64 im 2) 4)) 4)
(*.f64 (pow.f64 im 2) re)
(/.f64 (*.f64 (*.f64 re (pow.f64 im 2)) 8) 8)
(*.f64 (pow.f64 im 2) re)
(/.f64 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8)) 16)
(*.f64 (pow.f64 im 2) re)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8))) 32)
(*.f64 (pow.f64 im 2) re)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (pow.f64 im 2)) 8)))) 64)
(*.f64 (pow.f64 im 2) re)
(-.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 0)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 re (+.f64 2 (pow.f64 im 2)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 re (+.f64 1 (+.f64 (pow.f64 im 2) 1)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 2 (+.f64 re (*.f64 (pow.f64 im 2) (*.f64 re 1/2))))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 re re) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 re re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 1)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 1 (*.f64 re (+.f64 2 (pow.f64 im 2))))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 re 4) (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 re 4) (+.f64 1/2 (*.f64 (pow.f64 im 2) 1/4)))
(*.f64 re (*.f64 4 (+.f64 1/2 (*.f64 (pow.f64 im 2) 1/4))))
(*.f64 (*.f64 (+.f64 re re) (+.f64 2 (pow.f64 im 2))) 1/2)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 4 (*.f64 (+.f64 2 (pow.f64 im 2)) (/.f64 re 4)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 4 (/.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 4))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 4 (+.f64 (*.f64 re 1/2) (*.f64 (pow.f64 im 2) (/.f64 re 4))))
(*.f64 4 (*.f64 re (+.f64 1/2 (/.f64 (pow.f64 im 2) 4))))
(*.f64 4 (+.f64 (*.f64 re 1/2) (/.f64 (*.f64 re (pow.f64 im 2)) 4)))
(*.f64 4 (+.f64 (*.f64 re 1/2) (*.f64 (pow.f64 im 2) (/.f64 re 4))))
(*.f64 4 (*.f64 re (+.f64 1/2 (/.f64 (pow.f64 im 2) 4))))
(*.f64 (*.f64 re (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 1/4)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 2 (+.f64 2 (pow.f64 im 2))) (*.f64 re 1/2))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 1/2 (*.f64 (+.f64 re re) (+.f64 2 (pow.f64 im 2))))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 1/2 (+.f64 (*.f64 re 4) (*.f64 (pow.f64 im 2) (+.f64 re re))))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 1/2 (+.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) (*.f64 re 4)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 re 1/2) (*.f64 2 (+.f64 2 (pow.f64 im 2))))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 re 1/2) (+.f64 4 (*.f64 2 (pow.f64 im 2))))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 re 1/2) (+.f64 (*.f64 2 (pow.f64 im 2)) 4))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 re (*.f64 (pow.f64 im 2) (*.f64 re 1/2))) 2)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/2) (+.f64 re re))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 1/4 (*.f64 re (*.f64 (+.f64 2 (pow.f64 im 2)) 4)))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) 1/4) (*.f64 re 4))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (/.f64 re 4)) 4)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (/.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 4) 4)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(*.f64 (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)) (+.f64 re re))
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(/.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 1)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(/.f64 (*.f64 (+.f64 re re) (+.f64 2 (pow.f64 im 2))) 2)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(/.f64 (*.f64 re (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 4)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(/.f64 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8) 8)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(/.f64 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8)) 16)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8))) 32)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re (+.f64 2 (pow.f64 im 2))) 8)))) 64)
(*.f64 (+.f64 2 (pow.f64 im 2)) re)

eval22.0ms (0.1%)

Compiler

Compiled 962 to 769 computations (20.1% saved)

prune14.0ms (0.1%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New71172
Fresh000
Picked011
Done077
Total71980
Error
0.0b
Counts
80 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.7b
(*.f64 1/2 (+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) 2)))
33.0b
(*.f64 1/2 (+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re)))
33.0b
(*.f64 1/2 (+.f64 re re))
61.0b
(*.f64 1/2 (*.f64 (pow.f64 im 2) re))
32.5b
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))
33.0b
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) re))
0.0b
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
0.7b
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
0.9b
(*.f64 1/2 (*.f64 (sin.f64 re) 2))
Compiler

Compiled 100 to 78 computations (22% saved)

localize8.0ms (0%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 14 computations (33.3% saved)

series2.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite182.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1904×bool.json-1
1904×bool.json-2
1152×rational.json-1
1152×rational.json-2
1152×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0932
19032
224432
350532
499632
5212532
6441632
7756532
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 (pow.f64 im 2) re)
(*.f64 1/2 (*.f64 (pow.f64 im 2) re))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 2) re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 im 2) re))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (pow.f64 im 2) re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) (*.f64 re 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 re 8) (pow.f64 im 2)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (pow.f64 im 2) re)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (pow.f64 im 2) re) (*.f64 (pow.f64 im 2) re))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (pow.f64 im 2) re) (*.f64 (pow.f64 im 2) re))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 2) (/.f64 re 4)) (*.f64 (pow.f64 im 2) (/.f64 re 4)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) re) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) (*.f64 re 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 re 8) (pow.f64 im 2)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (pow.f64 im 2) (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))))))

simplify832.0ms (4.3%)

Algorithm
egg-herbie
Rules
4018×rational.json-simplify-2
3206×rational.json-simplify-35
2346×rational.json-simplify-53
856×rational.json-simplify-1
728×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0521120
11261120
22591120
36481120
419341120
534491120
639231120
740451120
841391120
942301120
1043191120
1151851120
1252801120
1353691120
1454581120
1554581120
1655471120
1762441120
1865881120
1969571120
2074381120
2177391120
2278281120
2379191120
Stop Event
node limit
Counts
70 → 26
Calls
Call 1
Inputs
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) re) 0)
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))
(+.f64 0 (*.f64 (pow.f64 im 2) re))
(-.f64 (*.f64 (pow.f64 im 2) re) 0)
(/.f64 (*.f64 (pow.f64 im 2) re) 1)
(/.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) 2)
(/.f64 (*.f64 (pow.f64 im 2) (*.f64 re 4)) 4)
(/.f64 (*.f64 (*.f64 re 8) (pow.f64 im 2)) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2))))) 64)
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) 0)
(+.f64 0 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))
(+.f64 (*.f64 (pow.f64 im 2) (/.f64 re 4)) (*.f64 (pow.f64 im 2) (/.f64 re 4)))
(-.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) 0)
(/.f64 (*.f64 (pow.f64 im 2) re) 2)
(/.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) 1)
(/.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) 4)
(/.f64 (*.f64 (pow.f64 im 2) (*.f64 re 4)) 8)
(/.f64 (*.f64 (*.f64 re 8) (pow.f64 im 2)) 16)
(/.f64 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2)))) 64)
Outputs
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(+.f64 (*.f64 (pow.f64 im 2) re) 0)
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))
(*.f64 re (pow.f64 im 2))
(+.f64 0 (*.f64 (pow.f64 im 2) re))
(*.f64 re (pow.f64 im 2))
(-.f64 (*.f64 (pow.f64 im 2) re) 0)
(*.f64 re (pow.f64 im 2))
(/.f64 (*.f64 (pow.f64 im 2) re) 1)
(*.f64 re (pow.f64 im 2))
(/.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) 2)
(*.f64 re (pow.f64 im 2))
(/.f64 (*.f64 (pow.f64 im 2) (*.f64 re 4)) 4)
(*.f64 re (pow.f64 im 2))
(/.f64 (*.f64 (*.f64 re 8) (pow.f64 im 2)) 8)
(*.f64 re (pow.f64 im 2))
(/.f64 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2))) 16)
(*.f64 re (pow.f64 im 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2)))) 32)
(*.f64 re (pow.f64 im 2))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2))))) 64)
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) 0)
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(+.f64 0 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(+.f64 (*.f64 (pow.f64 im 2) (/.f64 re 4)) (*.f64 (pow.f64 im 2) (/.f64 re 4)))
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(-.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) 0)
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(/.f64 (*.f64 (pow.f64 im 2) re) 2)
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(/.f64 (*.f64 (pow.f64 im 2) (*.f64 re 1/2)) 1)
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(/.f64 (*.f64 (pow.f64 im 2) (+.f64 re re)) 4)
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(/.f64 (*.f64 (pow.f64 im 2) (*.f64 re 4)) 8)
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(/.f64 (*.f64 (*.f64 re 8) (pow.f64 im 2)) 16)
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(/.f64 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2))) 32)
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 re 8) (pow.f64 im 2)))) 64)
(*.f64 re (*.f64 (pow.f64 im 2) 1/2))
(*.f64 (pow.f64 im 2) (*.f64 re 1/2))

eval6.0ms (0%)

Compiler

Compiled 280 to 219 computations (21.8% saved)

prune9.0ms (0%)

Pruning

9 alts after pruning (0 fresh and 9 done)

PrunedKeptTotal
New26026
Fresh000
Picked011
Done088
Total26935
Error
0.0b
Counts
35 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.7b
(*.f64 1/2 (+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) 2)))
33.0b
(*.f64 1/2 (+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re)))
33.0b
(*.f64 1/2 (+.f64 re re))
61.0b
(*.f64 1/2 (*.f64 (pow.f64 im 2) re))
32.5b
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) re))
33.0b
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) re))
0.0b
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
0.7b
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
0.9b
(*.f64 1/2 (*.f64 (sin.f64 re) 2))
Compiler

Compiled 100 to 78 computations (22% saved)

regimes81.0ms (0.4%)

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

6 calls:

50.0ms
(sin.f64 re)
7.0ms
re
7.0ms
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
6.0ms
(*.f64 1/2 (sin.f64 re))
6.0ms
im
Results
ErrorSegmentsBranch
0.0b1re
0.0b1im
0.0b1(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
0.0b1(*.f64 1/2 (sin.f64 re))
0.0b1(sin.f64 re)
0.0b1(+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im))
Compiler

Compiled 135 to 93 computations (31.1% saved)

regimes62.0ms (0.3%)

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

3 calls:

51.0ms
re
5.0ms
(sin.f64 re)
5.0ms
im
Results
ErrorSegmentsBranch
0.7b1re
0.7b1im
0.7b1(sin.f64 re)
Compiler

Compiled 70 to 51 computations (27.1% saved)

regimes15.0ms (0.1%)

Accuracy

Total -60.4b remaining (-6603.6%)

Threshold costs -60.4b (-6603.6%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (+.f64 re re))
(*.f64 1/2 (*.f64 (sin.f64 re) 2))
(*.f64 1/2 (*.f64 (pow.f64 im 2) re))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) re))
(*.f64 1/2 (+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 2 re)))
Outputs
(*.f64 1/2 (*.f64 (sin.f64 re) 2))
Calls

3 calls:

5.0ms
im
4.0ms
(sin.f64 re)
4.0ms
re
Results
ErrorSegmentsBranch
0.9b1re
0.9b1im
0.9b1(sin.f64 re)
Compiler

Compiled 50 to 37 computations (26% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02294
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (sin.f64 re) 2))
(*.f64 1/2 (+.f64 re re))
Outputs
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (sin.f64 re) 2))
(*.f64 1/2 (+.f64 re re))
Compiler

Compiled 40 to 32 computations (20% saved)

soundness161.0ms (0.8%)

Algorithm
egg-herbie
Rules
2226×rational.json-simplify-1
1504×rational.json-simplify-35
1374×rational.json-simplify-2
1110×rational.json-simplify-26
942×rational.json-simplify-48
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01435
12235
23335
35035
46435
58535
612935
727135
877335
9219235
10274935
11343235
12536635
13641835
14753335
Stop Event
node limit
Compiler

Compiled 188 to 125 computations (33.5% saved)

end35.0ms (0.2%)

Compiler

Compiled 34 to 24 computations (29.4% saved)

Profiling

Loading profile data...