Details

Time bar (total: 9.5s)

analyze68.0ms (0.7%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
50%50%50%0.1%0%0%0%2
50%50%50%0.1%0%0%0%3
75%74.9%25%0.1%0%0%0%4
75%74.9%25%0.1%0%0%0%5
80%74.9%18.7%0.1%6.2%0%0%6
80%74.9%18.7%0.1%6.2%0%0%7
82.8%74.9%15.6%0.1%9.4%0%0%8
82.8%74.9%15.6%0.1%9.4%0%0%9
84.2%74.9%14%0.1%10.9%0%0%10
84.2%74.9%14%0.1%10.9%0%0%11
85%74.9%13.3%0.1%11.7%0%0%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample2.4s (25.5%)

Results
1.2s6154×body256valid
604.0ms1396×body1024valid
252.0ms644×body1024infinite
179.0ms705×body512valid
114.0ms342×body512infinite
49.0ms409×body256infinite
1.0msbody2048valid
0.0msbody2048infinite
Bogosity

preprocess106.0ms (1.1%)

Algorithm
egg-herbie
Rules
1296×rational.json-simplify-46
1254×rational.json-simplify-59
1114×rational.json-simplify-35
944×rational.json-simplify-1
772×rational.json-simplify-42
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01130
11730
22930
34730
48730
516030
636930
787530
8207830
9294130
10414330
11676630
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 im) (cos.f64 re))
Outputs
(*.f64 (exp.f64 re) (cos.f64 im))
(*.f64 (exp.f64 im) (cos.f64 re))
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify491.0ms (5.2%)

Algorithm
egg-herbie
Rules
2524×rational.json-simplify-42
2160×rational.json-simplify-35
2098×rational.json-simplify-45
1716×rational.json-simplify-1
1044×rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0815
11115
21815
32815
45215
59315
620815
747915
8112215
9261515
10352815
11410915
12465615
13496215
14508215
15520315
16551315
17564215
18575815
19588515
20599915
21611315
22622715
23622715
24622715
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (cos.f64 im))
Outputs
(*.f64 (exp.f64 re) (cos.f64 im))

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.0b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))
Compiler

Compiled 7 to 5 computations (28.6% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series2.0ms (0%)

Counts
1 → 8
Calls

6 calls:

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

rewrite78.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1360×rational.json-simplify-35
1350×bool.json-1
1350×bool.json-2
1298×rational.json-1
1298×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0815
18015
223115
351515
4106915
5233915
6499315
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (cos.f64 im))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (exp.f64 re) (cos.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 1/2)) (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (exp.f64 re) (cos.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (exp.f64 re) (cos.f64 im)) (*.f64 (exp.f64 re) (cos.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (exp.f64 re) (cos.f64 im)) (*.f64 (exp.f64 re) (cos.f64 im)))))))

simplify353.0ms (3.7%)

Algorithm
egg-herbie
Rules
1904×rational.json-simplify-2
1876×rational.json-simplify-35
1234×rational.json-simplify-1
1172×rational.json-simplify-42
1156×rational.json-simplify-53
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
069505
1162505
2320465
3684445
42470445
54120445
64698445
74861445
85000445
95156445
105326445
116227445
126845445
137149445
147302445
157316445
167320445
Stop Event
node limit
Counts
19 → 43
Calls
Call 1
Inputs
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im)))
(+.f64 (*.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))))
(exp.f64 re)
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (exp.f64 re))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (exp.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (+.f64 (exp.f64 re) (*.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6))))))
(+.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 0)
(+.f64 0 (*.f64 (exp.f64 re) (cos.f64 im)))
(+.f64 (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 1/2)) (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 1/2)))
(-.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 0)
(/.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 1)
(/.f64 (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 2)) 2)
(/.f64 (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 4)) 4)
(/.f64 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8)))) 64)
Outputs
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im)))
(+.f64 (+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re)) (*.f64 (cos.f64 im) (*.f64 (pow.f64 re 2) 1/2)))
(+.f64 (cos.f64 im) (+.f64 (*.f64 (cos.f64 im) re) (*.f64 (cos.f64 im) (*.f64 1/2 (pow.f64 re 2)))))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))
(+.f64 (*.f64 1/6 (*.f64 (cos.f64 im) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))))
(+.f64 (*.f64 (cos.f64 im) (*.f64 (pow.f64 re 2) 1/2)) (+.f64 (+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re)) (*.f64 (cos.f64 im) (*.f64 (pow.f64 re 3) 1/6))))
(+.f64 (*.f64 (cos.f64 im) re) (+.f64 (+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (*.f64 1/2 (pow.f64 re 2)))) (*.f64 (pow.f64 re 3) (*.f64 1/6 (cos.f64 im)))))
(+.f64 (+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re)) (*.f64 (cos.f64 im) (+.f64 (*.f64 1/6 (pow.f64 re 3)) (*.f64 1/2 (pow.f64 re 2)))))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (+.f64 (*.f64 1/6 (pow.f64 re 3)) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (+.f64 re (+.f64 (*.f64 1/6 (pow.f64 re 3)) (*.f64 1/2 (pow.f64 re 2))))))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 re (*.f64 1/6 (pow.f64 re 3))))))
(exp.f64 re)
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (exp.f64 re))
(+.f64 (exp.f64 re) (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (*.f64 -1/2 (pow.f64 im 2))))
(+.f64 (exp.f64 re) (*.f64 (pow.f64 im 2) (*.f64 (exp.f64 re) -1/2)))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (exp.f64 re)))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (exp.f64 re) (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4)))))
(+.f64 (+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (*.f64 -1/2 (pow.f64 im 2)))) (*.f64 (exp.f64 re) (*.f64 1/24 (pow.f64 im 4))))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2)))))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))) (+.f64 (exp.f64 re) (*.f64 -1/720 (*.f64 (exp.f64 re) (pow.f64 im 6))))))
(+.f64 (*.f64 -1/2 (*.f64 (exp.f64 re) (pow.f64 im 2))) (+.f64 (exp.f64 re) (+.f64 (*.f64 (exp.f64 re) (*.f64 (pow.f64 im 6) -1/720)) (*.f64 1/24 (*.f64 (exp.f64 re) (pow.f64 im 4))))))
(+.f64 (exp.f64 re) (+.f64 (+.f64 (*.f64 (exp.f64 re) (*.f64 1/24 (pow.f64 im 4))) (*.f64 (exp.f64 re) (*.f64 -1/720 (pow.f64 im 6)))) (*.f64 (exp.f64 re) (*.f64 -1/2 (pow.f64 im 2)))))
(+.f64 (+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (*.f64 -1/720 (pow.f64 im 6)))) (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 -1/720 (pow.f64 im 6)) (*.f64 1/24 (pow.f64 im 4))))))
(+.f64 (exp.f64 re) (*.f64 (exp.f64 re) (+.f64 (*.f64 -1/720 (pow.f64 im 6)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2))))))
(+.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 0)
(*.f64 (cos.f64 im) (exp.f64 re))
(+.f64 0 (*.f64 (exp.f64 re) (cos.f64 im)))
(*.f64 (cos.f64 im) (exp.f64 re))
(+.f64 (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 1/2)) (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 1/2)))
(*.f64 (cos.f64 im) (exp.f64 re))
(-.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 0)
(*.f64 (cos.f64 im) (exp.f64 re))
(/.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 1)
(*.f64 (cos.f64 im) (exp.f64 re))
(/.f64 (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 2)) 2)
(*.f64 (cos.f64 im) (exp.f64 re))
(/.f64 (*.f64 (exp.f64 re) (*.f64 (cos.f64 im) 4)) 4)
(*.f64 (cos.f64 im) (exp.f64 re))
(/.f64 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8) 8)
(*.f64 (cos.f64 im) (exp.f64 re))
(/.f64 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8)) 16)
(*.f64 (cos.f64 im) (exp.f64 re))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8))) 32)
(*.f64 (cos.f64 im) (exp.f64 re))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (exp.f64 re) (cos.f64 im)) 8)))) 64)
(*.f64 (cos.f64 im) (exp.f64 re))

eval11.0ms (0.1%)

Compiler

Compiled 669 to 369 computations (44.8% saved)

