Details

Time bar (total: 8.3s)

analyze2.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%74.6%25.4%0%0%0%0
0%0%74.6%25.4%0%0%0%1
50%37.3%37.3%25.4%0%0%0%2
66.7%37.3%18.7%25.4%18.7%0%0%3
83.3%46.7%9.3%25.4%18.7%0%0%4
90.9%46.7%4.7%25.4%23.3%0%0%5
95.5%49%2.3%25.4%23.3%0%0%6
97.7%49%1.2%25.4%24.5%0%0%7
98.8%49.6%0.6%25.4%24.5%0%0%8
99.4%49.9%0.3%25.4%24.5%0%0%9
99.7%49.9%0.1%25.4%24.6%0%0%10
99.9%49.9%0.1%25.4%24.7%0%0%11
99.9%49.9%0%25.4%24.7%0%0%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample2.1s (25.2%)

Results
1.2s4127×body1024valid
534.0ms2033×body512valid
207.0ms386×body2048valid
136.0ms1710×body256valid
0.0msbody256infinite
Bogosity

preprocess3.0ms (0%)

Algorithm
egg-herbie
Rules
rational.json-simplify-16
rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
1911
21011
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(-.f64 (exp.f64 x) 1)
Outputs
(-.f64 (exp.f64 x) 1)
(+.f64 (exp.f64 x) -1)
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
rational.json-simplify-16
rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
1911
21011
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(-.f64 (exp.f64 x) 1)
Outputs
(-.f64 (exp.f64 x) 1)
(+.f64 (exp.f64 x) -1)

eval0.0ms (0%)

Compiler

Compiled 9 to 6 computations (33.3% saved)

prune3.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
58.3b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
58.3b
(-.f64 (exp.f64 x) 1)
Compiler

Compiled 5 to 4 computations (20% saved)

localize4.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
7.6b
(-.f64 (exp.f64 x) 1)
Compiler

Compiled 9 to 5 computations (44.4% saved)

series0.0ms (0%)

Counts
1 → 4
Calls

3 calls:

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

rewrite95.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1684×bool.json-1
1684×bool.json-2
1640×rational.json-1
1640×rational.json-2
1136×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
17711
223911
347611
491311
5194711
6407411
7663511
Stop Event
node limit
Counts
1 → 25
Calls
Call 1
Inputs
(-.f64 (exp.f64 x) 1)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (exp.f64 x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (exp.f64 x) -1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 (exp.f64 x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (exp.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 (exp.f64 x) -1) 1/2) (*.f64 (+.f64 (exp.f64 x) -1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (exp.f64 x) 1/2) (-.f64 (*.f64 (exp.f64 x) 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (exp.f64 x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (exp.f64 x) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (exp.f64 x) -1) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (/.f64 (+.f64 (exp.f64 x) -1) 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 (+.f64 (exp.f64 x) -1) 1/2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (exp.f64 x) 2) -2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (exp.f64 x) -1) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (exp.f64 x) 2) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (exp.f64 x) -1) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (exp.f64 x) -1) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (exp.f64 x) -1) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (exp.f64 x) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (exp.f64 x) 2) -2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (exp.f64 x) -1) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (exp.f64 x) -1) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (exp.f64 x) -1) (+.f64 (exp.f64 x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (exp.f64 x) -1) (+.f64 (exp.f64 x) -1))))))

simplify786.0ms (9.5%)

