Details

Time bar (total: 18.0s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%49.6%50.4%0%0%0%0
100%49.6%0%50.4%0%0%0%1
Compiler

Compiled 12 to 9 computations (25% saved)

sample14.7s (81.3%)

Results
9.5s4389×body2048valid
3.6s2128×body1024valid
851.0ms1029×body512valid
732.0ms710×body256valid
Bogosity

preprocess503.0ms (2.8%)

Algorithm
egg-herbie
Rules
2608×rational.json-simplify-42
2160×rational.json-simplify-35
2126×rational.json-simplify-45
1730×rational.json-simplify-1
1080×rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
1911
21611
32611
44911
59011
620511
748011
8112311
9265111
10357111
11416411
12471411
13502211
14514211
15526311
16557311
17570211
18581811
19594511
20605911
21617311
22628711
23628711
24628711
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(-.f64 1 (cos.f64 x))
Outputs
(-.f64 1 (cos.f64 x))
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify506.0ms (2.8%)

Algorithm
egg-herbie
Rules
2608×rational.json-simplify-42
2160×rational.json-simplify-35
2126×rational.json-simplify-45
1730×rational.json-simplify-1
1080×rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
1911
21611
32611
44911
59011
620511
748011
8112311
9265111
10357111
11416411
12471411
13502211
14514211
15526311
16557311
17570211
18581811
19594511
20605911
21617311
22628711
23628711
24628711
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(-.f64 1 (cos.f64 x))
Outputs
(-.f64 1 (cos.f64 x))

eval0.0ms (0%)

Compiler

Compiled 5 to 4 computations (20% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
30.0b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
30.0b
(-.f64 1 (cos.f64 x))
Compiler

Compiled 5 to 4 computations (20% saved)

localize4.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
3.6b
(-.f64 1 (cos.f64 x))
Compiler

Compiled 9 to 5 computations (44.4% saved)

series1.0ms (0%)

Counts
1 → 4
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(-.f64 1 (cos.f64 x))
0.0ms
x
@inf
(-.f64 1 (cos.f64 x))
0.0ms
x
@-inf
(-.f64 1 (cos.f64 x))

rewrite121.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1824×rational.json-simplify-35
1462×rational.json-1
1462×rational.json-2
1462×rational.json-4
1462×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
15511
213411
326811
451611
5113011
6257111
7442011
8546211
9726611
Stop Event
node limit
Counts
1 → 44
Calls
Call 1
Inputs
(-.f64 1 (cos.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (cos.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (neg.f64 (+.f64 (cos.f64 x) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 1 (+.f64 (cos.f64 x) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (+.f64 (cos.f64 x) -2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 (cos.f64 x)) 1/2) (*.f64 (-.f64 1 (cos.f64 x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 -1 (/.f64 (+.f64 (cos.f64 x) -1) 2)) (-.f64 1 (/.f64 (+.f64 (cos.f64 x) -1) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 -1 (/.f64 (+.f64 (cos.f64 x) -1) 2)) (-.f64 1 (*.f64 (+.f64 (cos.f64 x) -1) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 1 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (+.f64 (cos.f64 x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 1 (cos.f64 x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 (cos.f64 x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cos.f64 x) -1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 (cos.f64 x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (-.f64 1 (cos.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 1 (cos.f64 x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 (cos.f64 x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (cos.f64 x) -1) 2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 (cos.f64 x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (cos.f64 x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (cos.f64 x) -1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (cos.f64 x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (cos.f64 x) -1)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (cos.f64 x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (+.f64 (cos.f64 x) -1)) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (+.f64 (cos.f64 x) -1))) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 4 (+.f64 (cos.f64 x) -1)))) -16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (+.f64 (cos.f64 x) -1))))) -32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 1 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (+.f64 (cos.f64 x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (+.f64 1 (+.f64 (cos.f64 x) -2)))))))

simplify289.0ms (1.6%)

Algorithm
egg-herbie
Rules
2406×rational.json-simplify-35
1392×rational.json-simplify-1
1318×rational.json-simplify-2
912×rational.json-simplify-45
594×rational.json-simplify-26
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0113684
1251684
2528684
31356684
42976684
53964684
64675684
75359684
86260684
96576684
106864684
117168684
127479684
137842684
147992684
Stop Event
node limit
Counts
48 → 56
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 1/720 (pow.f64 x 6))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/720 (pow.f64 x 6)) (*.f64 -1/40320 (pow.f64 x 8)))))
(+.f64 (-.f64 1 (cos.f64 x)) 0)
(+.f64 0 (-.f64 1 (cos.f64 x)))
(+.f64 -1 (neg.f64 (+.f64 (cos.f64 x) -2)))
(+.f64 -1 (-.f64 1 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2))))
(+.f64 -2 (-.f64 1 (+.f64 (cos.f64 x) -2)))
(+.f64 (neg.f64 (+.f64 (cos.f64 x) -2)) -1)
(+.f64 (*.f64 (-.f64 1 (cos.f64 x)) 1/2) (*.f64 (-.f64 1 (cos.f64 x)) 1/2))
(+.f64 (-.f64 -1 (/.f64 (+.f64 (cos.f64 x) -1) 2)) (-.f64 1 (/.f64 (+.f64 (cos.f64 x) -1) 2)))
(+.f64 (-.f64 -1 (/.f64 (+.f64 (cos.f64 x) -1) 2)) (-.f64 1 (*.f64 (+.f64 (cos.f64 x) -1) 1/2)))
(*.f64 1 (-.f64 1 (cos.f64 x)))
(*.f64 (-.f64 1 (cos.f64 x)) 1)
(*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 1/2))
(*.f64 -1 (+.f64 (cos.f64 x) -1))
(*.f64 -1 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)))
(*.f64 4 (/.f64 (-.f64 1 (cos.f64 x)) 4))
(*.f64 (*.f64 (-.f64 1 (cos.f64 x)) 2) 1/2)
(*.f64 (+.f64 (cos.f64 x) -1) -1)
(*.f64 (*.f64 (-.f64 1 (cos.f64 x)) 4) 1/4)
(*.f64 1/2 (*.f64 (-.f64 1 (cos.f64 x)) 2))
(*.f64 1/4 (*.f64 (-.f64 1 (cos.f64 x)) 4))
(*.f64 (*.f64 (-.f64 1 (cos.f64 x)) 1/2) 2)
(*.f64 (/.f64 (+.f64 (cos.f64 x) -1) 2) -2)
(*.f64 (/.f64 (-.f64 1 (cos.f64 x)) 4) 4)
(*.f64 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)) -1)
(/.f64 (-.f64 1 (cos.f64 x)) 1)
(/.f64 (*.f64 (-.f64 1 (cos.f64 x)) 2) 2)
(/.f64 (+.f64 (cos.f64 x) -1) -1)
(/.f64 (*.f64 (-.f64 1 (cos.f64 x)) 4) 4)
(/.f64 (*.f64 2 (+.f64 (cos.f64 x) -1)) -2)
(/.f64 (*.f64 (-.f64 1 (cos.f64 x)) 8) 8)
(/.f64 (*.f64 4 (+.f64 (cos.f64 x) -1)) -4)
(/.f64 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 4 (+.f64 (cos.f64 x) -1))) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8))) 32)
(/.f64 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)) -1)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (+.f64 (cos.f64 x) -1)))) -16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (+.f64 (cos.f64 x) -1))))) -32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8)))))) 256)
(pow.f64 (-.f64 1 (cos.f64 x)) 1)
(neg.f64 (+.f64 (cos.f64 x) -1))
(neg.f64 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)))
(neg.f64 (+.f64 1 (+.f64 (cos.f64 x) -2)))
Outputs
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 1/720 (pow.f64 x 6))))
(+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/720 (pow.f64 x 6))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/720 (pow.f64 x 6)) (*.f64 -1/40320 (pow.f64 x 8)))))
(+.f64 (*.f64 -1/24 (pow.f64 x 4)) (+.f64 (+.f64 (*.f64 1/720 (pow.f64 x 6)) (*.f64 -1/40320 (pow.f64 x 8))) (*.f64 1/2 (pow.f64 x 2))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/40320 (pow.f64 x 8)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 1/720 (pow.f64 x 6)))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/720 (pow.f64 x 6)) (+.f64 (*.f64 -1/24 (pow.f64 x 4)) (*.f64 -1/40320 (pow.f64 x 8)))))
(+.f64 (-.f64 1 (cos.f64 x)) 0)
(-.f64 1 (cos.f64 x))
(+.f64 0 (-.f64 1 (cos.f64 x)))
(-.f64 1 (cos.f64 x))
(+.f64 -1 (neg.f64 (+.f64 (cos.f64 x) -2)))
(-.f64 1 (cos.f64 x))
(+.f64 -1 (-.f64 1 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2))))
(-.f64 1 (cos.f64 x))
(+.f64 -2 (-.f64 1 (+.f64 (cos.f64 x) -2)))
(-.f64 1 (cos.f64 x))
(+.f64 (neg.f64 (+.f64 (cos.f64 x) -2)) -1)
(-.f64 1 (cos.f64 x))
(+.f64 (*.f64 (-.f64 1 (cos.f64 x)) 1/2) (*.f64 (-.f64 1 (cos.f64 x)) 1/2))
(-.f64 1 (cos.f64 x))
(+.f64 (-.f64 -1 (/.f64 (+.f64 (cos.f64 x) -1) 2)) (-.f64 1 (/.f64 (+.f64 (cos.f64 x) -1) 2)))
(-.f64 1 (cos.f64 x))
(+.f64 (-.f64 -1 (/.f64 (+.f64 (cos.f64 x) -1) 2)) (-.f64 1 (*.f64 (+.f64 (cos.f64 x) -1) 1/2)))
(+.f64 (-.f64 -1 (/.f64 (+.f64 (cos.f64 x) -1) 2)) (-.f64 1 (*.f64 1/2 (+.f64 (cos.f64 x) -1))))
(+.f64 (+.f64 -1 (*.f64 (+.f64 (cos.f64 x) -1) -1/2)) (-.f64 1 (*.f64 1/2 (+.f64 (cos.f64 x) -1))))
(+.f64 (+.f64 -1 (*.f64 1/2 (-.f64 1 (cos.f64 x)))) (-.f64 1 (*.f64 1/2 (+.f64 (cos.f64 x) -1))))
(*.f64 1 (-.f64 1 (cos.f64 x)))
(-.f64 1 (cos.f64 x))
(*.f64 (-.f64 1 (cos.f64 x)) 1)
(-.f64 1 (cos.f64 x))
(*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 1/2))
(-.f64 1 (cos.f64 x))
(*.f64 -1 (+.f64 (cos.f64 x) -1))
(-.f64 1 (cos.f64 x))
(*.f64 -1 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)))
(-.f64 1 (cos.f64 x))
(*.f64 4 (/.f64 (-.f64 1 (cos.f64 x)) 4))
(-.f64 1 (cos.f64 x))
(*.f64 (*.f64 (-.f64 1 (cos.f64 x)) 2) 1/2)
(-.f64 1 (cos.f64 x))
(*.f64 (+.f64 (cos.f64 x) -1) -1)
(-.f64 1 (cos.f64 x))
(*.f64 (*.f64 (-.f64 1 (cos.f64 x)) 4) 1/4)
(-.f64 1 (cos.f64 x))
(*.f64 1/2 (*.f64 (-.f64 1 (cos.f64 x)) 2))
(-.f64 1 (cos.f64 x))
(*.f64 1/4 (*.f64 (-.f64 1 (cos.f64 x)) 4))
(-.f64 1 (cos.f64 x))
(*.f64 (*.f64 (-.f64 1 (cos.f64 x)) 1/2) 2)
(-.f64 1 (cos.f64 x))
(*.f64 (/.f64 (+.f64 (cos.f64 x) -1) 2) -2)
(-.f64 1 (cos.f64 x))
(*.f64 (/.f64 (-.f64 1 (cos.f64 x)) 4) 4)
(-.f64 1 (cos.f64 x))
(*.f64 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)) -1)
(-.f64 1 (cos.f64 x))
(/.f64 (-.f64 1 (cos.f64 x)) 1)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 (-.f64 1 (cos.f64 x)) 2) 2)
(-.f64 1 (cos.f64 x))
(/.f64 (+.f64 (cos.f64 x) -1) -1)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 (-.f64 1 (cos.f64 x)) 4) 4)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 2 (+.f64 (cos.f64 x) -1)) -2)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 (-.f64 1 (cos.f64 x)) 8) 8)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 4 (+.f64 (cos.f64 x) -1)) -4)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8)) 16)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 2 (*.f64 4 (+.f64 (cos.f64 x) -1))) -8)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8))) 32)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)) -1)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (+.f64 (cos.f64 x) -1)))) -16)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8)))) 64)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 4 (+.f64 (cos.f64 x) -1))))) -32)
(-.f64 1 (cos.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8))))) 128)
(-.f64 1 (cos.f64 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (cos.f64 x)) 8)))))) 256)
(-.f64 1 (cos.f64 x))
(pow.f64 (-.f64 1 (cos.f64 x)) 1)
(-.f64 1 (cos.f64 x))
(neg.f64 (+.f64 (cos.f64 x) -1))
(-.f64 1 (cos.f64 x))
(neg.f64 (*.f64 2 (/.f64 (+.f64 (cos.f64 x) -1) 2)))
(-.f64 1 (cos.f64 x))
(neg.f64 (+.f64 1 (+.f64 (cos.f64 x) -2)))
(-.f64 1 (cos.f64 x))

