Details

Time bar (total: 11.5s)

analyze382.0ms (3.3%)

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
57.1%50%37.5%0.1%12.5%0%0%7
57.1%50%37.5%0.1%12.5%0%0%8
61.5%50%31.2%0.1%18.7%0%0%9
61.5%50%31.2%0.1%18.7%0%0%10
64%50%28.1%0.1%21.9%0%0%11
64%50%28.1%0.1%21.9%0%0%12
Compiler

Compiled 14 to 11 computations (21.4% saved)

sample8.4s (73.2%)

Results
3.5s2057×body1024valid
1.5s5170×body256valid
1.3s2155×body1024infinite
883.0ms1025×body512valid
803.0ms1032×body512infinite
482.0ms1494×body256infinite
3.0msbody2048valid
Bogosity

preprocess131.0ms (1.1%)

Algorithm
egg-herbie
Rules
1268×rational.json-simplify-46
896×rational.json-simplify-59
882×rational.json-simplify-35
868×rational.json-simplify-2
828×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02070
13970
26570
39570
415470
526670
661170
7150370
8253070
9382670
10588270
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (cos.f64 im)) (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re)))
Outputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (*.f64 1/2 (cos.f64 im)) (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re)))
(*.f64 1/2 (*.f64 (cos.f64 im) (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re))))
(*.f64 (cos.f64 im) (*.f64 1/2 (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re))))
Compiler

Compiled 15 to 12 computations (20% saved)

simplify516.0ms (4.5%)

Algorithm
egg-herbie
Rules
2312×rational.json-simplify-35
1800×rational.json-simplify-2
1792×rational.json-simplify-1
1510×rational.json-simplify-52
780×rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01335
12535
24335
36335
49535
515135
631035
770035
8173835
9273635
10322035
11412935
12453235
13474435
14488235
15499835
16545935
17664535
18682335
19694935
20706335
21717735
22717735
23769435
24773935
25789035
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))

eval1.0ms (0%)

Compiler

