Details

Time bar (total: 5.3s)

analyze46.0ms (0.9%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%87.4%0.1%0%12.5%0%4
7.7%6.2%74.9%0.1%0%18.7%0%5
17.4%12.5%59.3%0.1%0%28.1%0%6
34.9%23.4%43.7%0.1%0%32.8%0%7
45.6%28.1%33.6%0.1%0%38.2%0%8
60.3%35.5%23.4%0.1%0%41%0%9
68.3%38.2%17.8%0.1%0%43.9%0%10
77.8%42.4%12.1%0.1%0%45.4%0%11
82.8%43.9%9.1%0.1%0%46.9%0%12
Compiler

Compiled 7 to 5 computations (28.6% saved)

sample1.1s (20.2%)

Results
952.0ms8256×body256valid
38.0ms553×body256invalid
Bogosity

preprocess12.0ms (0.2%)

Algorithm
egg-herbie
Rules
swap-x-y
rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0922
1922
022
122
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(sqrt.f64 (+.f64 x y))
(sqrt.f64 (+.f64 y x))
Outputs
(sqrt.f64 (+.f64 x y))
(sqrt.f64 (+.f64 y x))
(sqrt.f64 (+.f64 x y))
Symmetry

(sort x y)

Compiler

Compiled 8 to 6 computations (25% saved)

simplify7.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
1811
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 x y))
Outputs
(sqrt.f64 (+.f64 x y))

eval1.0ms (0%)

Compiler

