Details

Time bar (total: 4.9s)

analyze144.0ms (2.9%)

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

Compiled 15 to 12 computations (20% saved)

sample4.3s (87.8%)

Results
1.2s2099×body1024infinite
1.1s5145×body256valid
1.1s2038×body1024valid
363.0ms1068×body512valid
278.0ms1612×body256infinite
252.0ms1010×body512infinite
5.0msbody2048valid
Bogosity

preprocess5.0ms (0.1%)

Algorithm
egg-herbie
Rules
40×rational.json-simplify-2
16×rational.json-simplify-31
12×rational.json-simplify-1
rational.json-simplify-9
rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02170
13570
25370
37270
47970
58470
68870
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 im)) (+.f64 (exp.f64 (-.f64 0 re)) (exp.f64 re)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 im)) (+.f64 (exp.f64 (-.f64 0 re)) (exp.f64 re)))
(*.f64 (*.f64 1/2 (sin.f64 im)) (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re)))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re)) (sin.f64 im)))
(*.f64 1/2 (*.f64 (sin.f64 im) (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re))))
Compiler

Compiled 16 to 13 computations (18.8% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Rules
20×rational.json-simplify-2
rational.json-simplify-31
rational.json-simplify-1
rational.json-simplify-9
rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01435
12135
23135
34135
44635
54935
65235
Stop Event
saturated
Counts
1 → 4
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))

eval1.0ms (0%)

Compiler

Compiled 47 to 23 computations (51.1% saved)

prune2.0ms (0.1%)

Pruning

1 alts after pruning (1 fresh and 0 done)

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

Compiled 13 to 10 computations (23.1% saved)

localize13.0ms (0.3%)

Local error

Found 1 expressions with local error:

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

Compiled 35 to 13 computations (62.9% saved)

series22.0ms (0.4%)

Counts
1 → 24
Calls

6 calls:

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

rewrite7.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
50×rational.json-simplify-2
44×bool.json-1
36×rational.json-1
36×rational.json-2
34×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01335
16135
210635
312935
414335
514635
614835
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) (*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))))))

simplify22.0ms (0.5%)

Algorithm
egg-herbie
Rules
120×rational.json-simplify-1
106×rational.json-simplify-2
66×rational.json-simplify-33
34×rational.json-simplify-31
rational.json-simplify-19
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0661206
11211194
21811194
32331194
42561194
52611194
Stop Event
saturated
Counts
26 → 34
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))))
(+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 7) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(sin.f64 re)
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4)))))
(+.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/720 (*.f64 (sin.f64 re) (pow.f64 im 6))) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) 0)
(+.f64 0 (*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))
Outputs
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))
(+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (pow.f64 re 3) (*.f64 -1/12 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))
(+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (pow.f64 re 3) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) -1/12)))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))))
(+.f64 (*.f64 (pow.f64 re 3) (*.f64 -1/12 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 5)))))
(+.f64 (*.f64 (pow.f64 re 3) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) -1/12)) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/240 (pow.f64 re 5)))))
(+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 (pow.f64 re 3) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) -1/12)) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/240 (pow.f64 re 5)))))
(+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 7) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))))
(+.f64 (+.f64 (*.f64 -1/10080 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 7))) (*.f64 (pow.f64 re 3) (*.f64 -1/12 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 5)))))
(+.f64 (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/240 (pow.f64 re 5)))) (+.f64 (*.f64 (pow.f64 re 3) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) -1/12)) (*.f64 -1/10080 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 7)))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/240 (pow.f64 re 5))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 (pow.f64 re 3) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) -1/12)) (*.f64 -1/10080 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 7))))))
(+.f64 (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 (pow.f64 re 3) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) -1/12))) (+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/240 (pow.f64 re 5))) (*.f64 -1/10080 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 7)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(sin.f64 re)
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1))
(+.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4)))))
(+.f64 (*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2)))) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))))
(+.f64 (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))))
(+.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/720 (*.f64 (sin.f64 re) (pow.f64 im 6))) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))))))
(+.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))) (*.f64 (sin.f64 re) (*.f64 1/720 (pow.f64 im 6))))))
(+.f64 (*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2)))) (+.f64 (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))) (*.f64 (sin.f64 re) (*.f64 1/720 (pow.f64 im 6)))))
(+.f64 (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)) (+.f64 (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))) (*.f64 (sin.f64 re) (*.f64 1/720 (pow.f64 im 6)))))
(+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))) (*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/720 (pow.f64 im 6))))))
(+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))) (*.f64 (sin.f64 re) (+.f64 (*.f64 1/720 (pow.f64 im 6)) 1))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re)))
(+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))) 0)
(+.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) 0)
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re))) 0)
(+.f64 0 (*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))))
(+.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) 0)
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 (sin.f64 re))) 0)