Compiled 24 to 13 computations (45.8% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 13 to 10 computations (23.1% saved)

localize13.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 35 to 13 computations (62.9% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite88.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1980×bool.json-1
1980×bool.json-2
1426×bool.json-3
946×rational.json-simplify-35
872×rational.json-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
18319
224219
354519
4120219
5288019
6691219
Stop Event
node limit
Counts
1 → 28
Calls
Call 1
Inputs
(+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (exp.f64 (neg.f64 im)) (+.f64 1 (exp.f64 (+.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (exp.f64 im) (+.f64 1 (exp.f64 (*.f64 im -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (exp.f64 im) (+.f64 (exp.f64 (*.f64 im -2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (exp.f64 im) 1/2) (/.f64 1/2 (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (/.f64 1/2 (exp.f64 im)) (*.f64 (exp.f64 im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (exp.f64 im) 2) (+.f64 1/2 (/.f64 1/2 (exp.f64 (+.f64 im im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (exp.f64 im) 2) (/.f64 2 (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (/.f64 2 (exp.f64 im)) (*.f64 (exp.f64 im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (exp.f64 im) 1/2) (+.f64 2 (/.f64 2 (exp.f64 (+.f64 im im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (exp.f64 im) 1/2) (+.f64 (/.f64 2 (exp.f64 (+.f64 im im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (exp.f64 (+.f64 im im))) (exp.f64 (neg.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.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)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8)) (*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))

simplify92.0ms (0.8%)

Algorithm
egg-herbie
Rules
1226×rational.json-simplify-1
1068×rational.json-simplify-2
994×rational.json-simplify-61
840×rational.json-simplify-35
834×rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
092934
1170934
2364934
3805934
41298934
52940934
65984934
Stop Event
node limit
Counts
40 → 44
Calls
Call 1
Inputs
2
(+.f64 2 (pow.f64 im 2))
(+.f64 2 (+.f64 (pow.f64 im 2) (*.f64 1/12 (pow.f64 im 4))))
(+.f64 2 (+.f64 (pow.f64 im 2) (+.f64 (*.f64 1/12 (pow.f64 im 4)) (*.f64 1/360 (pow.f64 im 6)))))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))
(+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))
(+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))
(+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))
(-.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 0)
(*.f64 (exp.f64 (neg.f64 im)) (+.f64 1 (exp.f64 (+.f64 im im))))
(*.f64 (exp.f64 im) (+.f64 1 (exp.f64 (*.f64 im -2))))
(*.f64 (exp.f64 im) (+.f64 (exp.f64 (*.f64 im -2)) 1))
(*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1)
(*.f64 1 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2))
(*.f64 2 (+.f64 (*.f64 (exp.f64 im) 1/2) (/.f64 1/2 (exp.f64 im))))
(*.f64 2 (+.f64 (/.f64 1/2 (exp.f64 im)) (*.f64 (exp.f64 im) 1/2)))
(*.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 2) 1/2)
(*.f64 (*.f64 (exp.f64 im) 2) (+.f64 1/2 (/.f64 1/2 (exp.f64 (+.f64 im im)))))
(*.f64 4 (/.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))
(*.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 2))
(*.f64 1/2 (+.f64 (*.f64 (exp.f64 im) 2) (/.f64 2 (exp.f64 im))))
(*.f64 1/2 (+.f64 (/.f64 2 (exp.f64 im)) (*.f64 (exp.f64 im) 2)))
(*.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2) 2)
(*.f64 (*.f64 (exp.f64 im) 1/2) (+.f64 2 (/.f64 2 (exp.f64 (+.f64 im im)))))
(*.f64 (*.f64 (exp.f64 im) 1/2) (+.f64 (/.f64 2 (exp.f64 (+.f64 im im))) 2))
(*.f64 (+.f64 1 (exp.f64 (+.f64 im im))) (exp.f64 (neg.f64 im)))
(*.f64 1/4 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))
(*.f64 (/.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4) 4)
(/.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1)
(/.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 2) 2)
(/.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4) 4)
(/.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8)) (*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8))) 32)
Outputs
2
(+.f64 2 (pow.f64 im 2))
(+.f64 2 (+.f64 (pow.f64 im 2) (*.f64 1/12 (pow.f64 im 4))))
(+.f64 (*.f64 1/12 (pow.f64 im 4)) (+.f64 2 (pow.f64 im 2)))
(+.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 1/12 (pow.f64 im 4)))
(+.f64 2 (+.f64 (pow.f64 im 2) (+.f64 (*.f64 1/12 (pow.f64 im 4)) (*.f64 1/360 (pow.f64 im 6)))))
(+.f64 2 (+.f64 (*.f64 1/360 (pow.f64 im 6)) (+.f64 (pow.f64 im 2) (*.f64 1/12 (pow.f64 im 4)))))
(+.f64 2 (+.f64 (+.f64 (pow.f64 im 2) (*.f64 1/12 (pow.f64 im 4))) (*.f64 1/360 (pow.f64 im 6))))
(+.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (*.f64 1/12 (pow.f64 im 4)) (*.f64 1/360 (pow.f64 im 6))))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(-.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 0)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 (exp.f64 (neg.f64 im)) (+.f64 1 (exp.f64 (+.f64 im im))))
(*.f64 (exp.f64 im) (+.f64 1 (exp.f64 (*.f64 im -2))))
(*.f64 (exp.f64 im) (+.f64 (exp.f64 (*.f64 im -2)) 1))
(*.f64 (exp.f64 im) (+.f64 1 (exp.f64 (*.f64 im -2))))
(*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 1 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 2 (+.f64 (*.f64 (exp.f64 im) 1/2) (/.f64 1/2 (exp.f64 im))))
(*.f64 2 (+.f64 (/.f64 1/2 (exp.f64 im)) (*.f64 (exp.f64 im) 1/2)))
(*.f64 2 (+.f64 (*.f64 (exp.f64 im) 1/2) (/.f64 1/2 (exp.f64 im))))
(*.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 2) 1/2)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 (*.f64 (exp.f64 im) 2) (+.f64 1/2 (/.f64 1/2 (exp.f64 (+.f64 im im)))))
(*.f64 (*.f64 2 (exp.f64 im)) (+.f64 1/2 (/.f64 1/2 (exp.f64 (+.f64 im im)))))
(*.f64 2 (*.f64 (exp.f64 im) (+.f64 1/2 (/.f64 1/2 (exp.f64 (+.f64 im im))))))
(*.f64 (exp.f64 im) (*.f64 2 (+.f64 1/2 (/.f64 1/2 (exp.f64 (+.f64 im im))))))
(*.f64 4 (/.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4) 1/4)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 2))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 1/2 (+.f64 (*.f64 (exp.f64 im) 2) (/.f64 2 (exp.f64 im))))
(*.f64 1/2 (+.f64 (*.f64 2 (exp.f64 im)) (/.f64 2 (exp.f64 im))))
(*.f64 1/2 (+.f64 (/.f64 2 (exp.f64 im)) (*.f64 (exp.f64 im) 2)))
(*.f64 1/2 (+.f64 (*.f64 2 (exp.f64 im)) (/.f64 2 (exp.f64 im))))
(*.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1/2) 2)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 (*.f64 (exp.f64 im) 1/2) (+.f64 2 (/.f64 2 (exp.f64 (+.f64 im im)))))
(*.f64 (exp.f64 im) (*.f64 1/2 (+.f64 2 (/.f64 2 (exp.f64 (+.f64 im im))))))
(*.f64 (*.f64 (exp.f64 im) 1/2) (+.f64 (/.f64 2 (exp.f64 (+.f64 im im))) 2))
(*.f64 (*.f64 (exp.f64 im) 1/2) (+.f64 2 (/.f64 2 (exp.f64 (+.f64 im im)))))
(*.f64 (exp.f64 im) (*.f64 1/2 (+.f64 2 (/.f64 2 (exp.f64 (+.f64 im im))))))
(*.f64 (+.f64 1 (exp.f64 (+.f64 im im))) (exp.f64 (neg.f64 im)))
(*.f64 (exp.f64 (neg.f64 im)) (+.f64 1 (exp.f64 (+.f64 im im))))
(*.f64 1/4 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4))
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(*.f64 (/.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4) 4)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(/.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 1)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(/.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 2) 2)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(/.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 4) 4)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(/.f64 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8) 8)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(/.f64 (*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8)) 16)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8)) (*.f64 2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) 8))) 32)
(+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))