Compiled 6 to 4 computations (33.3% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.0b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(sqrt.f64 (+.f64 x y))
Compiler

Compiled 6 to 4 computations (33.3% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (+.f64 x y))
Compiler

Compiled 11 to 4 computations (63.6% saved)

series2.0ms (0%)

Counts
1 → 8
Calls

6 calls:

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

rewrite97.0ms (1.8%)

Algorithm
batch-egg-rewrite
Rules
1686×bool.json-1
1686×bool.json-2
1650×rational.json-1
1650×rational.json-2
1154×rational.json-simplify-35
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
16911
219411
340511
483511
5182011
6412211
7685811
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sqrt.f64 (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 1/2) (*.f64 (sqrt.f64 (+.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (sqrt.f64 (+.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (sqrt.f64 (+.f64 x y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (sqrt.f64 (+.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (sqrt.f64 (+.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (+.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (sqrt.f64 (+.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (sqrt.f64 (+.f64 x y)) (sqrt.f64 (+.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (sqrt.f64 (+.f64 x y)) (sqrt.f64 (+.f64 x y)))))))

simplify2.8s (53.2%)

Algorithm
egg-herbie
Rules
4050×rational.json-simplify-35
3208×rational.json-simplify-49
1842×rational.json-simplify-2
1088×rational.json-simplify-1
920×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
093690
1192690
2468690
3939690
41397690
52666690
63388690
73453690
83494690
93532690
103570690
113608690
123669690
133707690
143745690
153783690
163821690
173859690
183897690
194628690
205019690
215063690
225105690
235146690
245187690
255228690
265269690
275310690
285351690
295392690
305433690
315474690
325474690
335515690
345556690
355597690
365638690
375679690
385720690
395761690
405802690
415843690
425884690
435925690
445966690
456007690
466048690
476089690
486130690
496171690
506212690
516253690
526294690
536335690
546376690
556417690
566458690
576499690
586540690
596581690
606622690
616663690
626704690
636745690
646786690
656786690
Stop Event
node limit
Counts
30 → 54
Calls
Call 1
Inputs
(sqrt.f64 y)
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (sqrt.f64 y))
(+.f64 (*.f64 -1/8 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (pow.f64 x 2))) (+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (sqrt.f64 y)))
(+.f64 (*.f64 -1/8 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (pow.f64 x 2))) (+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (+.f64 (*.f64 1/16 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 5))) (pow.f64 x 3))) (sqrt.f64 y))))
(sqrt.f64 x)
(+.f64 (sqrt.f64 x) (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x)))))
(+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))) (+.f64 (sqrt.f64 x) (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x))))))
(+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))) (+.f64 (*.f64 1/16 (*.f64 (pow.f64 y 3) (sqrt.f64 (/.f64 1 (pow.f64 x 5))))) (+.f64 (sqrt.f64 x) (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x)))))))
(+.f64 (sqrt.f64 (+.f64 x y)) 0)
(+.f64 0 (sqrt.f64 (+.f64 x y)))
(+.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 1/2) (*.f64 (sqrt.f64 (+.f64 x y)) 1/2))
(-.f64 (sqrt.f64 (+.f64 x y)) 0)
(*.f64 (sqrt.f64 (+.f64 x y)) 1)
(*.f64 1 (sqrt.f64 (+.f64 x y)))
(*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 1/2))
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 2) 1/2)
(*.f64 4 (*.f64 (sqrt.f64 (+.f64 x y)) 1/4))
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 4) 1/4)
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 8) 1/8)
(*.f64 1/2 (*.f64 (sqrt.f64 (+.f64 x y)) 2))
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 1/2) 2)
(*.f64 1/4 (*.f64 (sqrt.f64 (+.f64 x y)) 4))
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 1/4) 4)
(/.f64 (sqrt.f64 (+.f64 x y)) 1)
(/.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 2) 2)
(/.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 4) 4)
(/.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8)))) 64)
Outputs
(sqrt.f64 y)
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (sqrt.f64 y))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(+.f64 (*.f64 -1/8 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (pow.f64 x 2))) (+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (sqrt.f64 y)))
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (+.f64 (sqrt.f64 y) (*.f64 -1/8 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (pow.f64 x 2)))))
(+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (*.f64 -1/8 (pow.f64 x 2))) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))))
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (*.f64 -1/8 (pow.f64 x 2)))))
(+.f64 (sqrt.f64 y) (+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (*.f64 -1/8 (pow.f64 x 2)))))
(+.f64 (*.f64 -1/8 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (pow.f64 x 2))) (+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (+.f64 (*.f64 1/16 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 5))) (pow.f64 x 3))) (sqrt.f64 y))))
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (+.f64 (+.f64 (sqrt.f64 y) (*.f64 1/16 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 5))) (pow.f64 x 3)))) (*.f64 -1/8 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (pow.f64 x 2)))))
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (*.f64 -1/8 (pow.f64 x 2))) (+.f64 (sqrt.f64 y) (*.f64 1/16 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 5))) (pow.f64 x 3))))))
(+.f64 (sqrt.f64 y) (+.f64 (+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (*.f64 -1/8 (pow.f64 x 2)))) (*.f64 1/16 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 5))) (pow.f64 x 3)))))
(+.f64 (sqrt.f64 y) (+.f64 (*.f64 1/16 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 5))) (pow.f64 x 3))) (+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (*.f64 -1/8 (pow.f64 x 2))))))
(sqrt.f64 x)
(+.f64 (sqrt.f64 x) (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x)))))
(+.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 (/.f64 1 x)) (*.f64 1/2 y)))
(+.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 (/.f64 1 x)) (*.f64 y 1/2)))
(+.f64 (sqrt.f64 x) (*.f64 y (*.f64 1/2 (sqrt.f64 (/.f64 1 x)))))
(+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))) (+.f64 (sqrt.f64 x) (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x))))))
(+.f64 (sqrt.f64 x) (+.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x)))) (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3)))))))
(+.f64 (+.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 (/.f64 1 x)) (*.f64 1/2 y))) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 x 3))) (*.f64 (pow.f64 y 2) -1/8)))
(+.f64 (+.f64 (sqrt.f64 x) (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x))))) (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))))
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 x)) (*.f64 y 1/2)) (+.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 x 3))) (*.f64 -1/8 (pow.f64 y 2)))))
(+.f64 (*.f64 y (*.f64 1/2 (sqrt.f64 (/.f64 1 x)))) (+.f64 (sqrt.f64 x) (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3)))))))
(+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))) (+.f64 (*.f64 1/16 (*.f64 (pow.f64 y 3) (sqrt.f64 (/.f64 1 (pow.f64 x 5))))) (+.f64 (sqrt.f64 x) (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x)))))))
(+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))) (+.f64 (sqrt.f64 x) (+.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x)))) (*.f64 1/16 (*.f64 (pow.f64 y 3) (sqrt.f64 (/.f64 1 (pow.f64 x 5))))))))
(+.f64 (+.f64 (+.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 (/.f64 1 x)) (*.f64 1/2 y))) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 x 3))) (*.f64 (pow.f64 y 2) -1/8))) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 x 5))) (*.f64 1/16 (pow.f64 y 3))))
(+.f64 (sqrt.f64 x) (+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))) (+.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x)))) (*.f64 (pow.f64 y 3) (*.f64 1/16 (sqrt.f64 (/.f64 1 (pow.f64 x 5))))))))
(+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))) (+.f64 (sqrt.f64 x) (+.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 (/.f64 1 x)))) (*.f64 (pow.f64 y 3) (*.f64 1/16 (sqrt.f64 (/.f64 1 (pow.f64 x 5))))))))
(+.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 x)) (*.f64 y 1/2)) (+.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 x 3))) (*.f64 -1/8 (pow.f64 y 2))))) (*.f64 (pow.f64 y 3) (*.f64 1/16 (sqrt.f64 (/.f64 1 (pow.f64 x 5))))))
(+.f64 (sqrt.f64 x) (+.f64 (*.f64 (pow.f64 y 3) (*.f64 1/16 (sqrt.f64 (/.f64 1 (pow.f64 x 5))))) (+.f64 (*.f64 y (*.f64 1/2 (sqrt.f64 (/.f64 1 x)))) (*.f64 -1/8 (*.f64 (pow.f64 y 2) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))))))
(+.f64 (sqrt.f64 (+.f64 x y)) 0)
(sqrt.f64 (+.f64 y x))
(+.f64 0 (sqrt.f64 (+.f64 x y)))
(sqrt.f64 (+.f64 y x))
(+.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 1/2) (*.f64 (sqrt.f64 (+.f64 x y)) 1/2))
(sqrt.f64 (+.f64 y x))
(-.f64 (sqrt.f64 (+.f64 x y)) 0)
(sqrt.f64 (+.f64 y x))
(*.f64 (sqrt.f64 (+.f64 x y)) 1)
(sqrt.f64 (+.f64 y x))
(*.f64 1 (sqrt.f64 (+.f64 x y)))
(sqrt.f64 (+.f64 y x))
(*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 1/2))
(sqrt.f64 (+.f64 y x))
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 2) 1/2)
(sqrt.f64 (+.f64 y x))
(*.f64 4 (*.f64 (sqrt.f64 (+.f64 x y)) 1/4))
(sqrt.f64 (+.f64 y x))
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 4) 1/4)
(sqrt.f64 (+.f64 y x))
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 8) 1/8)
(sqrt.f64 (+.f64 y x))
(*.f64 1/2 (*.f64 (sqrt.f64 (+.f64 x y)) 2))
(sqrt.f64 (+.f64 y x))
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 1/2) 2)
(sqrt.f64 (+.f64 y x))
(*.f64 1/4 (*.f64 (sqrt.f64 (+.f64 x y)) 4))
(sqrt.f64 (+.f64 y x))
(*.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 1/4) 4)
(sqrt.f64 (+.f64 y x))
(/.f64 (sqrt.f64 (+.f64 x y)) 1)
(sqrt.f64 (+.f64 y x))
(/.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 2) 2)
(sqrt.f64 (+.f64 y x))
(/.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 4) 4)
(sqrt.f64 (+.f64 y x))
(/.f64 (*.f64 (sqrt.f64 (+.f64 x y)) 8) 8)
(sqrt.f64 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8)) 16)
(sqrt.f64 (+.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8))) 32)
(sqrt.f64 (+.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (+.f64 x y)) 8)))) 64)
(sqrt.f64 (+.f64 y x))