Algorithm
egg-herbie
Rules
4032×rational.json-simplify-51
2700×rational.json-simplify-35
2086×rational.json-simplify-2
1462×rational.json-simplify-49
1124×rational.json-simplify-48
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069387
1133387
2309387
3820387
41418387
52194387
62582387
72667387
82786387
92916387
103467387
113695387
123825387
133928387
143992387
154041387
164084387
174127387
184170387
195199387
205799387
215873387
225924387
235991387
246059387
256146387
266215387
276310387
286373387
296461387
306506387
316542387
326578387
336578387
346614387
356650387
Stop Event
node limit
Counts
29 → 38
Calls
Call 1
Inputs
x
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/24 (pow.f64 x 4)) x)))
(+.f64 (exp.f64 x) -1)
(+.f64 (+.f64 (exp.f64 x) -1) 0)
(+.f64 0 (+.f64 (exp.f64 x) -1))
(+.f64 -1 (exp.f64 x))
(+.f64 (*.f64 (+.f64 (exp.f64 x) -1) 1/2) (*.f64 (+.f64 (exp.f64 x) -1) 1/2))
(+.f64 (*.f64 (exp.f64 x) 1/2) (-.f64 (*.f64 (exp.f64 x) 1/2) 1))
(*.f64 1 (+.f64 (exp.f64 x) -1))
(*.f64 (+.f64 (exp.f64 x) -1) 1)
(*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 1/2))
(*.f64 4 (/.f64 (+.f64 (exp.f64 x) -1) 4))
(*.f64 4 (*.f64 (/.f64 (+.f64 (exp.f64 x) -1) 4) 1))
(*.f64 4 (*.f64 (*.f64 (+.f64 (exp.f64 x) -1) 1/2) 1/2))
(*.f64 (+.f64 (*.f64 (exp.f64 x) 2) -2) 1/2)
(*.f64 (*.f64 (+.f64 (exp.f64 x) -1) 4) 1/4)
(*.f64 1/2 (+.f64 (*.f64 (exp.f64 x) 2) -2))
(*.f64 (*.f64 (+.f64 (exp.f64 x) -1) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (exp.f64 x) -1) 4))
(*.f64 (/.f64 (+.f64 (exp.f64 x) -1) 4) 4)
(/.f64 (+.f64 (exp.f64 x) -1) 1)
(/.f64 (+.f64 (*.f64 (exp.f64 x) 2) -2) 2)
(/.f64 (*.f64 (+.f64 (exp.f64 x) -1) 4) 4)
(/.f64 (*.f64 (+.f64 (exp.f64 x) -1) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8)))) 64)
Outputs
x
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 x (*.f64 1/6 (pow.f64 x 3))))
(+.f64 x (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))))
(+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/24 (pow.f64 x 4)) x)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (+.f64 x (*.f64 1/24 (pow.f64 x 4))) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 x (*.f64 1/24 (pow.f64 x 4)))))
(+.f64 (+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))) (*.f64 1/24 (pow.f64 x 4)))
(+.f64 x (+.f64 (*.f64 1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 x (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/24 (pow.f64 x 4)))))
(+.f64 (exp.f64 x) -1)
(+.f64 (+.f64 (exp.f64 x) -1) 0)
(+.f64 (exp.f64 x) -1)
(+.f64 0 (+.f64 (exp.f64 x) -1))
(+.f64 (exp.f64 x) -1)
(+.f64 -1 (exp.f64 x))
(+.f64 (exp.f64 x) -1)
(+.f64 (*.f64 (+.f64 (exp.f64 x) -1) 1/2) (*.f64 (+.f64 (exp.f64 x) -1) 1/2))
(+.f64 (exp.f64 x) -1)
(+.f64 (*.f64 (exp.f64 x) 1/2) (-.f64 (*.f64 (exp.f64 x) 1/2) 1))
(+.f64 (exp.f64 x) -1)
(*.f64 1 (+.f64 (exp.f64 x) -1))
(+.f64 (exp.f64 x) -1)
(*.f64 (+.f64 (exp.f64 x) -1) 1)
(+.f64 (exp.f64 x) -1)
(*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 1/2))
(+.f64 (exp.f64 x) -1)
(*.f64 4 (/.f64 (+.f64 (exp.f64 x) -1) 4))
(+.f64 (exp.f64 x) -1)
(*.f64 4 (*.f64 (/.f64 (+.f64 (exp.f64 x) -1) 4) 1))
(+.f64 (exp.f64 x) -1)
(*.f64 4 (*.f64 (*.f64 (+.f64 (exp.f64 x) -1) 1/2) 1/2))
(+.f64 (exp.f64 x) -1)
(*.f64 (+.f64 (*.f64 (exp.f64 x) 2) -2) 1/2)
(+.f64 (exp.f64 x) -1)
(*.f64 (*.f64 (+.f64 (exp.f64 x) -1) 4) 1/4)
(+.f64 (exp.f64 x) -1)
(*.f64 1/2 (+.f64 (*.f64 (exp.f64 x) 2) -2))
(+.f64 (exp.f64 x) -1)
(*.f64 (*.f64 (+.f64 (exp.f64 x) -1) 1/2) 2)
(+.f64 (exp.f64 x) -1)
(*.f64 1/4 (*.f64 (+.f64 (exp.f64 x) -1) 4))
(+.f64 (exp.f64 x) -1)
(*.f64 (/.f64 (+.f64 (exp.f64 x) -1) 4) 4)
(+.f64 (exp.f64 x) -1)
(/.f64 (+.f64 (exp.f64 x) -1) 1)
(+.f64 (exp.f64 x) -1)
(/.f64 (+.f64 (*.f64 (exp.f64 x) 2) -2) 2)
(+.f64 (exp.f64 x) -1)
(/.f64 (*.f64 (+.f64 (exp.f64 x) -1) 4) 4)
(+.f64 (exp.f64 x) -1)
(/.f64 (*.f64 (+.f64 (exp.f64 x) -1) 8) 8)
(+.f64 (exp.f64 x) -1)
(/.f64 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8)) 16)
(+.f64 (exp.f64 x) -1)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8))) 32)
(+.f64 (exp.f64 x) -1)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (exp.f64 x) -1) 8)))) 64)
(+.f64 (exp.f64 x) -1)