eval13.0ms (0.3%)

Compiler

Compiled 828 to 396 computations (52.2% saved)

prune6.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New30434
Fresh000
Picked011
Done000
Total30535
Error
0.0b
Counts
35 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.8b
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
0.0b
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
0.8b
(*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1))
31.7b
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
1.1b
(sin.f64 re)
Compiler

Compiled 54 to 41 computations (24.1% saved)

localize3.0ms (0.1%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize12.0ms (0.2%)

Compiler

Compiled 36 to 10 computations (72.2% saved)

localize14.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 34 to 25 computations (26.5% saved)

series7.0ms (0.2%)

Counts
2 → 24
Calls

9 calls:

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

rewrite6.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
32×bool.json-1
28×rational.json-simplify-2
26×rational.json-simplify-1
24×rational.json-1
24×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01342
15842
28742
39342
Stop Event
saturated
Counts
2 → 4
Calls
Call 1
Inputs
(*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1))
(*.f64 1/2 (pow.f64 im 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)) (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)))))))
((#(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 or (*.f64 1/2 (pow.f64 im 2)) (*.f64 1/2 (pow.f64 im 2)))))))

simplify18.0ms (0.4%)

Algorithm
egg-herbie
Rules
68×rational.json-simplify-1
52×rational.json-simplify-2
40×rational.json-simplify-33
18×rational.json-simplify-31
rational.json-simplify-19
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0441004
1741004
21071004
31321004
41451004
51451004
Stop Event
saturated
Counts
28 → 20
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 3))) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 3))) (+.f64 (*.f64 1/120 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 5))) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 3))) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 7))) (+.f64 (*.f64 1/120 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 5))) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(sin.f64 re)
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)) 0)
(+.f64 0 (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) 0)
(+.f64 0 (*.f64 1/2 (pow.f64 im 2)))
Outputs
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 3))) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 3))) (+.f64 (*.f64 1/120 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 5))) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (*.f64 -1/6 (pow.f64 re 3))) (+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (*.f64 1/120 (pow.f64 re 5)))))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (*.f64 -1/6 (pow.f64 re 3))) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (*.f64 1/120 (pow.f64 re 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 3))) (+.f64 (*.f64 -1/5040 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 7))) (+.f64 (*.f64 1/120 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 5))) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re))))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (*.f64 -1/6 (pow.f64 re 3))) (+.f64 (+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (*.f64 1/120 (pow.f64 re 5)))) (*.f64 -1/5040 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 7)))))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (*.f64 -1/6 (pow.f64 re 3))) (+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (*.f64 1/120 (pow.f64 re 5))) (+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (*.f64 -1/5040 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (pow.f64 re 7))))))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 1/2 (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(sin.f64 re)
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (pow.f64 im 2) (sin.f64 re)))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (pow.f64 im 2) (sin.f64 re)))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re))
(+.f64 (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)) 0)
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re)) 0)
(+.f64 0 (*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1)))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) (sin.f64 re)) 0)
(+.f64 (*.f64 1/2 (pow.f64 im 2)) 0)
(+.f64 0 (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 1/2 (pow.f64 im 2)) 0)

localize15.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 36 to 21 computations (41.7% saved)

series3.0ms (0.1%)

Counts
2 → 11
Calls

12 calls:

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

rewrite8.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
42×rational.json-simplify-2
40×bool.json-1
34×rational.json-simplify-1
32×rational.json-1
32×rational.json-2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01250
15746
29846
311946
412446
512546
Stop Event
saturated
Counts
2 → 6
Calls
Call 1
Inputs
(*.f64 (sin.f64 re) (pow.f64 im 2))
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 re) (pow.f64 im 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sin.f64 re) (pow.f64 im 2)) (*.f64 (sin.f64 re) (pow.f64 im 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)) (sin.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))) (*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))))))))

simplify26.0ms (0.5%)