eval18.0ms (0.3%)

Compiler

Compiled 974 to 690 computations (29.2% saved)

prune7.0ms (0.1%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New52254
Fresh000
Picked011
Done000
Total52355
Error
0.0b
Counts
55 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (sqrt.f64 y))
0.0b
(sqrt.f64 (+.f64 x y))
1.2b
(sqrt.f64 y)
Compiler

Compiled 23 to 17 computations (26.1% saved)

localize63.0ms (1.2%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize163.0ms (3.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (sqrt.f64 y))
0.0b
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
0.1b
(sqrt.f64 (/.f64 1 y))
0.2b
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
Compiler

Compiled 40 to 27 computations (32.5% saved)

series8.0ms (0.2%)

Counts
4 → 3
Calls

21 calls:

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

rewrite139.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
1212×rational.json-simplify-35
1164×bool.json-1
1164×bool.json-2
1126×rational.json-1
1126×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01384
113784
237584
377584
4160184
5384284
Stop Event
node limit
Counts
4 → 59
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(sqrt.f64 (/.f64 1 y))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (sqrt.f64 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sqrt.f64 (/.f64 1 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (sqrt.f64 (/.f64 1 y)) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (sqrt.f64 (/.f64 1 y)) x) (*.f64 (sqrt.f64 (/.f64 1 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sqrt.f64 (/.f64 1 y)) x) (*.f64 (sqrt.f64 (/.f64 1 y)) x))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sqrt.f64 (/.f64 1 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (/.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2) (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (sqrt.f64 (/.f64 1 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (/.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 1 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (/.f64 1 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (sqrt.f64 (/.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (sqrt.f64 (/.f64 1 y)) (sqrt.f64 (/.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (sqrt.f64 (/.f64 1 y)) (sqrt.f64 (/.f64 1 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/4)) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (+.f64 x x)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (sqrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (*.f64 (sqrt.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (sqrt.f64 y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (*.f64 (sqrt.f64 y) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (sqrt.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)))))))

simplify723.0ms (13.7%)

Algorithm
egg-herbie
Rules
3980×rational.json-simplify-2
2988×rational.json-simplify-35
2210×rational.json-simplify-53
1010×rational.json-simplify-51
992×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01071298
12161298
26871298
315001298
433231298
538501298
639761298
740761298
841741298
942701298
1053791298
1154771298
1255731298
1355731298
1456691298
1557651298
1669481298
1776921298
1877891298
1978851298
2079811298
Stop Event
node limit
Counts
62 → 66
Calls
Call 1
Inputs
(sqrt.f64 y)
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 0)
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)))
(+.f64 0 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(-.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 0)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 1)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (+.f64 x x)) 2)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)) 4)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4))))) 32)
(+.f64 (sqrt.f64 (/.f64 1 y)) 0)
(+.f64 0 (sqrt.f64 (/.f64 1 y)))
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2) (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2))
(-.f64 (sqrt.f64 (/.f64 1 y)) 0)
(*.f64 1 (sqrt.f64 (/.f64 1 y)))
(*.f64 (sqrt.f64 (/.f64 1 y)) 1)
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) 2))
(*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2))
(*.f64 4 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/4))
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 2) 1/2)
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2) 2)
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 4) 1/4)
(*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 y)) 4))
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/4) 4)
(/.f64 (sqrt.f64 (/.f64 1 y)) 1)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 2) 2)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 4) 4)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4)))) 32)
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) 0)
(+.f64 0 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)))
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/4)) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/4)))
(-.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) 0)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 2)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) 1)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (+.f64 x x)) 4)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)) 8)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)))) 32)
(-.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 0)
(*.f64 1 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)))
(*.f64 1/2 (+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (sqrt.f64 y))))
(*.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (*.f64 (sqrt.f64 y) 2)))
(*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 1)
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y))))
(*.f64 4 (/.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))
(*.f64 (+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (sqrt.f64 y))) 1/2)
(*.f64 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4) 1/4)
(*.f64 (*.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y))) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))
(*.f64 (/.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4) 4)
(*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (*.f64 (sqrt.f64 y) 2)) 1/2)
(/.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 1)
(/.f64 (+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (sqrt.f64 y))) 2)
(/.f64 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4)))) 32)
Outputs
(sqrt.f64 y)
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 0)
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)))
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(+.f64 0 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(-.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 0)
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 1)
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (+.f64 x x)) 2)
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)) 4)
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4))) 8)
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)))) 16)
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4))))) 32)
(*.f64 (sqrt.f64 (/.f64 1 y)) x)
(+.f64 (sqrt.f64 (/.f64 1 y)) 0)
(sqrt.f64 (/.f64 1 y))
(+.f64 0 (sqrt.f64 (/.f64 1 y)))
(sqrt.f64 (/.f64 1 y))
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2) (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2))
(sqrt.f64 (/.f64 1 y))
(-.f64 (sqrt.f64 (/.f64 1 y)) 0)
(sqrt.f64 (/.f64 1 y))
(*.f64 1 (sqrt.f64 (/.f64 1 y)))
(sqrt.f64 (/.f64 1 y))
(*.f64 (sqrt.f64 (/.f64 1 y)) 1)
(sqrt.f64 (/.f64 1 y))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) 2))
(sqrt.f64 (/.f64 1 y))
(*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2))
(sqrt.f64 (/.f64 1 y))
(*.f64 4 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/4))
(sqrt.f64 (/.f64 1 y))
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 2) 1/2)
(sqrt.f64 (/.f64 1 y))
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/2) 2)
(sqrt.f64 (/.f64 1 y))
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 4) 1/4)
(sqrt.f64 (/.f64 1 y))
(*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 y)) 4))
(sqrt.f64 (/.f64 1 y))
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 1/4) 4)
(sqrt.f64 (/.f64 1 y))
(/.f64 (sqrt.f64 (/.f64 1 y)) 1)
(sqrt.f64 (/.f64 1 y))
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 2) 2)
(sqrt.f64 (/.f64 1 y))
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) 4) 4)
(sqrt.f64 (/.f64 1 y))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4)) 8)
(sqrt.f64 (/.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4))) 16)
(sqrt.f64 (/.f64 1 y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4))) (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) 4)))) 32)
(sqrt.f64 (/.f64 1 y))
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) 0)
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(+.f64 0 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)))
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/4)) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/4)))
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(-.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) 0)
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) 2)
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) 1)
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (+.f64 x x)) 4)
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(/.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)) 8)
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4))) 16)
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 4)))) 32)
(*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x))
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x))
(-.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 0)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 1 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)))
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 1/2 (+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (sqrt.f64 y))))
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (*.f64 (sqrt.f64 y) 2)))
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 1)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y))))
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 4 (/.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 (+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (sqrt.f64 y))) 1/2)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4) 1/4)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 (*.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y))) 2)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 (/.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4) 4)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (*.f64 (sqrt.f64 y) 2)) 1/2)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(/.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 1)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(/.f64 (+.f64 (sqrt.f64 y) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) x) (sqrt.f64 y))) 2)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(/.f64 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4) 4)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4)) 8)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))) 16)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 x 1/2)) (sqrt.f64 y)) 4)))) 32)
(+.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 (/.f64 1 y)) (*.f64 1/2 x)))
(+.f64 (sqrt.f64 y) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)))

