Details

Time bar (total: 5.5s)

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
75%75%25%0%0%0%0%4
87.5%87.5%12.5%0%0%0%0%5
93.8%93.7%6.2%0%0%0%0%6
96.9%96.8%3.1%0%0%0%0%7
98.4%98.4%1.6%0%0%0%0%8
99.2%99.2%0.8%0%0%0%0%9
99.6%99.6%0.4%0%0%0%0%10
99.8%99.8%0.2%0%0%0%0%11
99.9%99.9%0.1%0%0%0%0%12
Compiler

Compiled 10 to 5 computations (50% saved)

sample1.0s (18.4%)

Results
1.0s8256×body256valid
Bogosity

preprocess109.0ms (2%)

Algorithm
egg-herbie
Rules
1374×rational.json-simplify-2
1110×rational.json-simplify-59
1048×rational.json-simplify-19
896×rational.json-simplify-1
688×rational.json-simplify-39
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
11017
21617
34017
423617
5286617
6540717
7753217
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(sqrt.f64 (*.f64 x (+.f64 x x)))
Compiler

Compiled 10 to 5 computations (50% saved)

simplify113.0ms (2%)

Algorithm
egg-herbie
Rules
1374×rational.json-simplify-2
1110×rational.json-simplify-59
1048×rational.json-simplify-19
896×rational.json-simplify-1
688×rational.json-simplify-39
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
11017
21617
34017
423617
5286617
6540717
7753217
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(sqrt.f64 (*.f64 x (+.f64 x x)))

eval0.0ms (0%)

Compiler

Compiled 15 to 7 computations (53.3% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
31.8b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
31.8b
(sqrt.f64 (*.f64 x (+.f64 x x)))
Compiler

Compiled 7 to 4 computations (42.9% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
30.8b
(sqrt.f64 (*.f64 x (+.f64 x x)))
Compiler

Compiled 16 to 4 computations (75% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite65.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1560×rational.json-simplify-35
1202×rational.json-simplify-2
1098×exponential.json-3
1098×rational.json-1
1098×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
14517
210217
321417
440217
596217
6323217
Stop Event
node limit
Counts
1 → 24
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 x (+.f64 x x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 x (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2) (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 x (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1)))))

simplify1.0s (18.4%)

Algorithm
egg-herbie
Rules
9380×rational.json-simplify-41
3294×rational.json-simplify-2
3082×rational.json-simplify-51
2104×rational.json-simplify-35
1142×rational.json-simplify-49
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
054564
1105556
2392556
31014556
41567556
52197556
62534556
72616556
82673556
92712556
102750556
112788556
122826556
132864556
142902556
152940556
162978556
173016556
183054556
193809556
206173556
216242556
226281556
236318556
246354556
256390556
266426556
276462556
286498556
296534556
306570556
316606556
326642556
336678556
346714556
356750556
367785556
377785556
387785556
Stop Event
node limit
Counts
36 → 29
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(+.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 0)
(+.f64 0 (sqrt.f64 (*.f64 x (+.f64 x x))))
(+.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2) (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2))
(-.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 0)
(*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1)
(*.f64 1 (sqrt.f64 (*.f64 x (+.f64 x x))))
(*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 2) 1/2)
(*.f64 4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/4))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 4) 1/4)
(*.f64 1/2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 2))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8) 1/8)
(*.f64 1/4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 4))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2) 2)
(*.f64 1/8 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/4) 4)
(/.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1)
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 2) 2)
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 4) 4)
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8)))) 64)
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1)
Outputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 x -1))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 x -1))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 x -1))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 x -1))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 0)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(+.f64 0 (sqrt.f64 (*.f64 x (+.f64 x x))))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(+.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2) (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(-.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 0)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 1 (sqrt.f64 (*.f64 x (+.f64 x x))))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 2) 1/2)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/4))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 4) 1/4)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 1/2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 2))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8) 1/8)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 1/4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 4))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/2) 2)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 1/8 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1/4) 4)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(/.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 2) 2)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 4) 4)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8) 8)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8)) 16)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8))) 32)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 8)))) 64)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x x))) 1)
(sqrt.f64 (*.f64 x (+.f64 x x)))

eval8.0ms (0.1%)

Compiler

Compiled 284 to 121 computations (57.4% saved)