eval12.0ms (0.1%)

Compiler

Compiled 703 to 405 computations (42.4% saved)

prune7.0ms (0.1%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New42244
Fresh000
Picked011
Done000
Total42345
Error
0b
Counts
45 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.3b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 2 (pow.f64 im 2)))
1.7b
(*.f64 (*.f64 1/2 (cos.f64 re)) 2)
Compiler

Compiled 33 to 27 computations (18.2% saved)

localize7.0ms (0.1%)

Compiler

Compiled 17 to 11 computations (35.3% saved)

localize13.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 30 to 20 computations (33.3% saved)

series4.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite82.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01229
111829
230429
364229
4136129
5309329
6622429
Stop Event
node limit
Counts
1 → 10
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 2 (pow.f64 im 2)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 re) (/.f64 (+.f64 2 (pow.f64 im 2)) 4)) (*.f64 (cos.f64 re) (/.f64 (+.f64 2 (pow.f64 im 2)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4))) (*.f64 2 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))))))))

simplify338.0ms (2.9%)

Algorithm
egg-herbie
Rules
2130×rational.json-simplify-35
1924×rational.json-simplify-1
1844×rational.json-simplify-2
1312×rational.json-simplify-48
1210×rational.json-simplify-42
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0591162
11341126
22661072
35231054
411891054
521531054
627751054
731641054
836071054
939761054
1042551054
1148061054
1250251054
1352681054
1454291054
1556081054
1656461054
1774871054
Stop Event
node limit
Counts
34 → 36
Calls
Call 1
Inputs
(*.f64 1/2 (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 1/48 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 4))) (*.f64 -1/4 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 2)))))
(+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 1/48 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 4))) (+.f64 (*.f64 -1/4 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 2))) (*.f64 -1/1440 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 6))))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) 0)
(+.f64 0 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))))
(+.f64 (*.f64 (cos.f64 re) (/.f64 (+.f64 2 (pow.f64 im 2)) 4)) (*.f64 (cos.f64 re) (/.f64 (+.f64 2 (pow.f64 im 2)) 4)))
(-.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) 0)
(/.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) 1)
(/.f64 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))) 2)
(/.f64 (*.f64 (cos.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 4)
(/.f64 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 8)
(/.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4))) (*.f64 2 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4)))) 32)
Outputs
(*.f64 1/2 (+.f64 2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (pow.f64 re 2) -1/4)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 1/2 (*.f64 -1/4 (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 1/48 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 4))) (*.f64 -1/4 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 2)))))
(+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (pow.f64 re 2) -1/4)) (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (pow.f64 re 4) 1/48))))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 1/2 (*.f64 -1/4 (pow.f64 re 2)))) (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 1/48 (pow.f64 re 4))))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (pow.f64 re 4)) (+.f64 1/2 (*.f64 -1/4 (pow.f64 re 2)))))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 1/2 (+.f64 (*.f64 1/48 (pow.f64 re 4)) (*.f64 -1/4 (pow.f64 re 2)))))
(+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 1/48 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 4))) (+.f64 (*.f64 -1/4 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 2))) (*.f64 -1/1440 (*.f64 (+.f64 2 (pow.f64 im 2)) (pow.f64 re 6))))))
(+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (pow.f64 re 2) -1/4)) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (pow.f64 re 6) -1/1440)) (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 (pow.f64 re 4) 1/48)))))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 1/48 (pow.f64 re 4))) (+.f64 (*.f64 1/2 (+.f64 2 (pow.f64 im 2))) (+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 -1/4 (pow.f64 re 2))) (*.f64 (+.f64 2 (pow.f64 im 2)) (*.f64 -1/1440 (pow.f64 re 6))))))
(+.f64 (*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (*.f64 -1/1440 (pow.f64 re 6)) (*.f64 -1/4 (pow.f64 re 2)))) (*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (pow.f64 re 4)) 1/2)))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (+.f64 1/2 (*.f64 -1/4 (pow.f64 re 2))) (+.f64 (*.f64 -1/1440 (pow.f64 re 6)) (*.f64 1/48 (pow.f64 re 4)))))
(*.f64 (+.f64 2 (pow.f64 im 2)) (+.f64 (*.f64 -1/1440 (pow.f64 re 6)) (+.f64 1/2 (+.f64 (*.f64 1/48 (pow.f64 re 4)) (*.f64 -1/4 (pow.f64 re 2))))))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(cos.f64 re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (cos.f64 re) (*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (cos.f64 re) (*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (cos.f64 re) (*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re)))
(*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (cos.f64 re) (*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (cos.f64 re) (*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (cos.f64 re) (*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re)))
(*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2)))
(*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (cos.f64 re) (*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (cos.f64 re) (*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (cos.f64 re))
(+.f64 (cos.f64 re) (*.f64 1/2 (*.f64 (pow.f64 im 2) (cos.f64 re))))
(+.f64 (cos.f64 re) (*.f64 (cos.f64 re) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (cos.f64 re) (*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) 0)
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(+.f64 0 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(+.f64 (*.f64 (cos.f64 re) (/.f64 (+.f64 2 (pow.f64 im 2)) 4)) (*.f64 (cos.f64 re) (/.f64 (+.f64 2 (pow.f64 im 2)) 4)))
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(-.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) 0)
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(/.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2)))) 1)
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(/.f64 (*.f64 (cos.f64 re) (+.f64 2 (pow.f64 im 2))) 2)
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(/.f64 (*.f64 (cos.f64 re) (*.f64 2 (+.f64 2 (pow.f64 im 2)))) 4)
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(/.f64 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4)) 8)
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(/.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4))) 16)
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4))) (*.f64 2 (*.f64 (cos.f64 re) (*.f64 (+.f64 2 (pow.f64 im 2)) 4)))) 32)
(*.f64 1/2 (*.f64 (+.f64 2 (pow.f64 im 2)) (cos.f64 re)))