eval35.0ms (0.2%)

Compiler

Compiled 615 to 481 computations (21.8% saved)

prune7.0ms (0%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New54256
Fresh000
Picked011
Done000
Total54357
Error
0.0b
Counts
57 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
30.0b
(-.f64 1 (cos.f64 x))
0.0b
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
0.1b
(*.f64 1/2 (pow.f64 x 2))
Compiler

Compiled 23 to 19 computations (17.4% saved)

localize6.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 9 computations (25% saved)

series1.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite352.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
3096×rational.json-simplify-35
2050×rational.json-simplify-51
1862×rational.json-simplify-2
994×exponential.json-3
994×rational.json-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14513
29513
317913
430313
564213
6147113
7240813
8288913
9345513
10418013
11486013
12524313
13524313
14556713
15602613
16676013
17725113
18730513
19730513
Stop Event
node limit
Counts
1 → 18
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 x 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (pow.f64 x 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/2 (pow.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 (pow.f64 x 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/2 (pow.f64 x 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 x 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/2 (pow.f64 x 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (pow.f64 x 2)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 4) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 8) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 16) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 32) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 64) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 128) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 128)) 512)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (pow.f64 x 2) 128) 4) 1024)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (pow.f64 x 2) 128) 4)) 2048)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (*.f64 (pow.f64 x 2) 128) 4) 4) 4096)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/2 (pow.f64 x 2)) 1)))))