eval8.0ms (0.1%)

Compiler

Compiled 397 to 301 computations (24.2% saved)

prune7.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New34438
Fresh000
Picked011
Done000
Total34539
Error
0.0b
Counts
39 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
58.3b
(-.f64 (exp.f64 x) 1)
0.7b
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
0.5b
(+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3))))
0.4b
(+.f64 x (+.f64 (*.f64 1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))))
1.5b
x
Compiler

Compiled 49 to 38 computations (22.4% saved)

localize29.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

Compiled 79 to 63 computations (20.3% saved)

series3.0ms (0%)

Counts
4 → 12
Calls

12 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 1/6 (pow.f64 x 3))
0.0ms
x
@inf
(*.f64 1/24 (pow.f64 x 4))
0.0ms
x
@inf
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
0.0ms
x
@0
(*.f64 1/24 (pow.f64 x 4))
0.0ms
x
@-inf
(*.f64 1/6 (pow.f64 x 3))

rewrite92.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1468×bool.json-1
1468×bool.json-2
1404×rational.json-1
1404×rational.json-2
1404×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01670
115370
234770
364470
4129070
5279970
6570070
Stop Event
node limit
Counts
4 → 50
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 3))
(*.f64 1/24 (pow.f64 x 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 1/2 (pow.f64 x 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/6 (pow.f64 x 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/6 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 3) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/6 (pow.f64 x 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/6 (pow.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 1/3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 3) 2/3) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8)) (*.f64 2 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/6 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/6 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/6 (pow.f64 x 3)))))))
((#(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 1/6 (pow.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12))) (*.f64 2 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/24 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/24 (pow.f64 x 4)) (*.f64 1/24 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/24 (pow.f64 x 4)) (*.f64 1/24 (pow.f64 x 4)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 (pow.f64 x 3) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 2) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)))) (*.f64 2 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))))))))
((#(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 4 (pow.f64 x 2)) 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 2 (*.f64 (pow.f64 x 2) 8)) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 1/2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/2 (pow.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/2 (pow.f64 x 2)))))))

simplify627.0ms (7.6%)

Algorithm
egg-herbie
Rules
7694×rational.json-simplify-49
4470×rational.json-simplify-35
1742×rational.json-simplify-2
918×rational.json-simplify-1
776×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01031328
12151328
24461328
311041328
431531328
537121328
639511328
740971328
842311328
943651328
1050491328
1152111328
1252111328
1352111328
1453451328
1554791328
1656131328
1757471328
1858811328
1960151328
2061491328
2162831328
2264171328
2364171328
2465511328
Stop Event
node limit
Counts
62 → 55
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) 0)
(+.f64 0 (*.f64 1/6 (pow.f64 x 3)))
(+.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 3) 1/12))
(-.f64 (*.f64 1/6 (pow.f64 x 3)) 0)
(/.f64 (*.f64 1/6 (pow.f64 x 3)) 1)
(/.f64 (*.f64 (pow.f64 x 3) 1/3) 2)
(/.f64 (*.f64 (pow.f64 x 3) 2/3) 4)
(/.f64 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8)) (*.f64 2 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8))) 32)
(+.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 1/6 (pow.f64 x 4)) 4)
(/.f64 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12)) 8)
(/.f64 (*.f64 2 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12))) (*.f64 2 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12)))) 32)
(-.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) 0)
(*.f64 4 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 8))
(*.f64 1/2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)))
(*.f64 2 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 4))
(*.f64 2 (+.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 (pow.f64 x 3) 1/12)))
(*.f64 2 (+.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 2) 1/4)))
(*.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) 1)
(*.f64 1 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))))
(*.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 1/2)
(*.f64 (*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))) 1/4)
(*.f64 1/4 (*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))))
(*.f64 1/4 (+.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 2 (pow.f64 x 2))))
(*.f64 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 4) 2)
(*.f64 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 8) 4)
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) 1)
(/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 2)
(/.f64 (*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))) 4)
(/.f64 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))) 8)
(/.f64 (*.f64 2 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)))) (*.f64 2 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))))) 32)
(+.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 4 (pow.f64 x 2)) 8)
(/.f64 (*.f64 (pow.f64 x 2) 8) 16)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 8)) 32)
Outputs
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) 0)
(*.f64 1/6 (pow.f64 x 3))
(+.f64 0 (*.f64 1/6 (pow.f64 x 3)))
(*.f64 1/6 (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 3) 1/12))
(*.f64 1/6 (pow.f64 x 3))
(-.f64 (*.f64 1/6 (pow.f64 x 3)) 0)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 1/6 (pow.f64 x 3)) 1)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 (pow.f64 x 3) 1/3) 2)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 (pow.f64 x 3) 2/3) 4)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8) 8)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (*.f64 2 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8)) 16)
(*.f64 1/6 (pow.f64 x 3))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8)) (*.f64 2 (*.f64 (*.f64 1/6 (pow.f64 x 3)) 8))) 32)
(*.f64 1/6 (pow.f64 x 3))
(+.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 1/6 (pow.f64 x 4)) 4)
(*.f64 1/24 (pow.f64 x 4))
(/.f64 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12)) 8)
(*.f64 1/24 (pow.f64 x 4))
(/.f64 (*.f64 2 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12))) 16)
(*.f64 1/24 (pow.f64 x 4))
(/.f64 (+.f64 (*.f64 2 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12))) (*.f64 2 (*.f64 4 (*.f64 (pow.f64 x 4) 1/12)))) 32)
(*.f64 1/24 (pow.f64 x 4))
(-.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) 0)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 4 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 8))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 1/2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 2 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 4))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 2 (+.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 (pow.f64 x 3) 1/12)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 2 (+.f64 (*.f64 (pow.f64 x 3) 1/12) (*.f64 (pow.f64 x 2) 1/4)))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) 1)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 1 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 1/2)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 (*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))) 1/4)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 1/4 (*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 1/4 (+.f64 (*.f64 (pow.f64 x 3) 2/3) (*.f64 2 (pow.f64 x 2))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 4) 2)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(*.f64 (/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 8) 4)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(/.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (*.f64 1/2 (pow.f64 x 2))) 1)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(/.f64 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) 2)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(/.f64 (*.f64 2 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))) 4)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(/.f64 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))) 8)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(/.f64 (*.f64 2 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)))) 16)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(/.f64 (+.f64 (*.f64 2 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)))) (*.f64 2 (*.f64 4 (+.f64 (pow.f64 x 2) (*.f64 (pow.f64 x 3) 1/3))))) 32)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
(+.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 4 (pow.f64 x 2)) 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 2 (*.f64 (pow.f64 x 2) 8)) 32)
(*.f64 1/2 (pow.f64 x 2))

