Details

Time bar (total: 3.8s)

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%50%0%0%50%0%2
0%0%50%0%0%50%0%3
33.3%12.5%25%0%0%62.5%0%4
60%18.7%12.5%0%0%68.7%0%5
77.8%21.9%6.2%0%0%71.8%0%6
88.2%23.4%3.1%0%0%73.4%0%7
93.9%24.2%1.6%0%0%74.2%0%8
96.9%24.6%0.8%0%0%74.6%0%9
98.4%24.8%0.4%0%0%74.8%0%10
99.2%24.9%0.2%0%0%74.9%0%11
99.6%24.9%0.1%0%0%74.9%0%12
Compiler

Compiled 9 to 7 computations (22.2% saved)

sample712.0ms (18.8%)

Results
701.0ms8256×body256valid
1.0ms13×body256invalid
Bogosity

preprocess11.0ms (0.3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
11417
21617
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
Outputs
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify8.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
11417
21617
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
Outputs
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
(sqrt.f64 (*.f64 x (+.f64 x -1)))

eval0.0ms (0%)

Compiler

Compiled 14 to 10 computations (28.6% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.2b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.4b
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
30.8b
(sqrt.f64 (*.f64 x (+.f64 x -1)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

localize7.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
28.6b
(sqrt.f64 (*.f64 x (+.f64 x -1)))
Compiler

Compiled 17 to 11 computations (35.3% saved)

series1.0ms (0%)

Counts
1 → 8
Calls

3 calls:

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

rewrite223.0ms (5.9%)

Algorithm
batch-egg-rewrite
Rules
1484×rational.json-simplify-35
1344×exponential.json-3
1344×rational.json-1
1344×rational.json-2
1344×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
15617
212017
322817
441917
591217
6229917
7404917
8523917
9673317
10754417
11754417
Stop Event
node limit
Counts
1 → 26
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 x (+.f64 x -1)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 x (+.f64 x -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2) (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 x (+.f64 x -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)))))

simplify2.3s (60.3%)

Algorithm
egg-herbie
Rules
6504×rational.json-simplify-51
3738×rational.json-simplify-35
1340×rational.json-simplify-49
1200×rational.json-simplify-2
900×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
075630
1162622
2485622
31265622
42000622
52731622
63093622
73179622
83239622
93279622
103318622
113357622
123396622
133435622
143474622
153513622
163552622
173591622
183630622
194534622
204796622
214896622
224992622
235086622
245086622
255299622
265299622
275392622
285485622
295578622
305671622
315764622
325857622
335950622
346043622
356136622
366229622
Stop Event
node limit
Counts
34 → 47
Calls
Call 1
Inputs
x
(-.f64 x 1/2)
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
(-.f64 x (+.f64 1/2 (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))) (*.f64 1/8 (/.f64 1 x)))))
(*.f64 -1 x)
(+.f64 1/2 (*.f64 -1 x))
(+.f64 1/2 (+.f64 (*.f64 -1 x) (*.f64 1/8 (/.f64 1 x))))
(+.f64 1/2 (+.f64 (*.f64 -1 x) (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))) (*.f64 1/8 (/.f64 1 x)))))
(+.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)
(+.f64 0 (sqrt.f64 (*.f64 x (+.f64 x -1))))
(+.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2) (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2))
(-.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)
(*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
(*.f64 1 (sqrt.f64 (*.f64 x (+.f64 x -1))))
(*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2) 1/2)
(*.f64 4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/4))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4) 1/4)
(*.f64 1/2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8) 1/8)
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2) 2)
(*.f64 1/4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/4) 4)
(*.f64 1/8 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))
(/.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2) 2)
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4) 4)
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))))) 256)
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
Outputs
x
(-.f64 x 1/2)
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
(-.f64 x (+.f64 1/2 (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))) (*.f64 1/8 (/.f64 1 x)))))
(-.f64 x (+.f64 1/2 (+.f64 (*.f64 1/8 (/.f64 1 x)) (*.f64 1/16 (/.f64 1 (pow.f64 x 2))))))
(-.f64 x (+.f64 (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))) (*.f64 1/16 (/.f64 1 (pow.f64 x 2)))))
(*.f64 -1 x)
(*.f64 x -1)
(neg.f64 x)
(+.f64 1/2 (*.f64 -1 x))
(+.f64 1/2 (*.f64 x -1))
(+.f64 1/2 (neg.f64 x))
(+.f64 1/2 (+.f64 (*.f64 -1 x) (*.f64 1/8 (/.f64 1 x))))
(+.f64 1/2 (+.f64 (*.f64 1/8 (/.f64 1 x)) (*.f64 x -1)))
(+.f64 1/2 (+.f64 (*.f64 1/8 (/.f64 1 x)) (neg.f64 x)))
(+.f64 1/2 (+.f64 (*.f64 -1 x) (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))) (*.f64 1/8 (/.f64 1 x)))))
(+.f64 1/2 (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))) (+.f64 (*.f64 1/8 (/.f64 1 x)) (*.f64 x -1))))
(+.f64 1/2 (+.f64 (*.f64 1/8 (/.f64 1 x)) (+.f64 (neg.f64 x) (*.f64 1/16 (/.f64 1 (pow.f64 x 2))))))
(+.f64 1/2 (+.f64 (*.f64 1/8 (/.f64 1 x)) (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))) (neg.f64 x))))
(+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))) (+.f64 1/2 (+.f64 (*.f64 1/8 (/.f64 1 x)) (neg.f64 x))))
(+.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(+.f64 0 (sqrt.f64 (*.f64 x (+.f64 x -1))))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(+.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2) (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(-.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 1 (sqrt.f64 (*.f64 x (+.f64 x -1))))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2) 1/2)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/4))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4) 1/4)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 1/2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8) 1/8)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2) 2)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 1/4 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/4) 4)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 1/8 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2) 2)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4) 4)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8) 8)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)) 16)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))) 32)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))) 64)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))))) 128)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))))) 256)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
(sqrt.f64 (*.f64 x (+.f64 x -1)))