eval12.0ms (0.1%)

Compiler

Compiled 637 to 499 computations (21.7% saved)

prune9.0ms (0.1%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New33336
Fresh000
Picked011
Done112
Total34539
Error
0b
Counts
39 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
61.2b
(*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re)))
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.3b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 2 (pow.f64 im 2)))
31.7b
(*.f64 1/2 (+.f64 2 (pow.f64 im 2)))
1.7b
(cos.f64 re)
Compiler

Compiled 48 to 39 computations (18.8% saved)

localize3.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize8.0ms (0.1%)

Compiler

Compiled 20 to 16 computations (20% saved)

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re)))
Compiler

Compiled 23 to 14 computations (39.1% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite89.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1382×bool.json-1
1382×bool.json-2
1316×rational.json-1
1316×rational.json-2
1316×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01123
111023
229723
362723
4127323
5291423
6570123
Stop Event
node limit
Counts
1 → 10
Calls
Call 1
Inputs
(*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 re) (/.f64 (pow.f64 im 2) 4)) (*.f64 (cos.f64 re) (/.f64 (pow.f64 im 2) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (pow.f64 im 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2)))) (*.f64 2 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))))))))

simplify319.0ms (2.8%)

Algorithm
egg-herbie
Rules
2214×rational.json-simplify-35
1706×rational.json-simplify-2
1542×rational.json-simplify-1
1286×rational.json-simplify-48
1236×rational.json-simplify-42
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
052922
1115922
2241886
3486862
41157862
51939862
62546862
72940862
83372862
93702862
103977862
114547862
124835862
135019862
145165862
155335862
165374862
177144862
Stop Event
node limit
Counts
34 → 29
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (pow.f64 im 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 0)
(+.f64 0 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))))
(+.f64 (*.f64 (cos.f64 re) (/.f64 (pow.f64 im 2) 4)) (*.f64 (cos.f64 re) (/.f64 (pow.f64 im 2) 4)))
(-.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 0)
(/.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 1)
(/.f64 (*.f64 (cos.f64 re) (pow.f64 im 2)) 2)
(/.f64 (*.f64 2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 4)
(/.f64 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2))) 8)
(/.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2)))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2)))) (*.f64 2 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2))))) 32)
Outputs
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 -1/4 (*.f64 (pow.f64 im 2) (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 2) -1/4)))
(*.f64 (pow.f64 im 2) (+.f64 1/2 (*.f64 -1/4 (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2)))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 im 2) (pow.f64 re 2))) (*.f64 1/48 (*.f64 (pow.f64 im 2) (pow.f64 re 4)))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 2) -1/4)) (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 4) 1/48))))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/4 (pow.f64 re 2))) (*.f64 (pow.f64 im 2) (+.f64 1/2 (*.f64 1/48 (pow.f64 re 4)))))
(*.f64 (pow.f64 im 2) (+.f64 (*.f64 1/48 (pow.f64 re 4)) (+.f64 1/2 (*.f64 -1/4 (pow.f64 re 2)))))
(*.f64 (pow.f64 im 2) (+.f64 1/2 (+.f64 (*.f64 1/48 (pow.f64 re 4)) (*.f64 -1/4 (pow.f64 re 2)))))
(+.f64 (*.f64 -1/1440 (*.f64 (pow.f64 re 6) (pow.f64 im 2))) (+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 re 4) (pow.f64 im 2))) (*.f64 -1/4 (*.f64 (pow.f64 re 2) (pow.f64 im 2))))))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) (+.f64 (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 im 2) (pow.f64 re 2))) (*.f64 1/48 (*.f64 (pow.f64 im 2) (pow.f64 re 4)))) (*.f64 -1/1440 (*.f64 (pow.f64 im 2) (pow.f64 re 6)))))
(+.f64 (+.f64 (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 2) -1/4)) (*.f64 (pow.f64 im 2) (*.f64 (pow.f64 re 4) 1/48))) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/1440 (pow.f64 re 6))) (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/4 (pow.f64 re 2))) (*.f64 (pow.f64 im 2) (*.f64 1/48 (pow.f64 re 4)))) (*.f64 (pow.f64 im 2) (+.f64 1/2 (*.f64 -1/1440 (pow.f64 re 6)))))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/4 (pow.f64 re 2))) (*.f64 (pow.f64 im 2) (+.f64 (*.f64 -1/1440 (pow.f64 re 6)) (+.f64 1/2 (*.f64 1/48 (pow.f64 re 4))))))
(+.f64 (*.f64 (pow.f64 im 2) (+.f64 1/2 (*.f64 1/48 (pow.f64 re 4)))) (*.f64 (pow.f64 im 2) (+.f64 (*.f64 -1/1440 (pow.f64 re 6)) (*.f64 -1/4 (pow.f64 re 2)))))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/4 (pow.f64 re 2))) (*.f64 (pow.f64 im 2) (+.f64 (*.f64 1/48 (pow.f64 re 4)) (+.f64 1/2 (*.f64 -1/1440 (pow.f64 re 6))))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 0)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 0 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (cos.f64 re) (/.f64 (pow.f64 im 2) 4)) (*.f64 (cos.f64 re) (/.f64 (pow.f64 im 2) 4)))
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(-.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 0)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(/.f64 (*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 1)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(/.f64 (*.f64 (cos.f64 re) (pow.f64 im 2)) 2)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(/.f64 (*.f64 2 (*.f64 (cos.f64 re) (pow.f64 im 2))) 4)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(/.f64 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2))) 8)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(/.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2)))) 16)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2)))) (*.f64 2 (*.f64 (cos.f64 re) (*.f64 4 (pow.f64 im 2))))) 32)
(*.f64 1/2 (*.f64 (cos.f64 re) (pow.f64 im 2)))