localize17.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 1/2 (pow.f64 x 2))
0.0b
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))
0.1b
(*.f64 1/6 (pow.f64 x 3))
Compiler

Compiled 46 to 36 computations (21.7% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 19 to 14 computations (26.3% saved)

series0.0ms (0%)

Counts
1 → 3
Calls

3 calls:

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

rewrite722.0ms (8.7%)

Algorithm
batch-egg-rewrite
Rules
1662×bool.json-1
1662×bool.json-2
1612×rational.json-1
1612×rational.json-2
1086×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
17919
220719
341319
482619
5178519
6404619
7672619
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (+.f64 x (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (+.f64 x (*.f64 1/2 (pow.f64 x 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 1/2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 x (*.f64 1/2 (pow.f64 x 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (*.f64 1/2 (pow.f64 x 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (*.f64 1/2 (pow.f64 x 2))) (+.f64 x (*.f64 1/2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (*.f64 1/2 (pow.f64 x 2))) (+.f64 x (*.f64 1/2 (pow.f64 x 2))))))))

simplify801.0ms (9.7%)

Algorithm
egg-herbie
Rules
4850×rational.json-simplify-51
1826×rational.json-simplify-35
1820×rational.json-simplify-49
1228×rational.json-simplify-1
1036×rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
053450
1108450
2215450
3650450
41490450
52864450
63872450
73925450
83961450
93987450
104011450
114035450
124059450
134083450
144107450
154131450
164155450
174179450
184203450
194227450
204251450
214275450
224299450
234323450
244347450
254371450
264395450
274419450
284443450
294467450
304491450
314515450
324539450
334563450
344587450
354611450
364635450
374659450
384683450
394707450
405749450
Stop Event
node limit
Counts
24 → 26
Calls
Call 1
Inputs
x
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(-.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 0)
(*.f64 1/2 (+.f64 x (+.f64 x (pow.f64 x 2))))
(*.f64 2 (*.f64 1/2 (+.f64 x (*.f64 1/2 (pow.f64 x 2)))))
(*.f64 2 (+.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 1/2 x)))
(*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1)
(*.f64 1 (+.f64 x (*.f64 1/2 (pow.f64 x 2))))
(*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1/2)
(*.f64 4 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1/4))
(*.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 1/4)
(*.f64 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8) 1/8)
(*.f64 (*.f64 1/2 (+.f64 x (*.f64 1/2 (pow.f64 x 2)))) 2)
(*.f64 1/4 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))))
(*.f64 1/4 (+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x 4)))
(*.f64 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1/4) 4)
(/.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1)
(/.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 2)
(/.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8)))) 64)
Outputs
x
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(-.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 0)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1/2 (+.f64 x (+.f64 x (pow.f64 x 2))))
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 2 (*.f64 1/2 (+.f64 x (*.f64 1/2 (pow.f64 x 2)))))
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 1/2 x)))
(*.f64 2 (+.f64 (*.f64 (pow.f64 x 2) 1/4) (*.f64 x 1/2)))
(*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1 (+.f64 x (*.f64 1/2 (pow.f64 x 2))))
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1/2)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 4 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1/4))
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 1/4)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8) 1/8)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 (*.f64 1/2 (+.f64 x (*.f64 1/2 (pow.f64 x 2)))) 2)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1/4 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))))
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1/4 (+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 x 4)))
(*.f64 1/4 (+.f64 (*.f64 x 4) (*.f64 2 (pow.f64 x 2))))
(*.f64 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1/4) 4)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(/.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 1)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(/.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 2)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 4)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(/.f64 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8) 8)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8)) 16)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8))) 32)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) 8)))) 64)
(+.f64 x (*.f64 1/2 (pow.f64 x 2)))