prune8.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New39443
Fresh000
Picked011
Done000
Total39544
Error
0b
Counts
44 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
19.9b
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
20.0b
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))
21.2b
(exp.f64 re)
19.9b
(cos.f64 im)
Compiler

Compiled 39 to 26 computations (33.3% saved)

localize3.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize2.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize59.0ms (0.6%)

Local error

Found 3 expressions with local error:

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

Compiled 46 to 29 computations (37% saved)

series4.0ms (0%)

Counts
3 → 27
Calls

12 calls:

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

rewrite200.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
1504×bool.json-1
1504×bool.json-2
1438×rational.json-1
1438×rational.json-2
1438×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01261
111861
229961
361061
4128261
5287161
6592161
Stop Event
node limit
Counts
3 → 40
Calls
Call 1
Inputs
(*.f64 (cos.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re))
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 im) (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2))))) (*.f64 (cos.f64 im) (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (+.f64 (pow.f64 re 2) (+.f64 re re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4))) (*.f64 2 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (pow.f64 re 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/2 (pow.f64 re 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 re 2) 1/4) (*.f64 (pow.f64 re 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/2 (pow.f64 re 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 re 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/2 (pow.f64 re 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (pow.f64 re 2)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 re 2) 4) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 re 2) 8) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (pow.f64 re 2) 8)) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/2 (pow.f64 re 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/2 (pow.f64 re 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/2 (pow.f64 re 2)) (*.f64 1/2 (pow.f64 re 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (pow.f64 re 2) (+.f64 re re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (pow.f64 re 2) 1/4) (*.f64 1/2 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 1/2 re) (*.f64 (pow.f64 re 2) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (*.f64 re 4) (*.f64 2 (pow.f64 re 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8)) (*.f64 2 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))))

simplify305.0ms (3.2%)

Algorithm
egg-herbie
Rules
2100×rational.json-simplify-53
2082×rational.json-simplify-41
1612×rational.json-simplify-2
1410×rational.json-simplify-35
706×rational.json-simplify-1
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01111741
12571723
25481675
315931633
432871633
535141633
636141633
737051633
838121633
953541633
1072181633
1176091633
Stop Event
node limit
Counts
67 → 69
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 2))) re))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 2))) (+.f64 re (*.f64 1/24 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 4))))))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 2))) (+.f64 (*.f64 -1/720 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 6))) (+.f64 re (*.f64 1/24 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 4)))))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (cos.f64 im) re)
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
re
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 0)
(+.f64 0 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))
(+.f64 (*.f64 (cos.f64 im) (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2))))) (*.f64 (cos.f64 im) (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))
(-.f64 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 0)
(/.f64 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 1)
(/.f64 (*.f64 (cos.f64 im) (+.f64 (pow.f64 re 2) (+.f64 re re))) 2)
(/.f64 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re)))) 4)
(/.f64 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4)) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4))) (*.f64 2 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4)))) 32)
(+.f64 (*.f64 1/2 (pow.f64 re 2)) 0)
(+.f64 0 (*.f64 1/2 (pow.f64 re 2)))
(+.f64 (*.f64 (pow.f64 re 2) 1/4) (*.f64 (pow.f64 re 2) 1/4))
(-.f64 (*.f64 1/2 (pow.f64 re 2)) 0)
(/.f64 (pow.f64 re 2) 2)
(/.f64 (*.f64 1/2 (pow.f64 re 2)) 1)
(/.f64 (*.f64 2 (pow.f64 re 2)) 4)
(/.f64 (*.f64 (pow.f64 re 2) 4) 8)
(/.f64 (*.f64 (pow.f64 re 2) 8) 16)
(/.f64 (*.f64 2 (*.f64 (pow.f64 re 2) 8)) 32)
(-.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 0)
(*.f64 1/2 (+.f64 (pow.f64 re 2) (+.f64 re re)))
(*.f64 2 (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))
(*.f64 2 (+.f64 (*.f64 (pow.f64 re 2) 1/4) (*.f64 1/2 re)))
(*.f64 2 (+.f64 (*.f64 1/2 re) (*.f64 (pow.f64 re 2) 1/4)))
(*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 1)
(*.f64 1 (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) 1/2)
(*.f64 4 (/.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 4))
(*.f64 (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re))) 1/4)
(*.f64 (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 2)
(*.f64 1/4 (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re))))
(*.f64 1/4 (+.f64 (*.f64 re 4) (*.f64 2 (pow.f64 re 2))))
(*.f64 (/.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 4) 4)
(/.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 1)
(/.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) 2)
(/.f64 (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re))) 4)
(/.f64 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8)) (*.f64 2 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8))) 32)
Outputs
(+.f64 (*.f64 1/2 (pow.f64 re 2)) re)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 2))) re))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 im 2) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (+.f64 1 (*.f64 -1/2 (pow.f64 im 2))))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 2))) (+.f64 re (*.f64 1/24 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 4))))))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 re (+.f64 (*.f64 1/24 (*.f64 (pow.f64 im 4) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))) (*.f64 -1/2 (*.f64 (pow.f64 im 2) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))))
(+.f64 (+.f64 re (*.f64 1/24 (*.f64 (pow.f64 im 4) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))) (+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 -1/2 (*.f64 (pow.f64 im 2) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))))
(+.f64 re (+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2))))))
(*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (+.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 im 2))) (*.f64 1/24 (pow.f64 im 4))))
(*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (+.f64 1 (*.f64 -1/2 (pow.f64 im 2)))))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 2))) (+.f64 (*.f64 -1/720 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 6))) (+.f64 re (*.f64 1/24 (*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (pow.f64 im 4)))))))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 im 2) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))) (+.f64 re (+.f64 (*.f64 1/24 (*.f64 (pow.f64 im 4) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))) (*.f64 -1/720 (*.f64 (pow.f64 im 6) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))))))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) (+.f64 re (+.f64 (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 im 2) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))) (*.f64 1/24 (*.f64 (pow.f64 im 4) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))) (*.f64 -1/720 (*.f64 (pow.f64 im 6) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))))
(+.f64 re (+.f64 (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 im 6) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))) (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2))))) (*.f64 1/2 (pow.f64 re 2))))
(+.f64 re (+.f64 (*.f64 1/2 (pow.f64 re 2)) (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (+.f64 (*.f64 -1/720 (pow.f64 im 6)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2)))))))
(+.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (+.f64 (*.f64 -1/720 (pow.f64 im 6)) (*.f64 -1/2 (pow.f64 im 2))))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (+.f64 (*.f64 1/2 (pow.f64 re 2)) re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 (cos.f64 im) re)
(*.f64 re (cos.f64 im))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) (cos.f64 im)))
(*.f64 (pow.f64 re 2) (*.f64 (cos.f64 im) 1/2))
(*.f64 (pow.f64 re 2) (*.f64 1/2 (cos.f64 im)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2)))
(*.f64 1/2 (*.f64 (pow.f64 re 2) (cos.f64 im)))
(*.f64 (pow.f64 re 2) (*.f64 (cos.f64 im) 1/2))
(*.f64 (pow.f64 re 2) (*.f64 1/2 (cos.f64 im)))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (*.f64 (cos.f64 im) (pow.f64 re 2))) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
re
(*.f64 1/2 (pow.f64 re 2))
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 0)
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 0 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 (*.f64 (cos.f64 im) (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2))))) (*.f64 (cos.f64 im) (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2))))))
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(-.f64 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 0)
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(/.f64 (*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 1)
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(/.f64 (*.f64 (cos.f64 im) (+.f64 (pow.f64 re 2) (+.f64 re re))) 2)
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(/.f64 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re)))) 4)
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4)) 8)
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(/.f64 (*.f64 2 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4))) 16)
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4))) (*.f64 2 (*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) (*.f64 (cos.f64 im) 4)))) 32)
(*.f64 (cos.f64 im) (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 (*.f64 1/2 (pow.f64 re 2)) 0)
(*.f64 1/2 (pow.f64 re 2))
(+.f64 0 (*.f64 1/2 (pow.f64 re 2)))
(*.f64 1/2 (pow.f64 re 2))
(+.f64 (*.f64 (pow.f64 re 2) 1/4) (*.f64 (pow.f64 re 2) 1/4))
(*.f64 1/2 (pow.f64 re 2))
(-.f64 (*.f64 1/2 (pow.f64 re 2)) 0)
(*.f64 1/2 (pow.f64 re 2))
(/.f64 (pow.f64 re 2) 2)
(*.f64 1/2 (pow.f64 re 2))
(/.f64 (*.f64 1/2 (pow.f64 re 2)) 1)
(*.f64 1/2 (pow.f64 re 2))
(/.f64 (*.f64 2 (pow.f64 re 2)) 4)
(*.f64 1/2 (pow.f64 re 2))
(/.f64 (*.f64 (pow.f64 re 2) 4) 8)
(*.f64 1/2 (pow.f64 re 2))
(/.f64 (*.f64 (pow.f64 re 2) 8) 16)
(*.f64 1/2 (pow.f64 re 2))
(/.f64 (*.f64 2 (*.f64 (pow.f64 re 2) 8)) 32)
(*.f64 1/2 (pow.f64 re 2))
(-.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 0)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 1/2 (+.f64 (pow.f64 re 2) (+.f64 re re)))
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 2 (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2)))))
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 2 (+.f64 (*.f64 (pow.f64 re 2) 1/4) (*.f64 1/2 re)))
(*.f64 2 (+.f64 (*.f64 1/2 re) (*.f64 (pow.f64 re 2) 1/4)))
(*.f64 2 (+.f64 (*.f64 (pow.f64 re 2) 1/4) (*.f64 1/2 re)))
(*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 1)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 1 (+.f64 re (*.f64 1/2 (pow.f64 re 2))))
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) 1/2)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 4 (/.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 4))
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re))) 1/4)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 (*.f64 1/2 (+.f64 re (*.f64 1/2 (pow.f64 re 2)))) 2)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 1/4 (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re))))
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(*.f64 1/4 (+.f64 (*.f64 re 4) (*.f64 2 (pow.f64 re 2))))
(*.f64 1/4 (+.f64 (*.f64 2 (pow.f64 re 2)) (*.f64 re 4)))
(*.f64 (/.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 4) 4)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(/.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 1)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(/.f64 (+.f64 (pow.f64 re 2) (+.f64 re re)) 2)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(/.f64 (*.f64 2 (+.f64 (pow.f64 re 2) (+.f64 re re))) 4)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(/.f64 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8) 8)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(/.f64 (*.f64 2 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8)) 16)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8)) (*.f64 2 (*.f64 (+.f64 re (*.f64 1/2 (pow.f64 re 2))) 8))) 32)
(+.f64 re (*.f64 1/2 (pow.f64 re 2)))