localize8.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
Compiler

Compiled 19 to 12 computations (36.8% saved)

series1.0ms (0%)

Counts
1 → 8
Calls

3 calls:

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

rewrite196.0ms (5.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
17017
215717
328317
451917
5112817
6270117
7466717
8569017
9693617
10796117
11796117
Stop Event
node limit
Counts
1 → 15
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 x (+.f64 x -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2) (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 x (+.f64 x -1)))))))

simplify173.0ms (4.6%)

Algorithm
egg-herbie
Rules
1030×rational.json-simplify-35
912×rational.json-simplify-2
864×rational.json-simplify-1
800×rational.json-simplify-46
784×rational.json-simplify-19
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
068467
1177435
2289435
3903435
41618435
52262435
62626435
72741435
82877435
93134435
103966435
116039435
127400435
Stop Event
node limit
Counts
23 → 36
Calls
Call 1
Inputs
x
(-.f64 x 1/2)
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
(-.f64 x (+.f64 1/2 (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))) (*.f64 1/8 (/.f64 1 x)))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (pow.f64 (sqrt.f64 -1) 2)))
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (+.f64 (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (pow.f64 (sqrt.f64 -1) 2))))
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2))) (+.f64 (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (pow.f64 (sqrt.f64 -1) 2)))))
(+.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)
(+.f64 0 (sqrt.f64 (*.f64 x (+.f64 x -1))))
(+.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2) (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2))
(-.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)
(/.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2) 2)
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4) 4)
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))))) 256)
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
Outputs
x
(-.f64 x 1/2)
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
(-.f64 x (+.f64 1/2 (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))) (*.f64 1/8 (/.f64 1 x)))))
(-.f64 x (+.f64 1/2 (+.f64 (*.f64 1/8 (/.f64 1 x)) (*.f64 1/16 (/.f64 1 (pow.f64 x 2))))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 -1 (*.f64 x 1))
(neg.f64 x)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (pow.f64 (sqrt.f64 -1) 2)))
(+.f64 1/2 (*.f64 -1 (*.f64 x 1)))
(+.f64 1/2 (neg.f64 x))
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (+.f64 (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (pow.f64 (sqrt.f64 -1) 2))))
(+.f64 (+.f64 1/2 (*.f64 -1 (*.f64 x 1))) (*.f64 1/8 (/.f64 1 x)))
(+.f64 (+.f64 1/2 (neg.f64 x)) (*.f64 1/8 (/.f64 1 x)))
(+.f64 1/2 (+.f64 (neg.f64 x) (*.f64 1/8 (/.f64 1 x))))
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2))) (+.f64 (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (pow.f64 (sqrt.f64 -1) 2)))))
(+.f64 (*.f64 1/8 (/.f64 1 x)) (+.f64 (*.f64 -1 (*.f64 x 1)) (+.f64 1/2 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))))))
(+.f64 (*.f64 1/8 (/.f64 1 x)) (+.f64 (neg.f64 x) (+.f64 1/2 (*.f64 1/16 (/.f64 1 (pow.f64 x 2))))))
(+.f64 (+.f64 (+.f64 1/2 (neg.f64 x)) (*.f64 1/8 (/.f64 1 x))) (*.f64 1/16 (/.f64 1 (pow.f64 x 2))))
(+.f64 1/2 (+.f64 (*.f64 1/8 (/.f64 1 x)) (+.f64 (neg.f64 x) (*.f64 1/16 (/.f64 1 (pow.f64 x 2))))))
(+.f64 1/2 (+.f64 (+.f64 (*.f64 1/8 (/.f64 1 x)) (*.f64 1/16 (/.f64 1 (pow.f64 x 2)))) (neg.f64 x)))
(+.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(+.f64 0 (sqrt.f64 (*.f64 x (+.f64 x -1))))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(+.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2) (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1/2))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(-.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 0)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 2) 2)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 4) 4)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8) 8)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)) 16)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))) 32)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))) 64)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8))))) 128)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 8)))))) 256)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x -1))) 1)
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(sqrt.f64 (*.f64 x (+.f64 x -1)))