eval92.0ms (1.1%)

Compiler

Compiled 2248 to 1809 computations (19.5% saved)

prune467.0ms (5.6%)

Pruning

6 alts after pruning (2 fresh and 4 done)

PrunedKeptTotal
New1341135
Fresh011
Picked011
Done033
Total1346140
Error
0.0b
Counts
140 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.7b
(/.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 2)
58.3b
(-.f64 (exp.f64 x) 1)
0.7b
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
0.5b
(+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3))))
0.4b
(+.f64 x (+.f64 (*.f64 1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))))
1.5b
x
Compiler

Compiled 59 to 45 computations (23.7% saved)

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 x (+.f64 x (pow.f64 x 2)))
Compiler

Compiled 27 to 17 computations (37% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(+.f64 x (+.f64 x (pow.f64 x 2)))
0.0ms
x
@0
(+.f64 x (+.f64 x (pow.f64 x 2)))
0.0ms
x
@inf
(+.f64 x (+.f64 x (pow.f64 x 2)))

rewrite100.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1968×bool.json-1
1968×bool.json-2
1228×rational.json-1
1228×rational.json-2
1228×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
17019
219219
339619
484419
5192019
6451319
7764519
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(+.f64 x (+.f64 x (pow.f64 x 2)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 x (*.f64 (pow.f64 x 2) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (+.f64 x (pow.f64 x 2)) 1/2) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (+.f64 x (pow.f64 x 2)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (+.f64 x (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 (pow.f64 x 2) 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (+.f64 x (pow.f64 x 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (+.f64 x (pow.f64 x 2))) (+.f64 x (+.f64 x (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (+.f64 x (pow.f64 x 2))) (+.f64 x (+.f64 x (pow.f64 x 2))))))))

simplify1.1s (12.9%)

Algorithm
egg-herbie
Rules
5906×rational.json-simplify-51
1980×rational.json-simplify-35
1726×rational.json-simplify-2
1414×rational.json-simplify-1
1044×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057634
1114634
2255634
3763634
41198634
52661634
63551634
73613634
83644634
93670634
103696634
113722634
123772634
133798634
143824634
153850634
163876634
173902634
183928634
194661634
205048634
215080634
225110634
235139634
245168634
255197634
265226634
275255634
285284634
295313634
305342634
315371634
325400634
335429634
345458634
355487634
365516634
375545634
385574634
395603634
405603634
Stop Event
node limit
Counts
34 → 26
Calls
Call 1
Inputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(-.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 0)
(*.f64 2 (+.f64 x (*.f64 (pow.f64 x 2) 1/2)))
(*.f64 2 (+.f64 (*.f64 (+.f64 x (pow.f64 x 2)) 1/2) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (+.f64 x (pow.f64 x 2)) 1/2)))
(*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1)
(*.f64 1 (+.f64 x (+.f64 x (pow.f64 x 2))))
(*.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 1/2)
(*.f64 4 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1/4))
(*.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 4) 1/4)
(*.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8) 1/8)
(*.f64 1/2 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))))
(*.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 2 (pow.f64 x 2))))
(*.f64 (+.f64 x (*.f64 (pow.f64 x 2) 1/2)) 2)
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 4))
(*.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1/4) 4)
(/.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1)
(/.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 2)
(/.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 4) 4)
(/.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8)))) 64)
Outputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(-.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 0)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 2 (+.f64 x (*.f64 (pow.f64 x 2) 1/2)))
(*.f64 2 (+.f64 (*.f64 (+.f64 x (pow.f64 x 2)) 1/2) (*.f64 x 1/2)))
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 (+.f64 x (pow.f64 x 2)) 1/2)))
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 1 (+.f64 x (+.f64 x (pow.f64 x 2))))
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 1/2)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 4 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1/4))
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 4) 1/4)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8) 1/8)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 1/2 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))))
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 1/2 (+.f64 (*.f64 x 4) (*.f64 2 (pow.f64 x 2))))
(*.f64 (+.f64 x (*.f64 (pow.f64 x 2) 1/2)) 2)
(*.f64 2 (+.f64 x (*.f64 (pow.f64 x 2) 1/2)))
(*.f64 1/4 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 4))
(+.f64 x (+.f64 x (pow.f64 x 2)))
(*.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1/4) 4)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(/.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 1)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(/.f64 (*.f64 2 (+.f64 x (+.f64 x (pow.f64 x 2)))) 2)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(/.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 4) 4)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(/.f64 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8) 8)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8)) 16)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8))) 32)
(+.f64 x (+.f64 x (pow.f64 x 2)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 8)))) 64)
(+.f64 x (+.f64 x (pow.f64 x 2)))

