Details

Time bar (total: 3.6s)

analyze3.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
50%50%50%0%0%0%0%3
66.7%50%25%0%25%0%0%4
83.3%62.5%12.5%0%25%0%0%5
91.7%68.7%6.2%0%25%0%0%6
95.8%71.8%3.1%0%25%0%0%7
97.9%73.4%1.6%0%25%0%0%8
99%74.2%0.8%0%25%0%0%9
99.5%74.6%0.4%0%25%0%0%10
99.7%74.8%0.2%0%25%0%0%11
99.9%74.9%0.1%0%25%0%0%12
Compiler

Compiled 7 to 5 computations (28.6% saved)

sample1.5s (40.1%)

Results
1.4s8256×body256valid
0.0msbody256infinite
Bogosity

preprocess5.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
1913
21013
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(*.f64 x (-.f64 x 1))
Outputs
(*.f64 x (-.f64 x 1))
(*.f64 x (+.f64 x -1))
Compiler

Compiled 7 to 5 computations (28.6% saved)

simplify9.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
1913
21013
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 x (-.f64 x 1))
Outputs
(*.f64 x (-.f64 x 1))
(*.f64 x (+.f64 x -1))

eval1.0ms (0%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 6 to 4 computations (33.3% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 x (-.f64 x 1))
Compiler

Compiled 11 to 7 computations (36.4% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite213.0ms (5.8%)

Algorithm
batch-egg-rewrite
Rules
1488×rational.json-simplify-53
1358×rational.json-simplify-35
1320×exponential.json-3
1320×rational.json-1
1320×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
15113
212513
322113
440413
585513
6216713
7379413
8493513
9637613
10715713
11715713
12763013
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 x (-.f64 x 1))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 x -1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (+.f64 x -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (+.f64 x -1) 1/2)) (*.f64 x (*.f64 (+.f64 x -1) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 x -1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 x -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 (+.f64 x x) -2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -1) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (+.f64 x -1) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 x (+.f64 x -1))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 x (+.f64 (+.f64 x x) -2))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 (+.f64 x -1) (*.f64 x 4))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 16 (*.f64 (+.f64 x -1) (*.f64 x 4)))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (+.f64 x -1) (*.f64 x 4))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 x -1)) 1)))))

simplify299.0ms (8.2%)