simplify351.0ms (1.9%)

Algorithm
egg-herbie
Rules
4530×rational.json-simplify-51
1996×rational.json-simplify-35
1036×rational.json-simplify-2
1012×rational.json-simplify-1
982×exponential.json-simplify-26
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
051234
1135234
2255234
3635234
41674234
52849234
63400234
73527234
83613234
93678234
103742234
113806234
123870234
133934234
143998234
154062234
164126234
174190234
184254234
194318234
207896234
Stop Event
node limit
Counts
18 → 19
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 (pow.f64 x 2)) 0)
(+.f64 0 (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 (pow.f64 x 2) 1/4))
(-.f64 (*.f64 1/2 (pow.f64 x 2)) 0)
(/.f64 (pow.f64 x 2) 2)
(/.f64 (*.f64 1/2 (pow.f64 x 2)) 1)
(/.f64 (*.f64 2 (pow.f64 x 2)) 4)
(/.f64 (*.f64 (pow.f64 x 2) 4) 8)
(/.f64 (*.f64 (pow.f64 x 2) 8) 16)
(/.f64 (*.f64 (pow.f64 x 2) 16) 32)
(/.f64 (*.f64 (pow.f64 x 2) 32) 64)
(/.f64 (*.f64 (pow.f64 x 2) 64) 128)
(/.f64 (*.f64 (pow.f64 x 2) 128) 256)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 128)) 512)
(/.f64 (*.f64 (*.f64 (pow.f64 x 2) 128) 4) 1024)
(/.f64 (*.f64 2 (*.f64 (*.f64 (pow.f64 x 2) 128) 4)) 2048)
(/.f64 (*.f64 (*.f64 (*.f64 (pow.f64 x 2) 128) 4) 4) 4096)
(pow.f64 (*.f64 1/2 (pow.f64 x 2)) 1)
Outputs
(+.f64 (*.f64 1/2 (pow.f64 x 2)) 0)
(*.f64 1/2 (pow.f64 x 2))
(+.f64 0 (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 (pow.f64 x 2) 1/4))
(*.f64 1/2 (pow.f64 x 2))
(-.f64 (*.f64 1/2 (pow.f64 x 2)) 0)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (pow.f64 x 2) 2)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 1/2 (pow.f64 x 2)) 1)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 2 (pow.f64 x 2)) 4)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 4) 8)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 8) 16)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 16) 32)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 32) 64)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 64) 128)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 128) 256)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 128)) 512)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 (*.f64 (pow.f64 x 2) 128) 4) 1024)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 (*.f64 (pow.f64 x 2) 128) 4)) 2048)
(*.f64 1/2 (pow.f64 x 2))
(/.f64 (*.f64 (*.f64 (*.f64 (pow.f64 x 2) 128) 4) 4) 4096)
(*.f64 1/2 (pow.f64 x 2))
(pow.f64 (*.f64 1/2 (pow.f64 x 2)) 1)
(*.f64 1/2 (pow.f64 x 2))