Algorithm
egg-herbie
Rules
236×rational.json-simplify-2
224×rational.json-simplify-31
128×rational.json-simplify-1
66×rational.json-simplify-33
24×rational.json-simplify-27
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
065773
1124773
2186773
3245773
4285773
5330773
6390773
7459773
8496773
9504773
Stop Event
saturated
Counts
17 → 35
Calls
Call 1
Inputs
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (pow.f64 im 2))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2)))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/12 (pow.f64 im 2)) 1/6)))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (+.f64 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/12 (pow.f64 im 2)) 1/6)) (*.f64 (+.f64 1/120 (*.f64 1/240 (pow.f64 im 2))) (pow.f64 re 5))))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (+.f64 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/12 (pow.f64 im 2)) 1/6)) (+.f64 (*.f64 (-.f64 (*.f64 -1/10080 (pow.f64 im 2)) 1/5040) (pow.f64 re 7)) (*.f64 (+.f64 1/120 (*.f64 1/240 (pow.f64 im 2))) (pow.f64 re 5)))))
(sin.f64 re)
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 0)
(+.f64 0 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))
(*.f64 (*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))) 1)
(*.f64 1 (*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))))
(*.f64 (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)) (sin.f64 re))
Outputs
(*.f64 re (pow.f64 im 2))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2)))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 -1/6 (*.f64 (pow.f64 im 2) (pow.f64 re 3))))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 (pow.f64 im 2) (*.f64 -1/6 (pow.f64 re 3))))
(+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 (pow.f64 re 3) (*.f64 (pow.f64 im 2) -1/6)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 im 2) (pow.f64 re 3))) (+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 1/120 (*.f64 (pow.f64 im 2) (pow.f64 re 5)))))
(+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/6 (pow.f64 re 3))) (*.f64 (pow.f64 im 2) (*.f64 1/120 (pow.f64 re 5)))))
(+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 (pow.f64 re 3) (*.f64 (pow.f64 im 2) -1/6)) (*.f64 (pow.f64 im 2) (*.f64 1/120 (pow.f64 re 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 re 7) (pow.f64 im 2))) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 re (pow.f64 im 2)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 im 2) (pow.f64 re 3))) (+.f64 (+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 1/120 (*.f64 (pow.f64 im 2) (pow.f64 re 5)))) (*.f64 -1/5040 (*.f64 (pow.f64 im 2) (pow.f64 re 7)))))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/6 (pow.f64 re 3))) (+.f64 (+.f64 (*.f64 re (pow.f64 im 2)) (*.f64 (pow.f64 im 2) (*.f64 1/120 (pow.f64 re 5)))) (*.f64 (pow.f64 im 2) (*.f64 -1/5040 (pow.f64 re 7)))))
(+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 1/120 (pow.f64 re 5))) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/6 (pow.f64 re 3))) (*.f64 (pow.f64 im 2) (*.f64 -1/5040 (pow.f64 re 7))))))
(+.f64 (+.f64 (*.f64 re (pow.f64 im 2)) (+.f64 (*.f64 (pow.f64 re 3) (*.f64 (pow.f64 im 2) -1/6)) (*.f64 (pow.f64 im 2) (*.f64 1/120 (pow.f64 re 5))))) (*.f64 (pow.f64 im 2) (*.f64 -1/5040 (pow.f64 re 7))))
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)
(*.f64 re (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/12 (pow.f64 im 2)) 1/6)))
(+.f64 (*.f64 re (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))) (*.f64 (pow.f64 re 3) (+.f64 -1/6 (*.f64 (pow.f64 im 2) -1/12))))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (+.f64 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/12 (pow.f64 im 2)) 1/6)) (*.f64 (+.f64 1/120 (*.f64 1/240 (pow.f64 im 2))) (pow.f64 re 5))))
(+.f64 (*.f64 re (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))) (+.f64 (*.f64 (pow.f64 re 3) (+.f64 -1/6 (*.f64 (pow.f64 im 2) -1/12))) (*.f64 (pow.f64 re 5) (+.f64 1/120 (*.f64 (pow.f64 im 2) 1/240)))))
(+.f64 (+.f64 (*.f64 re (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))) (*.f64 (pow.f64 re 3) (+.f64 -1/6 (*.f64 (pow.f64 im 2) -1/12)))) (*.f64 (pow.f64 re 5) (+.f64 1/120 (*.f64 (pow.f64 im 2) 1/240))))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (+.f64 (*.f64 (pow.f64 re 3) (-.f64 (*.f64 -1/12 (pow.f64 im 2)) 1/6)) (+.f64 (*.f64 (-.f64 (*.f64 -1/10080 (pow.f64 im 2)) 1/5040) (pow.f64 re 7)) (*.f64 (+.f64 1/120 (*.f64 1/240 (pow.f64 im 2))) (pow.f64 re 5)))))
(+.f64 (*.f64 re (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))) (+.f64 (*.f64 (pow.f64 re 3) (+.f64 -1/6 (*.f64 (pow.f64 im 2) -1/12))) (+.f64 (*.f64 (pow.f64 re 5) (+.f64 1/120 (*.f64 (pow.f64 im 2) 1/240))) (*.f64 (pow.f64 re 7) (+.f64 -1/5040 (*.f64 (pow.f64 im 2) -1/10080))))))
(+.f64 (*.f64 re (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))) (+.f64 (*.f64 (pow.f64 re 5) (+.f64 1/120 (*.f64 (pow.f64 im 2) 1/240))) (+.f64 (*.f64 (pow.f64 re 3) (+.f64 -1/6 (*.f64 (pow.f64 im 2) -1/12))) (*.f64 (pow.f64 re 7) (+.f64 -1/5040 (*.f64 (pow.f64 im 2) -1/10080))))))
(sin.f64 re)
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (pow.f64 im 2) (sin.f64 re)))
(*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re)))
(+.f64 (*.f64 (sin.f64 re) (pow.f64 im 2)) 0)
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) 0)
(+.f64 0 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (sin.f64 re)) 0)
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))
(*.f64 (*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))) 1)
(*.f64 1 (*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))))
(*.f64 1 (*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2))))
(*.f64 (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)) (sin.f64 re))
(*.f64 (sin.f64 re) (+.f64 1 (*.f64 (pow.f64 im 2) 1/2)))