eval85.0ms (2.2%)

Compiler

Compiled 946 to 763 computations (19.3% saved)

prune8.0ms (0.2%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New80383
Fresh000
Picked101
Done011
Total81485
Error
0.0b
Counts
85 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
0.8b
(-.f64 x 1/2)
30.8b
(sqrt.f64 (*.f64 x (+.f64 x -1)))
1.4b
x
Compiler

Compiled 23 to 17 computations (26.1% saved)

localize3.0ms (0.1%)

Compiler

Compiled 6 to 4 computations (33.3% saved)

localize10.0ms (0.3%)

Compiler

Compiled 29 to 23 computations (20.7% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune1.0ms (0%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New000
Fresh011
Picked011
Done022
Total044
Error
0.0b
Counts
4 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
0.8b
(-.f64 x 1/2)
30.8b
(sqrt.f64 (*.f64 x (+.f64 x -1)))
1.4b
x
Compiler

Compiled 23 to 17 computations (26.1% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune3.0ms (0.1%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done033
Total044
Error
0.0b
Counts
4 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
0.8b
(-.f64 x 1/2)
30.8b
(sqrt.f64 (*.f64 x (+.f64 x -1)))
1.4b
x
Compiler

Compiled 23 to 17 computations (26.1% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done033
Total044
Error
0.0b
Counts
4 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
0.8b
(-.f64 x 1/2)
30.8b
(sqrt.f64 (*.f64 x (+.f64 x -1)))
1.4b
x
Compiler

Compiled 23 to 17 computations (26.1% saved)

regimes10.0ms (0.3%)

Counts
5 → 1
Calls
Call 1
Inputs
x
(-.f64 x 1/2)
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
(sqrt.f64 (*.f64 x (+.f64 x -1)))
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
Outputs
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
Calls

2 calls:

5.0ms
x
4.0ms
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
Results
ErrorSegmentsBranch
0.4b1x
0.4b1(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
Compiler

Compiled 37 to 26 computations (29.7% saved)

regimes5.0ms (0.1%)

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

1 calls:

4.0ms
x
Results
ErrorSegmentsBranch
0.5b1x
Compiler

Compiled 22 to 15 computations (31.8% saved)

regimes3.0ms (0.1%)

Accuracy

Total -0.6b remaining (-81.6%)

Threshold costs -0.6b (-81.6%)

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

1 calls:

3.0ms
x
Results
ErrorSegmentsBranch
0.8b1x
Compiler

Compiled 7 to 4 computations (42.9% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01654
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
(-.f64 x 1/2)
x
Outputs
(*.f64 (sqrt.f64 (-.f64 x 1)) (sqrt.f64 x))
(-.f64 x (+.f64 1/2 (*.f64 1/8 (/.f64 1 x))))
(-.f64 x 1/2)
x
Compiler

Compiled 24 to 18 computations (25% saved)

soundness0.0ms (0%)

end23.0ms (0.6%)

Compiler

Compiled 21 to 15 computations (28.6% saved)

Profiling

Loading profile data...