localize62.0ms (0.7%)

Local error

Found 2 expressions with local error:

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

Compiled 17 to 5 computations (70.6% saved)

series2.0ms (0%)

Counts
2 → 11
Calls

12 calls:

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

rewrite97.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1460×bool.json-1
1460×bool.json-2
1408×rational.json-1
1408×rational.json-2
1408×rational.json-4
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0832
18128
223228
352028
4112728
5254928
6541028
Stop Event
node limit
Counts
2 → 43
Calls
Call 1
Inputs
(*.f64 (cos.f64 im) re)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 im) re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cos.f64 im) re))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 im) (*.f64 re 1/2)) (*.f64 (cos.f64 im) (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (cos.f64 im) re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (+.f64 re re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (*.f64 re 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (cos.f64 im) re) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) re) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) re) 8)) (*.f64 2 (*.f64 (*.f64 (cos.f64 im) re) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (cos.f64 im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (cos.f64 im) re) (*.f64 (cos.f64 im) re))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (cos.f64 im) re) (*.f64 (cos.f64 im) re))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 im) (+.f64 re 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (cos.f64 im) (+.f64 re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (cos.f64 im) (/.f64 (+.f64 re 1) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (cos.f64 im) (*.f64 re 1/2)) (*.f64 (cos.f64 im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (cos.f64 im) 1/2) (*.f64 (cos.f64 im) (*.f64 re 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 re 1))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) 2) (*.f64 (+.f64 re 1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) 2) (/.f64 (+.f64 re 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) 2) (+.f64 (*.f64 re 1/2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) 2) (+.f64 1/2 (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re 1) (cos.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) (*.f64 (+.f64 re 1) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 re 1)) (*.f64 (cos.f64 im) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (cos.f64 im) (+.f64 re re)) (*.f64 (cos.f64 im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (cos.f64 im) 2) (*.f64 (cos.f64 im) (+.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) 1/2) (*.f64 2 (+.f64 re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) 1/2) (+.f64 (+.f64 re re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) 1/2) (+.f64 2 (+.f64 re re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 im) (/.f64 (+.f64 re 1) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 re 1) 1/2) (*.f64 (cos.f64 im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (cos.f64 im) (*.f64 (+.f64 re 1) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 re 1) 2) (*.f64 (cos.f64 im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 re 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (*.f64 (+.f64 re 1) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8)) (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (cos.f64 im) (+.f64 re 1))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (cos.f64 im) (+.f64 re 1)) (*.f64 (cos.f64 im) (+.f64 re 1)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (cos.f64 im) (+.f64 re 1)) (*.f64 (cos.f64 im) (+.f64 re 1)))))))

simplify2.0s (20.6%)