eval12.0ms (0.1%)

Compiler

Compiled 538 to 421 computations (21.7% saved)

prune6.0ms (0.1%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New28129
Fresh000
Picked011
Done044
Total28634
Error
0b
Counts
34 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
61.2b
(*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re)))
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.3b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 2 (pow.f64 im 2)))
61.5b
(*.f64 1/2 (pow.f64 im 2))
31.7b
(*.f64 1/2 (+.f64 2 (pow.f64 im 2)))
1.7b
(cos.f64 re)
Compiler

Compiled 55 to 45 computations (18.2% saved)

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 10 computations (23.1% saved)

series1.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite84.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
16913
218713
337213
471813
5150413
6345113
7630713
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 im 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (pow.f64 im 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/2 (pow.f64 im 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 2) 1/4) (*.f64 (pow.f64 im 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/2 (pow.f64 im 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 im 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/2 (pow.f64 im 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (pow.f64 im 2)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) 4) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 im 2) 8) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (pow.f64 im 2) 8)) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 im 2) 8))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/2 (pow.f64 im 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/2 (pow.f64 im 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/2 (pow.f64 im 2)))))))

simplify742.0ms (6.4%)

Algorithm
egg-herbie
Rules
6144×rational.json-simplify-41
2666×rational.json-simplify-51
2356×rational.json-simplify-2
2076×rational.json-simplify-35
706×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
032143
175143
2139143
3307143
4725143
51721143
62399143
72501143
82557143
92604143
102646143
112686143
122725143
132764143
142803143
152842143
162881143
172920143
182959143
192998143
203037143
214821143
224880143
234925143
244965143
255000143
265035143
275861143
285896143
295931143
305966143
316001143
326036143
336036143
346071143
356106143
Stop Event
node limit
Counts
11 → 12
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 (pow.f64 im 2)) 0)
(+.f64 0 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) 1/4) (*.f64 (pow.f64 im 2) 1/4))
(-.f64 (*.f64 1/2 (pow.f64 im 2)) 0)
(/.f64 (pow.f64 im 2) 2)
(/.f64 (*.f64 1/2 (pow.f64 im 2)) 1)
(/.f64 (*.f64 2 (pow.f64 im 2)) 4)
(/.f64 (*.f64 (pow.f64 im 2) 4) 8)
(/.f64 (*.f64 (pow.f64 im 2) 8) 16)
(/.f64 (*.f64 2 (*.f64 (pow.f64 im 2) 8)) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 im 2) 8))) 64)
Outputs
(+.f64 (*.f64 1/2 (pow.f64 im 2)) 0)
(*.f64 1/2 (pow.f64 im 2))
(+.f64 0 (*.f64 1/2 (pow.f64 im 2)))
(*.f64 1/2 (pow.f64 im 2))
(+.f64 (*.f64 (pow.f64 im 2) 1/4) (*.f64 (pow.f64 im 2) 1/4))
(*.f64 1/2 (pow.f64 im 2))
(-.f64 (*.f64 1/2 (pow.f64 im 2)) 0)
(*.f64 1/2 (pow.f64 im 2))
(/.f64 (pow.f64 im 2) 2)
(*.f64 1/2 (pow.f64 im 2))
(/.f64 (*.f64 1/2 (pow.f64 im 2)) 1)
(*.f64 1/2 (pow.f64 im 2))
(/.f64 (*.f64 2 (pow.f64 im 2)) 4)
(*.f64 1/2 (pow.f64 im 2))
(/.f64 (*.f64 (pow.f64 im 2) 4) 8)
(*.f64 1/2 (pow.f64 im 2))
(/.f64 (*.f64 (pow.f64 im 2) 8) 16)
(*.f64 1/2 (pow.f64 im 2))
(/.f64 (*.f64 2 (*.f64 (pow.f64 im 2) 8)) 32)
(*.f64 1/2 (pow.f64 im 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 im 2) 8))) 64)
(*.f64 1/2 (pow.f64 im 2))