Algorithm
egg-herbie
Rules
2362×rational.json-simplify-2
2294×rational.json-simplify-35
1456×exponential.json-simplify-26
1152×rational.json-simplify-53
1042×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
049374
1133354
2272354
3629354
42300354
54153354
65169354
75736354
85903354
96009354
106936354
117616354
127624354
137934354
Stop Event
node limit
Counts
26 → 20
Calls
Call 1
Inputs
(*.f64 -1 x)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 x (+.f64 x -1)) 0)
(+.f64 0 (*.f64 x (+.f64 x -1)))
(+.f64 (*.f64 x (*.f64 (+.f64 x -1) 1/2)) (*.f64 x (*.f64 (+.f64 x -1) 1/2)))
(-.f64 (*.f64 x (+.f64 x -1)) 0)
(/.f64 (*.f64 x (+.f64 x -1)) 1)
(/.f64 (*.f64 x (+.f64 (+.f64 x x) -2)) 2)
(/.f64 (*.f64 (+.f64 x -1) (*.f64 x 4)) 4)
(/.f64 (*.f64 x (*.f64 (+.f64 x -1) 8)) 8)
(/.f64 (*.f64 16 (*.f64 x (+.f64 x -1))) 16)
(/.f64 (*.f64 16 (*.f64 x (+.f64 (+.f64 x x) -2))) 32)
(/.f64 (*.f64 16 (*.f64 (+.f64 x -1) (*.f64 x 4))) 64)
(/.f64 (*.f64 2 (*.f64 16 (*.f64 (+.f64 x -1) (*.f64 x 4)))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (+.f64 x -1) (*.f64 x 4))))) 256)
(pow.f64 (*.f64 x (+.f64 x -1)) 1)
Outputs
(*.f64 -1 x)
(neg.f64 x)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (neg.f64 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (neg.f64 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (neg.f64 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (neg.f64 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (neg.f64 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (neg.f64 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (neg.f64 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (neg.f64 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (neg.f64 x) (pow.f64 x 2))
(+.f64 (*.f64 x (+.f64 x -1)) 0)
(*.f64 x (+.f64 -1 x))
(+.f64 0 (*.f64 x (+.f64 x -1)))
(*.f64 x (+.f64 -1 x))
(+.f64 (*.f64 x (*.f64 (+.f64 x -1) 1/2)) (*.f64 x (*.f64 (+.f64 x -1) 1/2)))
(*.f64 x (+.f64 -1 x))
(-.f64 (*.f64 x (+.f64 x -1)) 0)
(*.f64 x (+.f64 -1 x))
(/.f64 (*.f64 x (+.f64 x -1)) 1)
(*.f64 x (+.f64 -1 x))
(/.f64 (*.f64 x (+.f64 (+.f64 x x) -2)) 2)
(*.f64 x (+.f64 -1 x))
(/.f64 (*.f64 (+.f64 x -1) (*.f64 x 4)) 4)
(*.f64 x (+.f64 -1 x))
(/.f64 (*.f64 x (*.f64 (+.f64 x -1) 8)) 8)
(*.f64 x (+.f64 -1 x))
(/.f64 (*.f64 16 (*.f64 x (+.f64 x -1))) 16)
(*.f64 x (+.f64 -1 x))
(/.f64 (*.f64 16 (*.f64 x (+.f64 (+.f64 x x) -2))) 32)
(*.f64 x (+.f64 -1 x))
(/.f64 (*.f64 16 (*.f64 (+.f64 x -1) (*.f64 x 4))) 64)
(*.f64 x (+.f64 -1 x))
(/.f64 (*.f64 2 (*.f64 16 (*.f64 (+.f64 x -1) (*.f64 x 4)))) 128)
(*.f64 x (+.f64 -1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (+.f64 x -1) (*.f64 x 4))))) 256)
(*.f64 x (+.f64 -1 x))
(pow.f64 (*.f64 x (+.f64 x -1)) 1)
(*.f64 x (+.f64 -1 x))

eval5.0ms (0.1%)

Compiler

Compiled 163 to 120 computations (26.4% saved)

prune3.0ms (0.1%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New18220
Fresh000
Picked011
Done000
Total18321
Error
0b
Counts
21 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (neg.f64 x) (pow.f64 x 2))
0.0b
(*.f64 x (-.f64 x 1))
20.7b
(neg.f64 x)
Compiler

Compiled 16 to 11 computations (31.3% saved)

localize2.0ms (0.1%)

Compiler

Compiled 4 to 2 computations (50% saved)

localize8.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 14 to 8 computations (42.9% saved)

series1.0ms (0%)

Counts
2 → 12
Calls

6 calls:

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

rewrite214.0ms (5.9%)

Algorithm
batch-egg-rewrite
Rules
2384×rational.json-simplify-2
1748×rational.json-simplify-35
1276×exponential.json-3
1276×rational.json-1
1276×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0824
15524
212524
325024
450624
5121524
6275524
7425524
8525924
9631024
10710324
11731224
12753224
Stop Event
node limit
Counts
2 → 57
Calls
Call 1
Inputs
(+.f64 (neg.f64 x) (pow.f64 x 2))
(pow.f64 x 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (pow.f64 x 2) (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (neg.f64 x) (pow.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (neg.f64 x) (pow.f64 x 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (+.f64 (neg.f64 x) (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x -2) (*.f64 2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x -2) (*.f64 2 (pow.f64 x 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (neg.f64 x) (pow.f64 x 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 x 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 2) 1/2) (*.f64 (pow.f64 x 2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (pow.f64 x 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (pow.f64 x 2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (pow.f64 x 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (pow.f64 x 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (pow.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 16 (*.f64 (pow.f64 x 2) 1/16))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (pow.f64 x 2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (pow.f64 x 2) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/16 (pow.f64 (*.f64 x 4) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x 4) 2) 1/16)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 1/16) 16)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/64 (pow.f64 (*.f64 x 8) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x 8) 2) 1/64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 x 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (pow.f64 x 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8)))))) 256)))))

simplify955.0ms (26.2%)

Algorithm
egg-herbie
Rules
3738×rational.json-simplify-51
3092×rational.json-simplify-2
2742×rational.json-simplify-49
2584×rational.json-simplify-35
1380×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0112831
1230831
2781831
31477831
42577831
53226831
63322831
73441831
83597831
93734831
103821831
113908831
123959831
134006831
144053831
154100831
164147831
174194831
184241831
194288831
206197831
216276831
226353831
236424831
246499831
256560831
266563831
276563831
287604831
297647831
307690831
317733831
327776831
337819831
Stop Event
node limit
Counts
69 → 62
Calls
Call 1
Inputs
(*.f64 -1 x)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(-.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 0)
(-.f64 (+.f64 (pow.f64 x 2) (-.f64 1 x)) 1)
(*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/2))
(*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1)
(*.f64 1 (+.f64 (neg.f64 x) (pow.f64 x 2)))
(*.f64 (*.f64 2 (+.f64 (neg.f64 x) (pow.f64 x 2))) 1/2)
(*.f64 4 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/4))
(*.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 4) 1/4)
(*.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8) 1/8)
(*.f64 1/2 (*.f64 2 (+.f64 (neg.f64 x) (pow.f64 x 2))))
(*.f64 1/2 (+.f64 (*.f64 x -2) (*.f64 2 (pow.f64 x 2))))
(*.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 4))
(*.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8))
(*.f64 (+.f64 (*.f64 x -2) (*.f64 2 (pow.f64 x 2))) 1/2)
(/.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1)
(/.f64 (*.f64 2 (+.f64 (neg.f64 x) (pow.f64 x 2))) 2)
(/.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 4) 4)
(/.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8)))))) 256)
(pow.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1)
(+.f64 (pow.f64 x 2) 0)
(+.f64 0 (pow.f64 x 2))
(+.f64 (*.f64 (pow.f64 x 2) 1/2) (*.f64 (pow.f64 x 2) 1/2))
(-.f64 (pow.f64 x 2) 0)
(*.f64 2 (*.f64 (pow.f64 x 2) 1/2))
(*.f64 (pow.f64 x 2) 1)
(*.f64 1 (pow.f64 x 2))
(*.f64 (*.f64 2 (pow.f64 x 2)) 1/2)
(*.f64 4 (*.f64 (pow.f64 x 2) 1/4))
(*.f64 (*.f64 (pow.f64 x 2) 4) 1/4)
(*.f64 (*.f64 (pow.f64 x 2) 8) 1/8)
(*.f64 1/2 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (pow.f64 x 2) 1/2) 2)
(*.f64 16 (*.f64 (pow.f64 x 2) 1/16))
(*.f64 1/4 (*.f64 (pow.f64 x 2) 4))
(*.f64 (*.f64 (pow.f64 x 2) 1/4) 4)
(*.f64 1/8 (*.f64 (pow.f64 x 2) 8))
(*.f64 1/16 (pow.f64 (*.f64 x 4) 2))
(*.f64 (pow.f64 (*.f64 x 4) 2) 1/16)
(*.f64 (*.f64 (pow.f64 x 2) 1/16) 16)
(*.f64 1/64 (pow.f64 (*.f64 x 8) 2))
(*.f64 (pow.f64 (*.f64 x 8) 2) 1/64)
(/.f64 (pow.f64 x 2) 1)
(/.f64 (*.f64 2 (pow.f64 x 2)) 2)
(/.f64 (*.f64 (pow.f64 x 2) 4) 4)
(/.f64 (*.f64 (pow.f64 x 2) 8) 8)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8)))))) 256)
Outputs
(*.f64 -1 x)
(neg.f64 x)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(pow.f64 x 2)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(pow.f64 x 2)
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(+.f64 (*.f64 -1 x) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(-.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 0)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(-.f64 (+.f64 (pow.f64 x 2) (-.f64 1 x)) 1)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/2))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 1 (+.f64 (neg.f64 x) (pow.f64 x 2)))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 (*.f64 2 (+.f64 (neg.f64 x) (pow.f64 x 2))) 1/2)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 4 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/4))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 4) 1/4)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8) 1/8)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 1/2 (*.f64 2 (+.f64 (neg.f64 x) (pow.f64 x 2))))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 1/2 (+.f64 (*.f64 x -2) (*.f64 2 (pow.f64 x 2))))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/2) 2)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 1/4 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 4))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1/4) 4)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 1/8 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8))
(+.f64 (pow.f64 x 2) (neg.f64 x))
(*.f64 (+.f64 (*.f64 x -2) (*.f64 2 (pow.f64 x 2))) 1/2)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(/.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(/.f64 (*.f64 2 (+.f64 (neg.f64 x) (pow.f64 x 2))) 2)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(/.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 4) 4)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(/.f64 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8) 8)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8)) 16)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8))) 32)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8)))) 64)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8))))) 128)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 8)))))) 256)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(pow.f64 (+.f64 (neg.f64 x) (pow.f64 x 2)) 1)
(+.f64 (pow.f64 x 2) (neg.f64 x))
(+.f64 (pow.f64 x 2) 0)
(pow.f64 x 2)
(+.f64 0 (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 (pow.f64 x 2) 1/2) (*.f64 (pow.f64 x 2) 1/2))
(pow.f64 x 2)
(-.f64 (pow.f64 x 2) 0)
(pow.f64 x 2)
(*.f64 2 (*.f64 (pow.f64 x 2) 1/2))
(pow.f64 x 2)
(*.f64 (pow.f64 x 2) 1)
(pow.f64 x 2)
(*.f64 1 (pow.f64 x 2))
(pow.f64 x 2)
(*.f64 (*.f64 2 (pow.f64 x 2)) 1/2)
(pow.f64 x 2)
(*.f64 4 (*.f64 (pow.f64 x 2) 1/4))
(pow.f64 x 2)
(*.f64 (*.f64 (pow.f64 x 2) 4) 1/4)
(pow.f64 x 2)
(*.f64 (*.f64 (pow.f64 x 2) 8) 1/8)
(pow.f64 x 2)
(*.f64 1/2 (*.f64 2 (pow.f64 x 2)))
(pow.f64 x 2)
(*.f64 (*.f64 (pow.f64 x 2) 1/2) 2)
(pow.f64 x 2)
(*.f64 16 (*.f64 (pow.f64 x 2) 1/16))
(pow.f64 x 2)
(*.f64 1/4 (*.f64 (pow.f64 x 2) 4))
(pow.f64 x 2)
(*.f64 (*.f64 (pow.f64 x 2) 1/4) 4)
(pow.f64 x 2)
(*.f64 1/8 (*.f64 (pow.f64 x 2) 8))
(pow.f64 x 2)
(*.f64 1/16 (pow.f64 (*.f64 x 4) 2))
(pow.f64 x 2)
(*.f64 (pow.f64 (*.f64 x 4) 2) 1/16)
(pow.f64 x 2)
(*.f64 (*.f64 (pow.f64 x 2) 1/16) 16)
(pow.f64 x 2)
(*.f64 1/64 (pow.f64 (*.f64 x 8) 2))
(pow.f64 x 2)
(*.f64 (pow.f64 (*.f64 x 8) 2) 1/64)
(pow.f64 x 2)
(/.f64 (pow.f64 x 2) 1)
(pow.f64 x 2)
(/.f64 (*.f64 2 (pow.f64 x 2)) 2)
(pow.f64 x 2)
(/.f64 (*.f64 (pow.f64 x 2) 4) 4)
(pow.f64 x 2)
(/.f64 (*.f64 (pow.f64 x 2) 8) 8)
(pow.f64 x 2)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 8)) 16)
(pow.f64 x 2)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8))) 32)
(pow.f64 x 2)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8)))) 64)
(pow.f64 x 2)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8))))) 128)
(pow.f64 x 2)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 8)))))) 256)
(pow.f64 x 2)