Algorithm
egg-herbie
Rules
3346×rational.json-simplify-35
2386×rational.json-simplify-2
1150×rational.json-simplify-1
890×rational.json-simplify-53
740×rational.json-simplify-48
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01271054
12801054
25771042
315321036
431061036
538871036
643561036
745661036
847821036
949961036
1052831036
1162601036
1265611036
1368031036
1470391036
1570841036
1670951036
1770961036
1872501036
1974051036
2075601036
2177151036
2278701036
Stop Event
node limit
Counts
54 → 76
Calls
Call 1
Inputs
re
(+.f64 (*.f64 -1/2 (*.f64 re (pow.f64 im 2))) re)
(+.f64 (*.f64 -1/2 (*.f64 re (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 re (pow.f64 im 4))) re))
(+.f64 (*.f64 -1/2 (*.f64 re (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 re (pow.f64 im 4))) (+.f64 (*.f64 -1/720 (*.f64 re (pow.f64 im 6))) re)))
(+.f64 1 re)
(+.f64 (*.f64 (-.f64 (*.f64 -1/2 re) 1/2) (pow.f64 im 2)) (+.f64 1 re))
(+.f64 (*.f64 (-.f64 (*.f64 -1/2 re) 1/2) (pow.f64 im 2)) (+.f64 1 (+.f64 re (*.f64 (+.f64 (*.f64 1/24 re) 1/24) (pow.f64 im 4)))))
(+.f64 (*.f64 (-.f64 (*.f64 -1/2 re) 1/2) (pow.f64 im 2)) (+.f64 1 (+.f64 (*.f64 (-.f64 (*.f64 -1/720 re) 1/720) (pow.f64 im 6)) (+.f64 re (*.f64 (+.f64 (*.f64 1/24 re) 1/24) (pow.f64 im 4))))))
(cos.f64 im)
(*.f64 (cos.f64 im) re)
(*.f64 (cos.f64 im) re)
(+.f64 (*.f64 (cos.f64 im) re) 0)
(+.f64 0 (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 (cos.f64 im) (*.f64 re 1/2)) (*.f64 (cos.f64 im) (*.f64 re 1/2)))
(-.f64 (*.f64 (cos.f64 im) re) 0)
(/.f64 (*.f64 (cos.f64 im) re) 1)
(/.f64 (*.f64 (cos.f64 im) (+.f64 re re)) 2)
(/.f64 (*.f64 (cos.f64 im) (*.f64 re 4)) 4)
(/.f64 (*.f64 (*.f64 (cos.f64 im) re) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) re) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) re) 8)) (*.f64 2 (*.f64 (*.f64 (cos.f64 im) re) 8))) 32)
(-.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 0)
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 1)
(*.f64 1 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 2 (*.f64 (cos.f64 im) (/.f64 (+.f64 re 1) 2)))
(*.f64 2 (+.f64 (*.f64 (cos.f64 im) (*.f64 re 1/2)) (*.f64 (cos.f64 im) 1/2)))
(*.f64 2 (+.f64 (*.f64 (cos.f64 im) 1/2) (*.f64 (cos.f64 im) (*.f64 re 1/2))))
(*.f64 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 re 1))) 1/2)
(*.f64 (*.f64 (cos.f64 im) 2) (*.f64 (+.f64 re 1) 1/2))
(*.f64 (*.f64 (cos.f64 im) 2) (/.f64 (+.f64 re 1) 2))
(*.f64 (*.f64 (cos.f64 im) 2) (+.f64 (*.f64 re 1/2) 1/2))
(*.f64 (*.f64 (cos.f64 im) 2) (+.f64 1/2 (*.f64 re 1/2)))
(*.f64 (+.f64 re 1) (cos.f64 im))
(*.f64 4 (/.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 4))
(*.f64 (*.f64 (cos.f64 im) (*.f64 (+.f64 re 1) 4)) 1/4)
(*.f64 (*.f64 2 (+.f64 re 1)) (*.f64 (cos.f64 im) 1/2))
(*.f64 1/2 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 re 1))))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 im) (+.f64 re re)) (*.f64 (cos.f64 im) 2)))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 im) 2) (*.f64 (cos.f64 im) (+.f64 re re))))
(*.f64 (*.f64 (cos.f64 im) 1/2) (*.f64 2 (+.f64 re 1)))
(*.f64 (*.f64 (cos.f64 im) 1/2) (+.f64 (+.f64 re re) 2))
(*.f64 (*.f64 (cos.f64 im) 1/2) (+.f64 2 (+.f64 re re)))
(*.f64 (*.f64 (cos.f64 im) (/.f64 (+.f64 re 1) 2)) 2)
(*.f64 (*.f64 (+.f64 re 1) 1/2) (*.f64 (cos.f64 im) 2))
(*.f64 1/4 (*.f64 (cos.f64 im) (*.f64 (+.f64 re 1) 4)))
(*.f64 (/.f64 (+.f64 re 1) 2) (*.f64 (cos.f64 im) 2))
(*.f64 (/.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 4) 4)
(/.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 1)
(/.f64 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 re 1))) 2)
(/.f64 (*.f64 (cos.f64 im) (*.f64 (+.f64 re 1) 4)) 4)
(/.f64 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8)) (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8))) 32)
Outputs
re
(+.f64 (*.f64 -1/2 (*.f64 re (pow.f64 im 2))) re)
(+.f64 re (*.f64 re (*.f64 (pow.f64 im 2) -1/2)))
(+.f64 re (*.f64 re (*.f64 -1/2 (pow.f64 im 2))))
(+.f64 (*.f64 -1/2 (*.f64 re (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 re (pow.f64 im 4))) re))
(+.f64 (*.f64 re (*.f64 (pow.f64 im 4) 1/24)) (+.f64 re (*.f64 re (*.f64 (pow.f64 im 2) -1/2))))
(+.f64 re (+.f64 (*.f64 re (*.f64 -1/2 (pow.f64 im 2))) (*.f64 (pow.f64 im 4) (*.f64 re 1/24))))
(+.f64 re (*.f64 re (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2)))))
(+.f64 (*.f64 -1/2 (*.f64 re (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 re (pow.f64 im 4))) (+.f64 (*.f64 -1/720 (*.f64 re (pow.f64 im 6))) re)))
(+.f64 (*.f64 re (*.f64 (pow.f64 im 2) -1/2)) (+.f64 (*.f64 re (*.f64 (pow.f64 im 4) 1/24)) (+.f64 re (*.f64 re (*.f64 (pow.f64 im 6) -1/720)))))
(+.f64 (+.f64 re (*.f64 (pow.f64 im 6) (*.f64 re -1/720))) (+.f64 (*.f64 re (*.f64 -1/2 (pow.f64 im 2))) (*.f64 (pow.f64 im 4) (*.f64 re 1/24))))
(+.f64 (+.f64 re (*.f64 -1/720 (*.f64 re (pow.f64 im 6)))) (*.f64 re (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2)))))
(+.f64 re (*.f64 re (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6))))))
(+.f64 re (*.f64 re (+.f64 (*.f64 -1/720 (pow.f64 im 6)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2))))))
(+.f64 1 re)
(+.f64 re 1)
(+.f64 (*.f64 (-.f64 (*.f64 -1/2 re) 1/2) (pow.f64 im 2)) (+.f64 1 re))
(+.f64 (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2)) (+.f64 re 1))
(+.f64 re (+.f64 1 (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2))))
(+.f64 (*.f64 (-.f64 (*.f64 -1/2 re) 1/2) (pow.f64 im 2)) (+.f64 1 (+.f64 re (*.f64 (+.f64 (*.f64 1/24 re) 1/24) (pow.f64 im 4)))))
(+.f64 1 (+.f64 (+.f64 re (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 re 1/24)))) (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2))))
(+.f64 1 (+.f64 (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2)) (+.f64 re (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 re 1/24))))))
(+.f64 (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2)) (+.f64 1 (+.f64 re (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 re 1/24))))))
(+.f64 re (+.f64 1 (+.f64 (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2)) (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 re 1/24))))))
(+.f64 (*.f64 (-.f64 (*.f64 -1/2 re) 1/2) (pow.f64 im 2)) (+.f64 1 (+.f64 (*.f64 (-.f64 (*.f64 -1/720 re) 1/720) (pow.f64 im 6)) (+.f64 re (*.f64 (+.f64 (*.f64 1/24 re) 1/24) (pow.f64 im 4))))))
(+.f64 1 (+.f64 (+.f64 (+.f64 re (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 re 1/24)))) (*.f64 (pow.f64 im 6) (-.f64 (*.f64 re -1/720) 1/720))) (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2))))
(+.f64 (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2)) (+.f64 (+.f64 re (-.f64 (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 re 1/24))) -1)) (*.f64 (pow.f64 im 6) (-.f64 (*.f64 re -1/720) 1/720))))
(+.f64 (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2)) (+.f64 1 (+.f64 (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 re 1/24))) (+.f64 re (*.f64 (pow.f64 im 6) (-.f64 (*.f64 re -1/720) 1/720))))))
(+.f64 re (+.f64 (+.f64 (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2)) (+.f64 (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 re 1/24))) (*.f64 (pow.f64 im 6) (-.f64 (*.f64 re -1/720) 1/720)))) 1))
(+.f64 re (+.f64 1 (+.f64 (*.f64 (pow.f64 im 2) (-.f64 (*.f64 re -1/2) 1/2)) (+.f64 (*.f64 (pow.f64 im 4) (+.f64 1/24 (*.f64 re 1/24))) (*.f64 (pow.f64 im 6) (-.f64 (*.f64 re -1/720) 1/720))))))
(cos.f64 im)
(*.f64 (cos.f64 im) re)
(*.f64 re (cos.f64 im))
(*.f64 (cos.f64 im) re)
(*.f64 re (cos.f64 im))
(+.f64 (*.f64 (cos.f64 im) re) 0)
(*.f64 re (cos.f64 im))
(+.f64 0 (*.f64 (cos.f64 im) re))
(*.f64 re (cos.f64 im))
(+.f64 (*.f64 (cos.f64 im) (*.f64 re 1/2)) (*.f64 (cos.f64 im) (*.f64 re 1/2)))
(*.f64 re (cos.f64 im))
(-.f64 (*.f64 (cos.f64 im) re) 0)
(*.f64 re (cos.f64 im))
(/.f64 (*.f64 (cos.f64 im) re) 1)
(*.f64 re (cos.f64 im))
(/.f64 (*.f64 (cos.f64 im) (+.f64 re re)) 2)
(*.f64 re (cos.f64 im))
(/.f64 (*.f64 (cos.f64 im) (*.f64 re 4)) 4)
(*.f64 re (cos.f64 im))
(/.f64 (*.f64 (*.f64 (cos.f64 im) re) 8) 8)
(*.f64 re (cos.f64 im))
(/.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) re) 8)) 16)
(*.f64 re (cos.f64 im))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) re) 8)) (*.f64 2 (*.f64 (*.f64 (cos.f64 im) re) 8))) 32)
(*.f64 re (cos.f64 im))
(-.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 0)
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 1)
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 1 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (/.f64 (+.f64 re 1) 2)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 2 (+.f64 (*.f64 (cos.f64 im) (*.f64 re 1/2)) (*.f64 (cos.f64 im) 1/2)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 2 (+.f64 (*.f64 (cos.f64 im) 1/2) (*.f64 (cos.f64 im) (*.f64 re 1/2))))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 re 1))) 1/2)
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) 2) (*.f64 (+.f64 re 1) 1/2))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) 2) (/.f64 (+.f64 re 1) 2))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) 2) (+.f64 (*.f64 re 1/2) 1/2))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) 2) (+.f64 1/2 (*.f64 re 1/2)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (+.f64 re 1) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 4 (/.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 4))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) (*.f64 (+.f64 re 1) 4)) 1/4)
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 2 (+.f64 re 1)) (*.f64 (cos.f64 im) 1/2))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 1/2 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 re 1))))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 im) (+.f64 re re)) (*.f64 (cos.f64 im) 2)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 im) 2) (*.f64 (cos.f64 im) (+.f64 re re))))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) 1/2) (*.f64 2 (+.f64 re 1)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) 1/2) (+.f64 (+.f64 re re) 2))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) 1/2) (+.f64 2 (+.f64 re re)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (cos.f64 im) (/.f64 (+.f64 re 1) 2)) 2)
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (*.f64 (+.f64 re 1) 1/2) (*.f64 (cos.f64 im) 2))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 1/4 (*.f64 (cos.f64 im) (*.f64 (+.f64 re 1) 4)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (/.f64 (+.f64 re 1) 2) (*.f64 (cos.f64 im) 2))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (/.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 4) 4)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 1)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 (cos.f64 im) (*.f64 2 (+.f64 re 1))) 2)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 (cos.f64 im) (*.f64 (+.f64 re 1) 4)) 4)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8) 8)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8)) 16)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8)) (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re 1)) 8))) 32)
(*.f64 (cos.f64 im) (+.f64 re 1))