eval3.0ms (0%)

Compiler

Compiled 92 to 79 computations (14.1% saved)

prune4.0ms (0%)

Pruning

6 alts after pruning (0 fresh and 6 done)

PrunedKeptTotal
New12012
Fresh000
Picked011
Done055
Total12618
Error
0b
Counts
18 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
61.2b
(*.f64 (pow.f64 im 2) (*.f64 1/2 (cos.f64 re)))
0.0b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.3b
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 2 (pow.f64 im 2)))
61.5b
(*.f64 1/2 (pow.f64 im 2))
31.7b
(*.f64 1/2 (+.f64 2 (pow.f64 im 2)))
1.7b
(cos.f64 re)
Compiler

Compiled 55 to 45 computations (18.2% saved)

regimes27.0ms (0.2%)

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

6 calls:

5.0ms
re
5.0ms
(cos.f64 re)
5.0ms
im
4.0ms
(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
4.0ms
(*.f64 1/2 (cos.f64 re))
Results
ErrorSegmentsBranch
0.0b1re
0.0b1im
0.0b1(*.f64 (*.f64 1/2 (cos.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
0.0b1(*.f64 1/2 (cos.f64 re))
0.0b1(cos.f64 re)
0.0b1(+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))
Compiler

Compiled 88 to 64 computations (27.3% saved)

regimes19.0ms (0.2%)

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

4 calls:

5.0ms
im
4.0ms
re
4.0ms
(*.f64 1/2 (cos.f64 re))
4.0ms
(cos.f64 re)
Results
ErrorSegmentsBranch
1.3b1re
1.3b1im
1.3b1(*.f64 1/2 (cos.f64 re))
1.3b1(cos.f64 re)
Compiler

Compiled 56 to 41 computations (26.8% saved)

regimes17.0ms (0.2%)

Accuracy

Total -60.0b remaining (-3528.6%)

Threshold costs -60.0b (-3528.6%)

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

4 calls:

5.0ms
im
4.0ms
re
4.0ms
(*.f64 1/2 (cos.f64 re))
4.0ms
(cos.f64 re)
Results
ErrorSegmentsBranch
1.7b1re
1.7b1im
1.7b1(*.f64 1/2 (cos.f64 re))
1.7b1(cos.f64 re)
Compiler

Compiled 46 to 34 computations (26.1% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 29 to 23 computations (20.7% saved)

soundness0.0ms (0%)

end22.0ms (0.2%)

Compiler

Compiled 25 to 17 computations (32% saved)

Profiling

Loading profile data...