prune4.0ms (0.1%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New27229
Fresh000
Picked011
Done000
Total27330
Error
0.2b
Counts
30 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
32.5b
(*.f64 (sqrt.f64 2) (neg.f64 x))
30.5b
(*.f64 (sqrt.f64 2) x)
31.8b
(sqrt.f64 (*.f64 x (+.f64 x x)))
Compiler

Compiled 18 to 13 computations (27.8% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (sqrt.f64 2) x)
Compiler

Compiled 9 to 7 computations (22.2% saved)

series0.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite241.0ms (4.4%)

Algorithm
batch-egg-rewrite
Rules
1740×rational.json-simplify-35
1606×rational.json-1
1606×rational.json-2
1508×rational.json-simplify-53
1262×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
14511
29511
318311
432311
570511
6168011
7291011
8383211
9497511
10612411
11708311
12708311
13771011
Stop Event
node limit
Counts
1 → 15
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 2) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sqrt.f64 2) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 2) (*.f64 x 1/2)) (*.f64 (sqrt.f64 2) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sqrt.f64 2) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 2) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 (sqrt.f64 2) x)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 8 (*.f64 x 4))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 2) x) 1)))))

simplify1.0s (19%)

Algorithm
egg-herbie
Rules
3900×rational.json-simplify-35
2832×rational.json-simplify-2
1574×rational.json-simplify-53
960×exponential.json-simplify-26
930×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047165
1136165
2291165
3819165
42034165
53334165
64237165
74530165
84672165
94779165
104886165
115468165
125747165
135965165
146156165
156258165
166405165
176484165
186484165
196591165
206698165
216805165
226921165
237028165
247135165
257466165
267573165
277680165
287787165
297894165
Stop Event
node limit
Counts
15 → 16
Calls
Call 1
Inputs
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(+.f64 0 (*.f64 (sqrt.f64 2) x))
(+.f64 (*.f64 (sqrt.f64 2) (*.f64 x 1/2)) (*.f64 (sqrt.f64 2) (*.f64 x 1/2)))
(-.f64 (*.f64 (sqrt.f64 2) x) 0)
(/.f64 (*.f64 (sqrt.f64 2) x) 1)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 2) x)) 2)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x 4)) 4)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))) 128)
(/.f64 (*.f64 16 (*.f64 (sqrt.f64 2) x)) 16)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 8 (*.f64 x 4))) 32)
(/.f64 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))))) 256)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))))) 512)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
Outputs
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(+.f64 0 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) x)
(+.f64 (*.f64 (sqrt.f64 2) (*.f64 x 1/2)) (*.f64 (sqrt.f64 2) (*.f64 x 1/2)))
(*.f64 (sqrt.f64 2) x)
(-.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 (sqrt.f64 2) x) 1)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 2) x)) 2)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x 4)) 4)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x 8)) 8)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))) 128)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 16 (*.f64 (sqrt.f64 2) x)) 16)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 8 (*.f64 x 4))) 32)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))) 64)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))))) 256)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))))) 512)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(*.f64 (sqrt.f64 2) x)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (sqrt.f64 2) (neg.f64 x))
Compiler

Compiled 12 to 8 computations (33.3% saved)

series0.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(*.f64 (sqrt.f64 2) (neg.f64 x))
0.0ms
x
@inf
(*.f64 (sqrt.f64 2) (neg.f64 x))
0.0ms
x
@-inf
(*.f64 (sqrt.f64 2) (neg.f64 x))

rewrite130.0ms (2.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0815
15515
212515
326015
451215
5121815
6258615
7447415
8572815
9732015
Stop Event
node limit
Counts
1 → 25
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) (neg.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sqrt.f64 2) (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 (sqrt.f64 2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 1 (+.f64 (*.f64 (sqrt.f64 2) x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 2) (*.f64 x -1/2)) (*.f64 (sqrt.f64 2) (*.f64 x -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (sqrt.f64 2) x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 -1 (+.f64 (*.f64 (sqrt.f64 2) x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 x -2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 x -4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -8 (*.f64 (sqrt.f64 2) x)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (+.f64 x x)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x))) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x)))) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (sqrt.f64 2) x))))))

simplify275.0ms (5%)