localize13.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 1/2 (pow.f64 x 2))
0.1b
(*.f64 -1/24 (pow.f64 x 4))
Compiler

Compiled 33 to 26 computations (21.2% saved)

series1.0ms (0%)

Counts
1 → 0
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(*.f64 -1/24 (pow.f64 x 4))
0.0ms
x
@0
(*.f64 -1/24 (pow.f64 x 4))
0.0ms
x
@-inf
(*.f64 -1/24 (pow.f64 x 4))

rewrite882.0ms (4.9%)

Algorithm
batch-egg-rewrite
Rules
3716×rational.json-simplify-35
1760×rational.json-simplify-2
1186×rational.json-1
1186×rational.json-2
1052×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14513
29613
318513
431613
567713
6162513
7273413
8331013
9395213
10471713
11519113
12519113
13563713
14563713
15613113
16696113
17793013
Stop Event
node limit
Counts
1 → 18
Calls
Call 1
Inputs
(*.f64 -1/24 (pow.f64 x 4))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 -1/24 (pow.f64 x 4)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 4) -1/48) (*.f64 (pow.f64 x 4) -1/48))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 -1/24 (pow.f64 x 4)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1/24 (pow.f64 x 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 4) -1/12) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 4) -1/6) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 4) -1/3) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))))))) 1024)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))))))) 2048)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))))))))) 4096)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -1/24 (pow.f64 x 4)) 1)))))