eval257.0ms (2.7%)

Compiler

Compiled 2478 to 1623 computations (34.5% saved)

prune26.0ms (0.3%)

Pruning

8 alts after pruning (3 fresh and 5 done)

PrunedKeptTotal
New1423145
Fresh000
Picked011
Done044
Total1428150
Error
0b
Counts
150 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
19.9b
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
20.0b
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
20.0b
(+.f64 re (cos.f64 im))
41.1b
(+.f64 re 1)
19.9b
(*.f64 (+.f64 re 1) (cos.f64 im))
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))
21.2b
(exp.f64 re)
19.9b
(cos.f64 im)
Compiler

Compiled 58 to 40 computations (31% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 16 to 9 computations (43.8% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite82.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1554×rational.json-simplify-35
1344×bool.json-1
1344×bool.json-2
1286×rational.json-1
1286×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
19717
228317
357917
4120317
5267217
6544217
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (+.f64 re 1) (cos.f64 im))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 re 1) (cos.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 re 1) (*.f64 (cos.f64 im) 1/2)) (*.f64 (+.f64 re 1) (*.f64 (cos.f64 im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re 1) (*.f64 (cos.f64 im) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 re 1) (cos.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 re 1) (cos.f64 im)) (*.f64 (+.f64 re 1) (cos.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 re 1) (cos.f64 im)) (*.f64 (+.f64 re 1) (cos.f64 im)))))))

simplify440.0ms (4.6%)

Algorithm
egg-herbie
Rules
2884×rational.json-simplify-35
2196×rational.json-simplify-2
1444×rational.json-simplify-1
838×rational.json-simplify-53
832×rational.json-simplify-41
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
062747
1147747
2296735
3583723
42077723
53839723
64779723
75199723
85522723
95786723
106123723
116978723
127140723
137242723
147326723
157396723
167639723
177884723
Stop Event
node limit
Counts
35 → 38
Calls
Call 1
Inputs
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(*.f64 (cos.f64 im) re)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(*.f64 (cos.f64 im) re)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 1 re)
(+.f64 1 (+.f64 re (*.f64 -1/2 (*.f64 (+.f64 1 re) (pow.f64 im 2)))))
(+.f64 (*.f64 1/24 (*.f64 (+.f64 1 re) (pow.f64 im 4))) (+.f64 1 (+.f64 re (*.f64 -1/2 (*.f64 (+.f64 1 re) (pow.f64 im 2))))))
(+.f64 (*.f64 1/24 (*.f64 (+.f64 1 re) (pow.f64 im 4))) (+.f64 (*.f64 -1/720 (*.f64 (+.f64 1 re) (pow.f64 im 6))) (+.f64 1 (+.f64 re (*.f64 -1/2 (*.f64 (+.f64 1 re) (pow.f64 im 2)))))))
(*.f64 (cos.f64 im) (+.f64 1 re))
(*.f64 (cos.f64 im) (+.f64 1 re))
(*.f64 (cos.f64 im) (+.f64 1 re))
(*.f64 (cos.f64 im) (+.f64 1 re))
(*.f64 (+.f64 1 re) (cos.f64 im))
(*.f64 (+.f64 1 re) (cos.f64 im))
(*.f64 (+.f64 1 re) (cos.f64 im))
(*.f64 (+.f64 1 re) (cos.f64 im))
(+.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 0)
(+.f64 0 (*.f64 (+.f64 re 1) (cos.f64 im)))
(+.f64 (*.f64 (+.f64 re 1) (*.f64 (cos.f64 im) 1/2)) (*.f64 (+.f64 re 1) (*.f64 (cos.f64 im) 1/2)))
(-.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 0)
(/.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 1)
(/.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 2)
(/.f64 (*.f64 (+.f64 re 1) (*.f64 (cos.f64 im) 4)) 4)
(/.f64 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8)))) 64)
Outputs
(cos.f64 im)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) re)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(*.f64 (cos.f64 im) re)
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 (cos.f64 im) re) (cos.f64 im))
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) re))
(+.f64 1 re)
(+.f64 re 1)
(+.f64 1 (+.f64 re (*.f64 -1/2 (*.f64 (+.f64 1 re) (pow.f64 im 2)))))
(+.f64 1 (+.f64 re (*.f64 (+.f64 re 1) (*.f64 (pow.f64 im 2) -1/2))))
(+.f64 (*.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2))) (+.f64 re 1))
(+.f64 (+.f64 re 1) (*.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2))))
(+.f64 re (+.f64 1 (*.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2)))))
(+.f64 (*.f64 1/24 (*.f64 (+.f64 1 re) (pow.f64 im 4))) (+.f64 1 (+.f64 re (*.f64 -1/2 (*.f64 (+.f64 1 re) (pow.f64 im 2))))))
(+.f64 1 (+.f64 (+.f64 re (*.f64 (+.f64 re 1) (*.f64 (pow.f64 im 2) -1/2))) (*.f64 (+.f64 re 1) (*.f64 (pow.f64 im 4) 1/24))))
(+.f64 (+.f64 re (*.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2)))) (+.f64 (*.f64 (+.f64 re 1) (*.f64 1/24 (pow.f64 im 4))) 1))
(+.f64 (*.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2))) (+.f64 (+.f64 re 1) (*.f64 (+.f64 re 1) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 re (+.f64 (*.f64 (+.f64 re 1) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2)))) 1))
(+.f64 (+.f64 re 1) (*.f64 (+.f64 re 1) (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 1 (+.f64 re (*.f64 (+.f64 re 1) (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))))
(+.f64 (*.f64 1/24 (*.f64 (+.f64 1 re) (pow.f64 im 4))) (+.f64 (*.f64 -1/720 (*.f64 (+.f64 1 re) (pow.f64 im 6))) (+.f64 1 (+.f64 re (*.f64 -1/2 (*.f64 (+.f64 1 re) (pow.f64 im 2)))))))
(+.f64 (*.f64 (+.f64 re 1) (*.f64 (pow.f64 im 4) 1/24)) (+.f64 1 (+.f64 (+.f64 re (*.f64 (+.f64 re 1) (*.f64 (pow.f64 im 2) -1/2))) (*.f64 (+.f64 re 1) (*.f64 (pow.f64 im 6) -1/720)))))
(+.f64 (+.f64 (*.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2))) (+.f64 re 1)) (+.f64 (*.f64 (pow.f64 im 6) (*.f64 (+.f64 re 1) -1/720)) (*.f64 (+.f64 re 1) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (+.f64 (+.f64 re 1) (*.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2)))) (*.f64 (+.f64 re 1) (+.f64 (*.f64 -1/720 (pow.f64 im 6)) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (*.f64 (+.f64 re 1) (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 -1/720 (pow.f64 im 6)))) (+.f64 1 (+.f64 re (*.f64 (pow.f64 im 4) (*.f64 (+.f64 re 1) 1/24)))))
(+.f64 1 (+.f64 re (+.f64 (*.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2))) (*.f64 (+.f64 re 1) (+.f64 (*.f64 -1/720 (pow.f64 im 6)) (*.f64 1/24 (pow.f64 im 4)))))))
(*.f64 (cos.f64 im) (+.f64 1 re))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (cos.f64 im) (+.f64 1 re))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (cos.f64 im) (+.f64 1 re))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (cos.f64 im) (+.f64 1 re))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (+.f64 1 re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (+.f64 1 re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (+.f64 1 re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re 1))
(*.f64 (+.f64 1 re) (cos.f64 im))
(*.f64 (cos.f64 im) (+.f64 re 1))
(+.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 0)
(*.f64 (cos.f64 im) (+.f64 re 1))
(+.f64 0 (*.f64 (+.f64 re 1) (cos.f64 im)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(+.f64 (*.f64 (+.f64 re 1) (*.f64 (cos.f64 im) 1/2)) (*.f64 (+.f64 re 1) (*.f64 (cos.f64 im) 1/2)))
(*.f64 (cos.f64 im) (+.f64 re 1))
(-.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 0)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 1)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 2)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 (+.f64 re 1) (*.f64 (cos.f64 im) 4)) 4)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8) 8)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8)) 16)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8))) 32)
(*.f64 (cos.f64 im) (+.f64 re 1))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 re 1) (cos.f64 im)) 8)))) 64)
(*.f64 (cos.f64 im) (+.f64 re 1))