eval17.0ms (0.3%)

Compiler

Compiled 989 to 711 computations (28.1% saved)

prune9.0ms (0.2%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New66066
Fresh000
Picked011
Done022
Total66369
Error
0.0b
Counts
69 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (sqrt.f64 y))
0.0b
(sqrt.f64 (+.f64 x y))
1.2b
(sqrt.f64 y)
Compiler

Compiled 23 to 17 computations (26.1% saved)

regimes67.0ms (1.3%)

Accuracy

Total -1.2b remaining (-14722.8%)

Threshold costs -1.2b (-14722.8%)

Counts
3 → 1
Calls
Call 1
Inputs
(sqrt.f64 y)
(sqrt.f64 (+.f64 x y))
(+.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 y)) x)) (sqrt.f64 y))
Outputs
(sqrt.f64 (+.f64 x y))
Calls

4 calls:

56.0ms
(sqrt.f64 (+.f64 x y))
3.0ms
x
3.0ms
y
3.0ms
(+.f64 x y)
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(sqrt.f64 (+.f64 x y))
0.0b1(+.f64 x y)
Compiler

Compiled 36 to 23 computations (36.1% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0816
Stop Event
done
saturated
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 x y))
(sqrt.f64 y)
Outputs
(sqrt.f64 (+.f64 x y))
(sqrt.f64 y)
Compiler

Compiled 10 to 7 computations (30% saved)

soundness0.0ms (0%)

end15.0ms (0.3%)

Remove

(sort x y)

Compiler

Compiled 20 to 13 computations (35% saved)

Profiling

Loading profile data...