simplify218.0ms (1.2%)

Algorithm
egg-herbie
Rules
3666×rational.json-simplify-43
2610×rational.json-simplify-51
2092×rational.json-simplify-35
1144×rational.json-simplify-1
1020×rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
055234
1143234
2250234
3627234
41547234
52697234
63525234
73762234
83919234
94044234
104158234
114271234
124391234
134503234
144503234
Stop Event
node limit
Counts
18 → 19
Calls
Call 1
Inputs
(+.f64 (*.f64 -1/24 (pow.f64 x 4)) 0)
(+.f64 0 (*.f64 -1/24 (pow.f64 x 4)))
(+.f64 (*.f64 (pow.f64 x 4) -1/48) (*.f64 (pow.f64 x 4) -1/48))
(-.f64 (*.f64 -1/24 (pow.f64 x 4)) 0)
(/.f64 (*.f64 -1/24 (pow.f64 x 4)) 1)
(/.f64 (*.f64 (pow.f64 x 4) -1/12) 2)
(/.f64 (*.f64 (pow.f64 x 4) -1/6) 4)
(/.f64 (*.f64 (pow.f64 x 4) -1/3) 8)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))))) 256)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))))) 512)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))))))) 1024)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))))))) 2048)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))))))))) 4096)
(pow.f64 (*.f64 -1/24 (pow.f64 x 4)) 1)
Outputs
(+.f64 (*.f64 -1/24 (pow.f64 x 4)) 0)
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 0 (*.f64 -1/24 (pow.f64 x 4)))
(*.f64 -1/24 (pow.f64 x 4))
(+.f64 (*.f64 (pow.f64 x 4) -1/48) (*.f64 (pow.f64 x 4) -1/48))
(*.f64 -1/24 (pow.f64 x 4))
(-.f64 (*.f64 -1/24 (pow.f64 x 4)) 0)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 -1/24 (pow.f64 x 4)) 1)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 (pow.f64 x 4) -1/12) 2)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 (pow.f64 x 4) -1/6) 4)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 (pow.f64 x 4) -1/3) 8)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)) 16)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))) 32)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))) 64)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))) 128)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))))) 256)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))))) 512)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))))))) 1024)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))))))) 2048)
(*.f64 -1/24 (pow.f64 x 4))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3))))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 4) -1/3)))))))))) 4096)
(*.f64 -1/24 (pow.f64 x 4))
(pow.f64 (*.f64 -1/24 (pow.f64 x 4)) 1)
(*.f64 -1/24 (pow.f64 x 4))