eval7.0ms (0.1%)

Compiler

Compiled 331 to 258 computations (22.1% saved)

prune5.0ms (0.1%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New26026
Fresh011
Picked011
Done044
Total26632
Error
0.0b
Counts
32 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.7b
(/.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 2)
58.3b
(-.f64 (exp.f64 x) 1)
0.7b
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
0.5b
(+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3))))
0.4b
(+.f64 x (+.f64 (*.f64 1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))))
1.5b
x
Compiler

Compiled 59 to 45 computations (23.7% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune3.0ms (0%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done055
Total066
Error
0.0b
Counts
6 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.7b
(/.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 2)
58.3b
(-.f64 (exp.f64 x) 1)
0.7b
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
0.5b
(+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3))))
0.4b
(+.f64 x (+.f64 (*.f64 1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))))
1.5b
x
Compiler

Compiled 59 to 45 computations (23.7% saved)

regimes289.0ms (3.5%)

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

3 calls:

280.0ms
(exp.f64 x)
4.0ms
x
2.0ms
(-.f64 (exp.f64 x) 1)
Results
ErrorSegmentsBranch
0.4b1x
0.4b1(-.f64 (exp.f64 x) 1)
0.4b1(exp.f64 x)
Compiler

Compiled 64 to 47 computations (26.6% saved)