Algorithm
egg-herbie
Rules
2282×rational.json-simplify-2
1868×rational.json-simplify-35
1724×rational.json-simplify-1
1168×rational.json-simplify-41
1086×rational.json-simplify-53
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068577
1174577
2373577
3909577
42522577
54652577
65254577
75617577
85876577
96143577
106179577
117445577
127883577
Stop Event
node limit
Counts
37 → 30
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(+.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)
(+.f64 0 (*.f64 (sqrt.f64 2) (neg.f64 x)))
(+.f64 -1 (-.f64 1 (*.f64 (sqrt.f64 2) x)))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 (sqrt.f64 2) x) -1)))
(+.f64 (*.f64 (sqrt.f64 2) (*.f64 x -1/2)) (*.f64 (sqrt.f64 2) (*.f64 x -1/2)))
(+.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) -1)
(-.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)
(-.f64 0 (*.f64 (sqrt.f64 2) x))
(-.f64 -1 (+.f64 (*.f64 (sqrt.f64 2) x) -1))
(-.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(/.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x -2)) 2)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x -4)) 4)
(/.f64 (*.f64 (sqrt.f64 2) x) -1)
(/.f64 (*.f64 -8 (*.f64 (sqrt.f64 2) x)) 8)
(/.f64 (*.f64 (sqrt.f64 2) (+.f64 x x)) -2)
(/.f64 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))) 16)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x))) -4)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x)))) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))))) 256)
(pow.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)
(neg.f64 (*.f64 (sqrt.f64 2) x))
Outputs
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 0 (*.f64 (sqrt.f64 2) (neg.f64 x)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 -1 (-.f64 1 (*.f64 (sqrt.f64 2) x)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 (sqrt.f64 2) x) -1)))
(+.f64 -2 (-.f64 1 (+.f64 -1 (*.f64 (sqrt.f64 2) x))))
(+.f64 (*.f64 (sqrt.f64 2) (*.f64 x -1/2)) (*.f64 (sqrt.f64 2) (*.f64 x -1/2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) -1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(-.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(-.f64 0 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(-.f64 -1 (+.f64 (*.f64 (sqrt.f64 2) x) -1))
(-.f64 -1 (+.f64 -1 (*.f64 (sqrt.f64 2) x)))
(-.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) -1))
(-.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x -2)) 2)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x -4)) 4)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) x) -1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 -8 (*.f64 (sqrt.f64 2) x)) 8)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) (+.f64 x x)) -2)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))) 16)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x))) -4)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))) 32)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x)))) -8)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))) 64)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) 128)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))))) 256)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(pow.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))

eval11.0ms (0.2%)

Compiler

Compiled 423 to 364 computations (13.9% saved)

prune7.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New46046
Fresh000
Picked011
Done022
Total46349
Error
0.2b
Counts
49 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
32.5b
(*.f64 (sqrt.f64 2) (neg.f64 x))
30.5b
(*.f64 (sqrt.f64 2) x)
31.8b
(sqrt.f64 (*.f64 x (+.f64 x x)))
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes32.0ms (0.6%)

Accuracy

Total -62.2b remaining (-13839.1%)

Threshold costs -62.2b (-13839.1%)

Counts
4 → 2
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Outputs
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (sqrt.f64 2) x)
Calls

4 calls:

8.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
8.0ms
x
7.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
7.0ms
(*.f64 x x)
Results
ErrorSegmentsBranch
0.4b2x
14.4b3(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
14.4b3(+.f64 (*.f64 x x) (*.f64 x x))
14.4b3(*.f64 x x)
Compiler

Compiled 47 to 24 computations (48.9% saved)

bsearch16.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
-1.0079072536098313e-305
3.603476287487585e-298
Results
14.0ms160×body256valid
Compiler

Compiled 143 to 117 computations (18.2% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01546
Stop Event
done
saturated
Calls
Call 1
Inputs
(if (<=.f64 x -2024022533073/101201126653655309176247673359458653524778324882071059178450679013715169783997673445980191850718562247593538932158405955694904368692896738433506699970369254960758712138283180682233453871046608170619883839236372534281003741712346349309051677824579778170405028256179384776166707307615251266093163754323003131653853870546747392) (*.f64 (sqrt.f64 2) (neg.f64 x)) (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) x)
Outputs
(if (<=.f64 x -2024022533073/101201126653655309176247673359458653524778324882071059178450679013715169783997673445980191850718562247593538932158405955694904368692896738433506699970369254960758712138283180682233453871046608170619883839236372534281003741712346349309051677824579778170405028256179384776166707307615251266093163754323003131653853870546747392) (*.f64 (sqrt.f64 2) (neg.f64 x)) (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) x)
Compiler

Compiled 19 to 15 computations (21.1% saved)

soundness1.4s (25.2%)

Algorithm
egg-herbie
Rules
9380×rational.json-simplify-41
3294×rational.json-simplify-2
3082×rational.json-simplify-51
2104×rational.json-simplify-35
1374×rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
11017
21617
34017
423617
5286617
6540717
7753217
054564
1105556
2392556
31014556
41567556
52197556
62534556
72616556
82673556
92712556
102750556
112788556
122826556
132864556
142902556
152940556
162978556
173016556
183054556
193809556
206173556
216242556
226281556
236318556
246354556
256390556
266426556
276462556
286498556
296534556
306570556
316606556
326642556
336678556
346714556
356750556
367785556
377785556
387785556
0717
11017
21617
34017
423617
5286617
6540717
7753217
Stop Event
node limit
node limit
node limit
Compiler

Compiled 48 to 29 computations (39.6% saved)

end19.0ms (0.3%)

Compiler

Compiled 18 to 14 computations (22.2% saved)

Profiling

Loading profile data...