eval23.0ms (0.6%)

Compiler

Compiled 635 to 458 computations (27.9% saved)

prune8.0ms (0.2%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New62062
Fresh000
Picked011
Done022
Total62365
Error
0b
Counts
65 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (neg.f64 x) (pow.f64 x 2))
0.0b
(*.f64 x (-.f64 x 1))
20.7b
(neg.f64 x)
Compiler

Compiled 16 to 11 computations (31.3% saved)

regimes8.0ms (0.2%)

Counts
3 → 1
Calls
Call 1
Inputs
(neg.f64 x)
(*.f64 x (-.f64 x 1))
(+.f64 (neg.f64 x) (pow.f64 x 2))
Outputs
(+.f64 (neg.f64 x) (pow.f64 x 2))
Calls

2 calls:

4.0ms
(*.f64 x (-.f64 x 1))
3.0ms
x
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(*.f64 x (-.f64 x 1))
Compiler

Compiled 22 to 13 computations (40.9% saved)

regimes63.0ms (1.7%)

Accuracy

Total -20.7b remaining (-88173.9%)

Threshold costs -20.7b (-88173.9%)

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

2 calls:

60.0ms
(*.f64 x (-.f64 x 1))
3.0ms
x
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(*.f64 x (-.f64 x 1))
Compiler

Compiled 16 to 10 computations (37.5% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01135
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f64 (neg.f64 x) (pow.f64 x 2))
(*.f64 x (-.f64 x 1))
(neg.f64 x)
Outputs
(+.f64 (neg.f64 x) (pow.f64 x 2))
(*.f64 x (-.f64 x 1))
(neg.f64 x)
Compiler

Compiled 16 to 11 computations (31.3% saved)

soundness335.0ms (9.2%)

Algorithm
egg-herbie
Rules
2362×rational.json-simplify-2
2294×rational.json-simplify-35
1456×exponential.json-simplify-26
1152×rational.json-simplify-53
1042×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
049374
1133354
2272354
3629354
42300354
54153354
65169354
75736354
85903354
96009354
106936354
117616354
127624354
137934354
Stop Event
node limit
Compiler

Compiled 21 to 15 computations (28.6% saved)

end19.0ms (0.5%)

Compiler

Compiled 14 to 8 computations (42.9% saved)

Profiling

Loading profile data...