localize3.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 10 to 4 computations (60% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite101.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1826×bool.json-1
1826×bool.json-2
1324×rational.json-simplify-35
1140×rational.json-1
1140×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
17111
221011
346411
4100311
5223411
6460711
7743511
Stop Event
node limit
Counts
1 → 20
Calls
Call 1
Inputs
(+.f64 re (cos.f64 im))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 re (cos.f64 im)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (cos.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (cos.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 re 1/2) (*.f64 (cos.f64 im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 re (cos.f64 im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 re (cos.f64 im)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 re (cos.f64 im)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 re (cos.f64 im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (cos.f64 im) 2) (+.f64 re re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 re (cos.f64 im)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 re (cos.f64 im)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 re (cos.f64 im)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 re (cos.f64 im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re (cos.f64 im)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re (cos.f64 im)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re (cos.f64 im)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 re (cos.f64 im))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 re (cos.f64 im)) (+.f64 re (cos.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 re (cos.f64 im)) (+.f64 re (cos.f64 im)))))))

simplify366.0ms (3.8%)

Algorithm
egg-herbie
Rules
2376×rational.json-simplify-2
1898×rational.json-simplify-35
1340×rational.json-simplify-49
1330×rational.json-simplify-52
904×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
072568
1155568
2364568
3843568
41383568
52253568
62677568
72752568
82832568
92931568
103040568
113325568
123474568
133590568
143686568
153766568
163848568
174871568
185199568
196363568
207001568
217431568
Stop Event
node limit
Counts
44 → 40
Calls
Call 1
Inputs
(cos.f64 im)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
re
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
re
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 1 re)
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) re))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) re)))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (+.f64 re (*.f64 -1/720 (pow.f64 im 6))))))
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(-.f64 (+.f64 re (cos.f64 im)) 0)
(*.f64 (+.f64 re (cos.f64 im)) 1)
(*.f64 1 (+.f64 re (cos.f64 im)))
(*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 1/2))
(*.f64 2 (+.f64 (*.f64 re 1/2) (*.f64 (cos.f64 im) 1/2)))
(*.f64 (*.f64 (+.f64 re (cos.f64 im)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 re (cos.f64 im)) 4))
(*.f64 (*.f64 (+.f64 re (cos.f64 im)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 re (cos.f64 im)) 2))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 im) 2) (+.f64 re re)))
(*.f64 (*.f64 (+.f64 re (cos.f64 im)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 re (cos.f64 im)) 4))
(*.f64 (/.f64 (+.f64 re (cos.f64 im)) 4) 4)
(/.f64 (+.f64 re (cos.f64 im)) 1)
(/.f64 (*.f64 (+.f64 re (cos.f64 im)) 2) 2)
(/.f64 (*.f64 (+.f64 re (cos.f64 im)) 4) 4)
(/.f64 (*.f64 (+.f64 re (cos.f64 im)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8)))) 64)
Outputs
(cos.f64 im)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
re
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
re
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 1 re)
(+.f64 re 1)
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) re))
(+.f64 1 (+.f64 re (*.f64 -1/2 (pow.f64 im 2))))
(+.f64 re (+.f64 1 (*.f64 -1/2 (pow.f64 im 2))))
(+.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2)))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) re)))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 re (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 (+.f64 (+.f64 re 1) (*.f64 -1/2 (pow.f64 im 2))) (*.f64 1/24 (pow.f64 im 4)))
(+.f64 re (+.f64 (+.f64 1 (*.f64 1/24 (pow.f64 im 4))) (*.f64 -1/2 (pow.f64 im 2))))
(+.f64 re (+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (+.f64 re (*.f64 -1/720 (pow.f64 im 6))))))
(+.f64 re (+.f64 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6)))) 1))
(+.f64 re (+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6))))))
(+.f64 re (+.f64 (*.f64 -1/720 (pow.f64 im 6)) (+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))))
(+.f64 1 (+.f64 re (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/720 (pow.f64 im 6))))))
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(+.f64 (cos.f64 im) re)
(-.f64 (+.f64 re (cos.f64 im)) 0)
(+.f64 (cos.f64 im) re)
(*.f64 (+.f64 re (cos.f64 im)) 1)
(+.f64 (cos.f64 im) re)
(*.f64 1 (+.f64 re (cos.f64 im)))
(+.f64 (cos.f64 im) re)
(*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 1/2))
(+.f64 (cos.f64 im) re)
(*.f64 2 (+.f64 (*.f64 re 1/2) (*.f64 (cos.f64 im) 1/2)))
(+.f64 (cos.f64 im) re)
(*.f64 (*.f64 (+.f64 re (cos.f64 im)) 2) 1/2)
(+.f64 (cos.f64 im) re)
(*.f64 4 (/.f64 (+.f64 re (cos.f64 im)) 4))
(+.f64 (cos.f64 im) re)
(*.f64 (*.f64 (+.f64 re (cos.f64 im)) 4) 1/4)
(+.f64 (cos.f64 im) re)
(*.f64 1/2 (*.f64 (+.f64 re (cos.f64 im)) 2))
(+.f64 (cos.f64 im) re)
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 im) 2) (+.f64 re re)))
(*.f64 1/2 (+.f64 re (+.f64 re (*.f64 (cos.f64 im) 2))))
(*.f64 (*.f64 (+.f64 re (cos.f64 im)) 1/2) 2)
(+.f64 (cos.f64 im) re)
(*.f64 1/4 (*.f64 (+.f64 re (cos.f64 im)) 4))
(+.f64 (cos.f64 im) re)
(*.f64 (/.f64 (+.f64 re (cos.f64 im)) 4) 4)
(+.f64 (cos.f64 im) re)
(/.f64 (+.f64 re (cos.f64 im)) 1)
(+.f64 (cos.f64 im) re)
(/.f64 (*.f64 (+.f64 re (cos.f64 im)) 2) 2)
(+.f64 (cos.f64 im) re)
(/.f64 (*.f64 (+.f64 re (cos.f64 im)) 4) 4)
(+.f64 (cos.f64 im) re)
(/.f64 (*.f64 (+.f64 re (cos.f64 im)) 8) 8)
(+.f64 (cos.f64 im) re)
(/.f64 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8)) 16)
(+.f64 (cos.f64 im) re)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8))) 32)
(+.f64 (cos.f64 im) re)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 re (cos.f64 im)) 8)))) 64)
(+.f64 (cos.f64 im) re)

eval78.0ms (0.8%)

Compiler

Compiled 994 to 704 computations (29.2% saved)

prune237.0ms (2.5%)

Pruning

9 alts after pruning (2 fresh and 7 done)