eval24.0ms (0.5%)

Compiler

Compiled 1243 to 956 computations (23.1% saved)

prune9.0ms (0.2%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New53255
Fresh000
Picked011
Done044
Total53760
Error
0.0b
Counts
60 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.8b
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
60.8b
(*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re)))
32.0b
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)
0.0b
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
0.8b
(*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1))
31.7b
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
1.1b
(sin.f64 re)
Compiler

Compiled 75 to 58 computations (22.7% saved)

localize13.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 31 to 24 computations (22.6% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite8.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
28×bool.json-1
24×rational.json-simplify-2
22×rational.json-simplify-1
20×rational.json-1
20×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01125
15025
27525
38125
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re))))))

simplify8.0ms (0.2%)

Algorithm
egg-herbie
Rules
16×rational.json-simplify-2
14×rational.json-simplify-1
rational.json-simplify-31
rational.json-simplify-33
rational.json-simplify-19
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
017326
124326
229326
335326
439326
Stop Event
saturated
Counts
14 → 11
Calls
Call 1
Inputs
re
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) 0)
(+.f64 0 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re))
Outputs
re
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 1/2 (pow.f64 im 2)))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 1/2 (pow.f64 im 2)))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re) 0)
(+.f64 (*.f64 re (+.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 0)
(+.f64 (+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2)))) 0)
(+.f64 (+.f64 0 re) (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (*.f64 re (*.f64 1/2 (pow.f64 im 2))) (+.f64 re 0))
(+.f64 0 (*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re))
(+.f64 (*.f64 re (+.f64 1 (*.f64 1/2 (pow.f64 im 2)))) 0)
(+.f64 (+.f64 re (*.f64 re (*.f64 1/2 (pow.f64 im 2)))) 0)
(+.f64 (+.f64 0 re) (*.f64 re (*.f64 1/2 (pow.f64 im 2))))
(+.f64 (*.f64 re (*.f64 1/2 (pow.f64 im 2))) (+.f64 re 0))

localize11.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 23 to 14 computations (39.1% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite6.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
38×rational.json-simplify-2
36×bool.json-1
28×rational.json-1
28×rational.json-2
26×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01123
15223
28923
310323
410723
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re))) (*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re))))))))

simplify14.0ms (0.3%)