regimes9.0ms (0.1%)

Counts
5 → 1
Calls
Call 1
Inputs
x
(-.f64 (exp.f64 x) 1)
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(/.f64 (+.f64 x (+.f64 x (pow.f64 x 2))) 2)
(+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3))))
Outputs
(+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3))))
Calls

3 calls:

4.0ms
x
2.0ms
(-.f64 (exp.f64 x) 1)
2.0ms
(exp.f64 x)
Results
ErrorSegmentsBranch
0.5b1x
0.5b1(-.f64 (exp.f64 x) 1)
0.5b1(exp.f64 x)
Compiler

Compiled 45 to 32 computations (28.9% saved)

regimes10.0ms (0.1%)

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

3 calls:

4.0ms
x
3.0ms
(-.f64 (exp.f64 x) 1)
2.0ms
(exp.f64 x)
Results
ErrorSegmentsBranch
0.7b1x
0.7b1(-.f64 (exp.f64 x) 1)
0.7b1(exp.f64 x)
Compiler

Compiled 32 to 22 computations (31.3% saved)

regimes7.0ms (0.1%)

Accuracy

Total -57.6b remaining (-3856.6%)

Threshold costs -57.6b (-3856.6%)

Counts
2 → 1
Calls
Call 1
Inputs
x
(-.f64 (exp.f64 x) 1)
Outputs
x
Calls

3 calls:

3.0ms
x
2.0ms
(-.f64 (exp.f64 x) 1)
2.0ms
(exp.f64 x)
Results
ErrorSegmentsBranch
1.5b1x
1.5b1(-.f64 (exp.f64 x) 1)
1.5b1(exp.f64 x)
Compiler

Compiled 16 to 11 computations (31.3% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
020112
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 x (+.f64 (*.f64 1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))))
(+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
x
Outputs
(+.f64 x (+.f64 (*.f64 1/24 (pow.f64 x 4)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))))
(+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
x
Compiler

Compiled 44 to 34 computations (22.7% saved)

soundness873.0ms (10.5%)

Algorithm
egg-herbie
Rules
4032×rational.json-simplify-51
2700×rational.json-simplify-35
2086×rational.json-simplify-2
1462×rational.json-simplify-49
1124×rational.json-simplify-48
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069387
1133387
2309387
3820387
41418387
52194387
62582387
72667387
82786387
92916387
103467387
113695387
123825387
133928387
143992387
154041387
164084387
174127387
184170387
195199387
205799387
215873387
225924387
235991387
246059387
256146387
266215387
276310387
286373387
296461387
306506387
316542387
326578387
336578387
346614387
356650387
Stop Event
node limit
Compiler

Compiled 115 to 91 computations (20.9% saved)

end37.0ms (0.4%)

Compiler

Compiled 41 to 31 computations (24.4% saved)

Profiling

Loading profile data...