eval18.0ms (0.1%)

Compiler

Compiled 764 to 665 computations (13% saved)

prune7.0ms (0%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New57057
Fresh000
Picked011
Done022
Total57360
Error
0.0b
Counts
60 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
30.0b
(-.f64 1 (cos.f64 x))
0.0b
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
0.1b
(*.f64 1/2 (pow.f64 x 2))
Compiler

Compiled 23 to 19 computations (17.4% saved)

regimes8.0ms (0%)

Counts
3 → 1
Calls
Call 1
Inputs
(-.f64 1 (cos.f64 x))
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
Outputs
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
Calls

3 calls:

3.0ms
x
2.0ms
(cos.f64 x)
2.0ms
(-.f64 1 (cos.f64 x))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(-.f64 1 (cos.f64 x))
0.0b1(cos.f64 x)
Compiler

Compiled 31 to 24 computations (22.6% saved)

regimes12.0ms (0.1%)

Accuracy

Total -30.0b remaining (-38277.8%)

Threshold costs -30.0b (-38277.8%)

Counts
2 → 1
Calls
Call 1
Inputs
(-.f64 1 (cos.f64 x))
(*.f64 1/2 (pow.f64 x 2))
Outputs
(*.f64 1/2 (pow.f64 x 2))
Calls

3 calls:

6.0ms
(cos.f64 x)
3.0ms
x
2.0ms
(-.f64 1 (cos.f64 x))
Results
ErrorSegmentsBranch
0.1b1x
0.1b1(-.f64 1 (cos.f64 x))
0.1b1(cos.f64 x)
Compiler

Compiled 20 to 15 computations (25% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01655
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(*.f64 1/2 (pow.f64 x 2))
(-.f64 1 (cos.f64 x))
Outputs
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 4)))
(*.f64 1/2 (pow.f64 x 2))
(-.f64 1 (cos.f64 x))
Compiler

Compiled 23 to 19 computations (17.4% saved)

soundness0.0ms (0%)

end28.0ms (0.2%)

Compiler

Compiled 21 to 17 computations (19% saved)

Profiling

Loading profile data...