Algorithm
egg-herbie
Rules
58×rational.json-simplify-2
54×rational.json-simplify-1
30×rational.json-simplify-33
20×rational.json-simplify-31
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039774
171774
2102774
3124774
4130774
5131774
Stop Event
saturated
Counts
26 → 16
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2)))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 7) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2))))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re))) 0)
(+.f64 0 (*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re))))
Outputs
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 re (*.f64 1/2 (pow.f64 im 2)))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 (*.f64 re (*.f64 1/2 (pow.f64 im 2))) (*.f64 -1/12 (*.f64 (pow.f64 im 2) (pow.f64 re 3))))
(+.f64 (*.f64 re (*.f64 1/2 (pow.f64 im 2))) (*.f64 (pow.f64 im 2) (*.f64 -1/12 (pow.f64 re 3))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2)))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 im 2) (pow.f64 re 3))) (+.f64 (*.f64 re (*.f64 1/2 (pow.f64 im 2))) (*.f64 1/240 (*.f64 (pow.f64 im 2) (pow.f64 re 5)))))
(+.f64 (*.f64 re (*.f64 1/2 (pow.f64 im 2))) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/12 (pow.f64 re 3))) (*.f64 (pow.f64 im 2) (*.f64 1/240 (pow.f64 re 5)))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 7) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2))))))
(+.f64 (+.f64 (*.f64 -1/12 (*.f64 (pow.f64 im 2) (pow.f64 re 3))) (*.f64 1/240 (*.f64 (pow.f64 im 2) (pow.f64 re 5)))) (+.f64 (*.f64 re (*.f64 1/2 (pow.f64 im 2))) (*.f64 (pow.f64 re 7) (*.f64 -1/10080 (pow.f64 im 2)))))
(+.f64 (+.f64 (*.f64 re (*.f64 1/2 (pow.f64 im 2))) (*.f64 (pow.f64 im 2) (*.f64 -1/10080 (pow.f64 re 7)))) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/12 (pow.f64 re 3))) (*.f64 (pow.f64 im 2) (*.f64 1/240 (pow.f64 re 5)))))
(+.f64 (*.f64 re (*.f64 1/2 (pow.f64 im 2))) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/10080 (pow.f64 re 7))) (+.f64 (*.f64 (pow.f64 im 2) (*.f64 -1/12 (pow.f64 re 3))) (*.f64 (pow.f64 im 2) (*.f64 1/240 (pow.f64 re 5))))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(+.f64 (*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re))) 0)
(+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) 0)
(+.f64 0 (*.f64 (pow.f64 im 2) (*.f64 1/2 (sin.f64 re))))
(+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) 0)

eval9.0ms (0.2%)

Compiler

Compiled 455 to 348 computations (23.5% saved)

prune7.0ms (0.1%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New28129
Fresh000
Picked101
Done066
Total29736
Error
0.0b
Counts
36 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.8b
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
32.0b
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)
0.0b
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
0.8b
(*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1))
31.7b
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
1.1b
(sin.f64 re)
32.2b
re
Compiler

Compiled 68 to 52 computations (23.5% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune3.0ms (0.1%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done066
Total077
Error
0.0b
Counts
7 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.8b
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
32.0b
(*.f64 (+.f64 1 (*.f64 1/2 (pow.f64 im 2))) re)
0.0b
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
0.8b
(*.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (pow.f64 im 2)) 1))
31.7b
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
1.1b
(sin.f64 re)
32.2b
re
Compiler

Compiled 68 to 52 computations (23.5% saved)

regimes40.0ms (0.8%)

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

6 calls:

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

Compiled 115 to 76 computations (33.9% saved)

regimes23.0ms (0.5%)

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

4 calls:

8.0ms
(*.f64 1/2 (sin.f64 re))
5.0ms
(sin.f64 re)
5.0ms
re
4.0ms
im
Results
ErrorSegmentsBranch
0.8b1re
0.8b1im
0.8b1(*.f64 1/2 (sin.f64 re))
0.8b1(sin.f64 re)
Compiler

Compiled 58 to 41 computations (29.3% saved)

regimes32.0ms (0.7%)

Accuracy

Total -60.3b remaining (-5434.1%)

Threshold costs -60.3b (-5434.1%)

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

4 calls:

17.0ms
(sin.f64 re)
5.0ms
re
4.0ms
(*.f64 1/2 (sin.f64 re))
4.0ms
im
Results
ErrorSegmentsBranch
1.1b1re
1.1b1im
1.1b1(*.f64 1/2 (sin.f64 re))
1.1b1(sin.f64 re)
Compiler

Compiled 48 to 34 computations (29.2% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 32 to 25 computations (21.9% saved)

soundness6.0ms (0.1%)

Algorithm
egg-herbie
Rules
20×rational.json-simplify-2
rational.json-simplify-31
rational.json-simplify-1
rational.json-simplify-9
rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01435
12135
23135
34135
44635
54935
65235
Stop Event
saturated
Compiler

Compiled 25 to 17 computations (32% saved)

end26.0ms (0.5%)

Compiler

Compiled 26 to 17 computations (34.6% saved)

Profiling

Loading profile data...