PrunedKeptTotal
New76278
Fresh000
Picked011
Done167
Total77986
Error
0b
Counts
86 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
19.9b
(/.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 2)
20.0b
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
20.0b
(+.f64 re (cos.f64 im))
41.1b
(+.f64 re 1)
19.9b
(*.f64 (+.f64 re 1) (cos.f64 im))
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))
21.2b
(exp.f64 re)
19.9b
(cos.f64 im)
61.9b
re
Compiler

Compiled 64 to 46 computations (28.1% saved)

localize24.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 33 to 19 computations (42.4% saved)

series2.0ms (0%)

Counts
2 → 36
Calls

9 calls:

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

rewrite102.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1522×bool.json-1
1522×bool.json-2
1470×rational.json-1
1470×rational.json-2
1470×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01036
110036
226636
355836
4122736
5283536
6595336
Stop Event
node limit
Counts
2 → 29
Calls
Call 1
Inputs
(*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2)))
(+.f64 re (+.f64 re 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 1/2)) (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8)) (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 re (+.f64 re 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (+.f64 re 2) 1/2) (*.f64 re 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 re 1/2) (*.f64 (+.f64 re 2) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (+.f64 re 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (+.f64 re 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 re 4) (*.f64 re 3)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 re (+.f64 re 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 re (+.f64 re 2)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 re 4) (*.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 re (+.f64 re 2)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 re (+.f64 re 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 re (+.f64 re 2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 re (+.f64 re 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (+.f64 re 4) (*.f64 re 3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re (+.f64 re 2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 re (+.f64 re 2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 8)) (*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 re (+.f64 re 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 re (+.f64 re 2)) (+.f64 re (+.f64 re 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 re (+.f64 re 2)) (+.f64 re (+.f64 re 2)))))))

simplify652.0ms (6.8%)

Algorithm
egg-herbie
Rules
1864×rational.json-simplify-35
1746×rational.json-simplify-2
1370×rational.json-simplify-1
794×rational.json-simplify-38
710×rational.json-simplify-48
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0971349
12091349
25171313
314661295
428961295
533301295
634541295
735491295
836521295
937731295
1043081295
1146021295
1253591295
1356551295
1458861295
1562301295
1664431295
1766471295
1871051295
Stop Event
node limit
Counts
65 → 62
Calls
Call 1
Inputs
(+.f64 2 (*.f64 2 re))
(+.f64 2 (+.f64 (*.f64 2 re) (*.f64 -1/2 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 2)))))
(+.f64 2 (+.f64 (*.f64 2 re) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 4))))))
(+.f64 2 (+.f64 (*.f64 -1/720 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 6))) (+.f64 (*.f64 2 re) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 4)))))))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 2 (cos.f64 im))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 2 (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 2 (*.f64 (cos.f64 im) re))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
2
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(*.f64 2 re)
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(*.f64 2 re)
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(+.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 0)
(+.f64 0 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))))
(+.f64 (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 1/2)) (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 1/2)))
(-.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 0)
(/.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 1)
(/.f64 (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 2)) 2)
(/.f64 (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 4)) 4)
(/.f64 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8)) (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8))) 32)
(-.f64 (+.f64 re (+.f64 re 2)) 0)
(*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 1/2))
(*.f64 2 (+.f64 (*.f64 (+.f64 re 2) 1/2) (*.f64 re 1/2)))
(*.f64 2 (+.f64 (*.f64 re 1/2) (*.f64 (+.f64 re 2) 1/2)))
(*.f64 (+.f64 re (+.f64 re 2)) 1)
(*.f64 1 (+.f64 re (+.f64 re 2)))
(*.f64 (+.f64 (+.f64 re 4) (*.f64 re 3)) 1/2)
(*.f64 4 (/.f64 (+.f64 re (+.f64 re 2)) 4))
(*.f64 (*.f64 (+.f64 re (+.f64 re 2)) 4) 1/4)
(*.f64 1/2 (+.f64 (+.f64 re 4) (*.f64 re 3)))
(*.f64 (*.f64 (+.f64 re (+.f64 re 2)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 re (+.f64 re 2)) 4))
(*.f64 (/.f64 (+.f64 re (+.f64 re 2)) 4) 4)
(/.f64 (+.f64 re (+.f64 re 2)) 1)
(/.f64 (+.f64 (+.f64 re 4) (*.f64 re 3)) 2)
(/.f64 (*.f64 (+.f64 re (+.f64 re 2)) 4) 4)
(/.f64 (*.f64 (+.f64 re (+.f64 re 2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 8)) (*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 8))) 32)
Outputs
(+.f64 2 (*.f64 2 re))
(+.f64 2 (+.f64 (*.f64 2 re) (*.f64 -1/2 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 2)))))
(+.f64 2 (+.f64 (*.f64 2 re) (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 (pow.f64 im 2) -1/2))))
(+.f64 (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 -1/2 (pow.f64 im 2))) (+.f64 2 (*.f64 2 re)))
(+.f64 2 (+.f64 (*.f64 2 re) (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 -1/2 (pow.f64 im 2)))))
(+.f64 (+.f64 2 (*.f64 2 re)) (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 -1/2 (pow.f64 im 2))))
(+.f64 2 (+.f64 (*.f64 2 re) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 4))))))
(+.f64 2 (+.f64 (*.f64 2 re) (+.f64 (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 (pow.f64 im 2) -1/2)) (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 (pow.f64 im 4) 1/24)))))
(+.f64 2 (+.f64 (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 -1/2 (pow.f64 im 2))) (+.f64 (*.f64 2 re) (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 1/24 (pow.f64 im 4))))))
(+.f64 2 (+.f64 (*.f64 2 re) (*.f64 (+.f64 2 (*.f64 2 re)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2))))))
(+.f64 (+.f64 2 (*.f64 2 re)) (*.f64 (+.f64 2 (*.f64 2 re)) (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))
(+.f64 2 (+.f64 (*.f64 2 re) (*.f64 (+.f64 2 (*.f64 2 re)) (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4))))))
(+.f64 2 (+.f64 (*.f64 -1/720 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 6))) (+.f64 (*.f64 2 re) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 4)))))))
(+.f64 2 (+.f64 (*.f64 2 re) (+.f64 (+.f64 (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 (pow.f64 im 2) -1/2)) (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 (pow.f64 im 4) 1/24))) (*.f64 -1/720 (*.f64 (+.f64 2 (*.f64 2 re)) (pow.f64 im 6))))))
(+.f64 2 (+.f64 (+.f64 (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 -1/2 (pow.f64 im 2))) (+.f64 (*.f64 2 re) (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 1/24 (pow.f64 im 4))))) (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 -1/720 (pow.f64 im 6)))))
(+.f64 2 (+.f64 (*.f64 2 re) (+.f64 (*.f64 (+.f64 2 (*.f64 2 re)) (+.f64 (*.f64 1/24 (pow.f64 im 4)) (*.f64 -1/2 (pow.f64 im 2)))) (*.f64 (+.f64 2 (*.f64 2 re)) (*.f64 -1/720 (pow.f64 im 6))))))
(+.f64 (*.f64 2 re) (+.f64 2 (*.f64 (+.f64 2 (*.f64 2 re)) (+.f64 (*.f64 -1/720 (pow.f64 im 6)) (+.f64 (*.f64 -1/2 (pow.f64 im 2)) (*.f64 1/24 (pow.f64 im 4)))))))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 2 (cos.f64 im))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 2 (*.f64 (cos.f64 im) re))
(*.f64 2 (*.f64 re (cos.f64 im)))
(*.f64 re (*.f64 2 (cos.f64 im)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(*.f64 2 (*.f64 (cos.f64 im) re))
(*.f64 2 (*.f64 re (cos.f64 im)))
(*.f64 re (*.f64 2 (cos.f64 im)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
(+.f64 (*.f64 2 (*.f64 (cos.f64 im) re)) (*.f64 2 (cos.f64 im)))
(*.f64 (+.f64 2 (*.f64 2 re)) (cos.f64 im))
(*.f64 (*.f64 2 (cos.f64 im)) (+.f64 re 1))
(*.f64 2 (*.f64 (cos.f64 im) (+.f64 re 1)))
2
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(*.f64 2 re)
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(*.f64 2 re)
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(+.f64 2 (*.f64 2 re))
(+.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 0)
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(+.f64 0 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))))
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(+.f64 (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 1/2)) (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 1/2)))
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(-.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 0)
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(/.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 1)
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(/.f64 (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 2)) 2)
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(/.f64 (*.f64 (+.f64 re (+.f64 re 2)) (*.f64 (cos.f64 im) 4)) 4)
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(/.f64 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8) 8)
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(/.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8)) 16)
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8)) (*.f64 2 (*.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 8))) 32)
(*.f64 (cos.f64 im) (+.f64 re (+.f64 2 re)))
(*.f64 (cos.f64 im) (+.f64 2 (+.f64 re re)))
(-.f64 (+.f64 re (+.f64 re 2)) 0)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 1/2))
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 2 (+.f64 (*.f64 (+.f64 re 2) 1/2) (*.f64 re 1/2)))
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 2 (+.f64 (*.f64 re 1/2) (*.f64 (+.f64 re 2) 1/2)))
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 (+.f64 re (+.f64 re 2)) 1)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 1 (+.f64 re (+.f64 re 2)))
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 (+.f64 (+.f64 re 4) (*.f64 re 3)) 1/2)
(*.f64 1/2 (+.f64 (+.f64 re 4) (*.f64 re 3)))
(*.f64 1/2 (+.f64 re (+.f64 4 (*.f64 re 3))))
(*.f64 4 (/.f64 (+.f64 re (+.f64 re 2)) 4))
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 (*.f64 (+.f64 re (+.f64 re 2)) 4) 1/4)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 1/2 (+.f64 (+.f64 re 4) (*.f64 re 3)))
(*.f64 1/2 (+.f64 re (+.f64 4 (*.f64 re 3))))
(*.f64 (*.f64 (+.f64 re (+.f64 re 2)) 1/2) 2)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 1/4 (*.f64 (+.f64 re (+.f64 re 2)) 4))
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(*.f64 (/.f64 (+.f64 re (+.f64 re 2)) 4) 4)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(/.f64 (+.f64 re (+.f64 re 2)) 1)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(/.f64 (+.f64 (+.f64 re 4) (*.f64 re 3)) 2)
(/.f64 (+.f64 re (+.f64 4 (*.f64 re 3))) 2)
(/.f64 (*.f64 (+.f64 re (+.f64 re 2)) 4) 4)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(/.f64 (*.f64 (+.f64 re (+.f64 re 2)) 8) 8)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(/.f64 (*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 8)) 16)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 8)) (*.f64 2 (*.f64 (+.f64 re (+.f64 re 2)) 8))) 32)
(+.f64 re (+.f64 2 re))
(+.f64 2 (+.f64 re re))

eval19.0ms (0.2%)

Compiler

Compiled 1058 to 802 computations (24.2% saved)

prune76.0ms (0.8%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New62062
Fresh011
Picked011
Done077
Total62971
Error
0b
Counts
71 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
19.9b
(/.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 2)
20.0b
(+.f64 (cos.f64 im) (*.f64 (cos.f64 im) (+.f64 (*.f64 1/2 (pow.f64 re 2)) re)))
20.0b
(+.f64 re (cos.f64 im))
41.1b
(+.f64 re 1)
19.9b
(*.f64 (+.f64 re 1) (cos.f64 im))
0.0b
(*.f64 (exp.f64 re) (cos.f64 im))
21.2b
(exp.f64 re)
19.9b
(cos.f64 im)
61.9b
re
Compiler

Compiled 64 to 46 computations (28.1% saved)

regimes213.0ms (2.2%)

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

5 calls:

194.0ms
im
6.0ms
re
5.0ms
(cos.f64 im)
4.0ms
(*.f64 (exp.f64 re) (cos.f64 im))
2.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.0b1re
0.0b1im
0.0b1(*.f64 (exp.f64 re) (cos.f64 im))
0.0b1(exp.f64 re)
0.0b1(cos.f64 im)
Compiler

Compiled 76 to 41 computations (46.1% saved)

regimes167.0ms (1.8%)

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

4 calls:

83.0ms
(cos.f64 im)
63.0ms
re
17.0ms
im
3.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.0b2re
10.2b3im
0.0b2(exp.f64 re)
10.5b2(cos.f64 im)
Compiler

Compiled 44 to 26 computations (40.9% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.999692441078729
0.9999999999999992
Compiler

Compiled 12 to 9 computations (25% saved)

regimes39.0ms (0.4%)

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

4 calls:

17.0ms
im
9.0ms
re
7.0ms
(cos.f64 im)
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.0b2re
10.2b3im
0.0b2(exp.f64 re)
10.5b2(cos.f64 im)
Compiler

Compiled 34 to 20 computations (41.2% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.999692441078729
0.9999999999999992
Compiler

Compiled 12 to 9 computations (25% saved)

regimes127.0ms (1.3%)

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

4 calls:

53.0ms
re
53.0ms
(cos.f64 im)
17.0ms
im
3.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.1b2re
10.3b3im
0.1b2(exp.f64 re)
10.5b2(cos.f64 im)
Compiler

Compiled 28 to 17 computations (39.3% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.999692441078729
0.9999999999999992
Compiler

Compiled 12 to 9 computations (25% saved)

regimes32.0ms (0.3%)

Counts
4 → 2
Calls
Call 1
Inputs
re
(+.f64 re 1)
(cos.f64 im)
(exp.f64 re)
Outputs
(exp.f64 re)
(cos.f64 im)
Calls

4 calls:

14.0ms
im
8.0ms
re
6.0ms
(cos.f64 im)
4.0ms
(exp.f64 re)
Results
ErrorSegmentsBranch
0.1b2re
10.3b3im
0.1b2(exp.f64 re)
10.5b2(cos.f64 im)
Compiler

Compiled 24 to 16 computations (33.3% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.999692441078729
0.9999999999999992
Compiler

Compiled 12 to 9 computations (25% saved)

regimes11.0ms (0.1%)

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

3 calls:

4.0ms
(cos.f64 im)
3.0ms
im
3.0ms
re
Results
ErrorSegmentsBranch
19.9b1re
19.9b1im
19.9b1(cos.f64 im)
Compiler

Compiled 18 to 12 computations (33.3% saved)

regimes58.0ms (0.6%)

Accuracy

Total -21.0b remaining (-51.1%)

Threshold costs -21.0b (-51.1%)

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

2 calls:

54.0ms
im
3.0ms
re
Results
ErrorSegmentsBranch
41.1b1re
41.1b1im
Compiler

Compiled 12 to 8 computations (33.3% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
026162
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (exp.f64 re) (cos.f64 im))
(if (<=.f64 (exp.f64 re) 2251349453722511/2251799813685248) (exp.f64 re) (/.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 2))
(if (<=.f64 (exp.f64 re) 2251349453722511/2251799813685248) (exp.f64 re) (*.f64 (+.f64 re 1) (cos.f64 im)))
(if (<=.f64 (exp.f64 re) 2251349453722511/2251799813685248) (exp.f64 re) (+.f64 re (cos.f64 im)))
(if (<=.f64 (exp.f64 re) 2251349453722511/2251799813685248) (exp.f64 re) (cos.f64 im))
(cos.f64 im)
(+.f64 re 1)
re
Outputs
(*.f64 (exp.f64 re) (cos.f64 im))
(if (<=.f64 (exp.f64 re) 2251349453722511/2251799813685248) (exp.f64 re) (/.f64 (*.f64 (cos.f64 im) (+.f64 re (+.f64 re 2))) 2))
(if (<=.f64 (exp.f64 re) 2251349453722511/2251799813685248) (exp.f64 re) (*.f64 (+.f64 re 1) (cos.f64 im)))
(if (<=.f64 (exp.f64 re) 2251349453722511/2251799813685248) (exp.f64 re) (+.f64 re (cos.f64 im)))
(if (<=.f64 (exp.f64 re) 2251349453722511/2251799813685248) (exp.f64 re) (cos.f64 im))
(cos.f64 im)
(+.f64 re 1)
re
Compiler

Compiled 77 to 52 computations (32.5% saved)

soundness0.0ms (0%)

end149.0ms (1.6%)

Compiler

Compiled 63 to 29 computations (54% saved)

Profiling

Loading profile data...