sqrt D (should all be same)

Time bar (total: 4.1s)

analyze1.1s (27.3%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%199.9%-99.9%0%0%0%1
0%0%399.8%-299.8%0%0%0%2
0%0%799.6%-699.6%0%0%0%3
0%0%1599.2%-1499.2%0%0%0%4
0%0%3198.4%-3098.4%0%0%0%5
0%0%6396.9%-6296.9%0%0%0%6
0%0%12793.8%-12693.8%0%0%0%7
0%0%25587.5%-25487.5%0%0%0%8
0%0%51175%-51075%0%0%0%9
0%0%102350%-102250%0%0%0%10
0%0%204700%-204600%0%0%0%11
0%0%409400%-409300%0%0%0%12
Compiler

Compiled 8 to 7 computations (12.5% saved)

sample1.2s (28.6%)

Results
1.2s8253×body256valid
0.0msbody256infinite
Bogosity

preprocess121.0ms (3%)

Algorithm
egg-herbie
Rules
1792×fma-def
1318×fma-neg
1110×distribute-lft-neg-in
808×distribute-rgt-neg-in
638×neg-mul-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01234
12634
25334
319334
483034
5187534
6386134
7520334
8643034
9754534
Stop Event
node limit
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(sqrt.f64 (*.f64 2 (pow.f64 (neg.f64 x) 2)))
Outputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(sqrt.f64 (*.f64 x (*.f64 x -2)))
(sqrt.f64 (*.f64 2 (pow.f64 (neg.f64 x) 2)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(sqrt.f64 (*.f64 x (*.f64 x -2)))
Symmetry

(abs x)

Compiler

Compiled 8 to 7 computations (12.5% saved)

simplify235.0ms (5.7%)

Algorithm
egg-herbie
Rules
2734×sqr-pow
1306×cube-prod
1044×pow-sqr
884×associate-*r*
868×unswap-sqr
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11417
22517
34617
410617
532917
6123017
7209417
8223417
9240217
10259917
11287817
12324617
13369217
14422017
15486217
16564117
17596717
18624117
19644717
20650717
21653717
22747217
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
Outputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))

eval2.0ms (0.1%)

Compiler

Compiled 13 to 10 computations (23.1% saved)

prune5.0ms (0.1%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Accurracy
53.3%
Counts
3 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
53.3%
(sqrt.f64 (*.f64 2 (*.f64 x x)))
53.3%
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 14 to 10 computations (28.6% saved)

localize121.0ms (3%)

Local Accuracy

Found 2 expressions with local accuracy:

NewAccuracyProgram
100.0%
(*.f64 2 (*.f64 x x))
53.3%
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 18 to 9 computations (50% saved)

series7.0ms (0.2%)

Counts
2 → 24
Calls

6 calls:

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

rewrite182.0ms (4.4%)

Algorithm
batch-egg-rewrite
Rules
1354×pow1
1244×add-exp-log
1244×log1p-expm1-u
1244×expm1-log1p-u
1214×add-log-exp
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0830
116024
2181024
Stop Event
node limit
Counts
2 → 36
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(*.f64 2 (*.f64 x x))
Outputs
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 x (sqrt.f64 2))
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(*.f64 (pow.f64 1 1/2) (*.f64 x (sqrt.f64 2)))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/2))
(*.f64 (pow.f64 (*.f64 2 x) 1/2) (sqrt.f64 x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(fabs.f64 (*.f64 x (sqrt.f64 2)))
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(pow.f64 (*.f64 (pow.f64 x 4) 4) 1/2)
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(sqrt.f64 (*.f64 (pow.f64 x 4) 4))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))

simplify125.0ms (3%)

Algorithm
egg-herbie
Rules
1200×log-prod
1148×fma-def
1056×distribute-rgt-in
1030×distribute-lft-in
700×fma-neg
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
083816
1193816
2739816
32412688
47441688
Stop Event
node limit
Counts
60 → 48
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 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 x (sqrt.f64 2))
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(*.f64 (pow.f64 1 1/2) (*.f64 x (sqrt.f64 2)))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/2))
(*.f64 (pow.f64 (*.f64 2 x) 1/2) (sqrt.f64 x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(fabs.f64 (*.f64 x (sqrt.f64 2)))
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(pow.f64 (*.f64 (pow.f64 x 4) 4) 1/2)
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(sqrt.f64 (*.f64 (pow.f64 x 4) 4))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))
Outputs
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 x (+.f64 x x)))))
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 2 x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (pow.f64 1 1/2) (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/2))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 x (+.f64 x x)))))
(*.f64 (pow.f64 (*.f64 2 x) 1/2) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 2 x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(fabs.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (*.f64 (pow.f64 x 4) 4) 1/2)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(sqrt.f64 (*.f64 (pow.f64 x 4) 4))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))

eval19.0ms (0.5%)

Compiler

Compiled 375 to 272 computations (27.5% saved)

prune17.0ms (0.4%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New46248
Fresh000
Picked101
Done000
Total47249
Accurracy
100.0%
Counts
49 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 2) x)
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 2) x)
Compiler

Compiled 18 to 12 computations (33.3% saved)

localize76.0ms (1.9%)

Local Accuracy

Found 2 expressions with local accuracy:

NewAccuracyProgram
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 2) x)
Compiler

Compiled 14 to 9 computations (35.7% saved)

series4.0ms (0.1%)

Counts
2 → 12
Calls

6 calls:

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

rewrite108.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
1218×pow1
1118×add-exp-log
1118×log1p-expm1-u
1118×expm1-log1p-u
1092×add-log-exp
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0822
115914
2178414
Stop Event
node limit
Counts
2 → 40
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
Outputs
(-.f64 (+.f64 1 (hypot.f64 x x)) 1)
(pow.f64 (hypot.f64 x x) 1)
(pow.f64 (cbrt.f64 (hypot.f64 x x)) 3)
(pow.f64 (pow.f64 (hypot.f64 x x) 3) 1/3)
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (exp.f64 (hypot.f64 x x)))
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(hypot.f64 x x)
(exp.f64 (log.f64 (hypot.f64 x x)))
(log1p.f64 (expm1.f64 (hypot.f64 x x)))
(-.f64 (+.f64 1 (hypot.f64 x x)) 1)
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (hypot.f64 x x) 1)
(*.f64 1 (hypot.f64 x x))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sqrt.f64 2)))
(*.f64 (cbrt.f64 (hypot.f64 x x)) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (hypot.f64 x x)))
(*.f64 (cbrt.f64 2) (*.f64 (cbrt.f64 (sqrt.f64 2)) x))
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 2)))
(*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (hypot.f64 x x)))
(*.f64 (*.f64 (sqrt.f64 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))
(*.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (*.f64 x (cbrt.f64 2)) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (*.f64 x (pow.f64 2 1/4)) (pow.f64 2 1/4))
(pow.f64 (hypot.f64 x x) 1)
(pow.f64 (cbrt.f64 (hypot.f64 x x)) 3)
(pow.f64 (pow.f64 (hypot.f64 x x) 3) 1/3)
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (exp.f64 (hypot.f64 x x)))
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(exp.f64 (log.f64 (hypot.f64 x x)))
(log1p.f64 (expm1.f64 (hypot.f64 x x)))

simplify105.0ms (2.5%)

Algorithm
egg-herbie
Rules
1050×log-prod
786×fma-neg
712×exp-prod
604×*-commutative
600×fma-def
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
066848
1135692
2384536
32022536
44378536
56366536
Stop Event
node limit
Counts
52 → 35
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 (+.f64 1 (hypot.f64 x x)) 1)
(pow.f64 (hypot.f64 x x) 1)
(pow.f64 (cbrt.f64 (hypot.f64 x x)) 3)
(pow.f64 (pow.f64 (hypot.f64 x x) 3) 1/3)
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (exp.f64 (hypot.f64 x x)))
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(hypot.f64 x x)
(exp.f64 (log.f64 (hypot.f64 x x)))
(log1p.f64 (expm1.f64 (hypot.f64 x x)))
(-.f64 (+.f64 1 (hypot.f64 x x)) 1)
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (hypot.f64 x x) 1)
(*.f64 1 (hypot.f64 x x))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sqrt.f64 2)))
(*.f64 (cbrt.f64 (hypot.f64 x x)) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (hypot.f64 x x)))
(*.f64 (cbrt.f64 2) (*.f64 (cbrt.f64 (sqrt.f64 2)) x))
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 2)))
(*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (hypot.f64 x x)))
(*.f64 (*.f64 (sqrt.f64 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))
(*.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (*.f64 x (cbrt.f64 2)) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (*.f64 x (pow.f64 2 1/4)) (pow.f64 2 1/4))
(pow.f64 (hypot.f64 x x) 1)
(pow.f64 (cbrt.f64 (hypot.f64 x x)) 3)
(pow.f64 (pow.f64 (hypot.f64 x x) 3) 1/3)
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (exp.f64 (hypot.f64 x x)))
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(exp.f64 (log.f64 (hypot.f64 x x)))
(log1p.f64 (expm1.f64 (hypot.f64 x x)))
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))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(-.f64 (+.f64 1 (hypot.f64 x x)) 1)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (hypot.f64 x x) 1)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (cbrt.f64 (hypot.f64 x x)) 3)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (pow.f64 (hypot.f64 x x) 3) 1/3)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (exp.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(hypot.f64 x x)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(exp.f64 (log.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(log1p.f64 (expm1.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(-.f64 (+.f64 1 (hypot.f64 x x)) 1)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 (hypot.f64 x x) 1)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 1 (hypot.f64 x x))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(*.f64 (cbrt.f64 (hypot.f64 x x)) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (cbrt.f64 2) (*.f64 (cbrt.f64 (sqrt.f64 2)) x))
(*.f64 (cbrt.f64 2) (*.f64 x (cbrt.f64 (sqrt.f64 2))))
(*.f64 x (*.f64 (cbrt.f64 2) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (*.f64 (sqrt.f64 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 x (cbrt.f64 2)) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (cbrt.f64 2) (*.f64 x (cbrt.f64 (sqrt.f64 2))))
(*.f64 x (*.f64 (cbrt.f64 2) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (*.f64 x (pow.f64 2 1/4)) (pow.f64 2 1/4))
(*.f64 (sqrt.f64 2) x)
(pow.f64 (hypot.f64 x x) 1)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (cbrt.f64 (hypot.f64 x x)) 3)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (pow.f64 (hypot.f64 x x) 3) 1/3)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (exp.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(exp.f64 (log.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(log1p.f64 (expm1.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)

eval26.0ms (0.6%)

Compiler

Compiled 237 to 139 computations (41.4% saved)

prune16.0ms (0.4%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New35035
Fresh000
Picked022
Done000
Total35237
Accurracy
100.0%
Counts
37 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 2) x)
Compiler

Compiled 29 to 20 computations (31% saved)

regimes50.0ms (1.2%)

Accuracy

Total -30.1b remaining (-257014.7%)

Threshold costs -30.1b (-257014.7%)

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

4 calls:

16.0ms
(*.f64 2 (pow.f64 x 2))
11.0ms
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
10.0ms
(pow.f64 x 2)
10.0ms
x
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
100.0%1(*.f64 2 (pow.f64 x 2))
100.0%1(pow.f64 x 2)
Compiler

Compiled 39 to 29 computations (25.6% saved)

simplify10.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047
Stop Event
done
saturated
Calls
Call 1
Inputs
(hypot.f64 x x)
Outputs
(hypot.f64 x x)
Compiler

Compiled 4 to 2 computations (50% saved)

soundness506.0ms (12.3%)

Rules
2734×sqr-pow
1306×cube-prod
1200×log-prod
1148×fma-def
1056×distribute-rgt-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11417
22517
34617
410617
532917
6123017
7209417
8223417
9240217
10259917
11287817
12324617
13369217
14422017
15486217
16564117
17596717
18624117
19644717
20650717
21653717
22747217
083816
1193816
2739816
32412688
47441688
Stop Event
node limit
node limit
Compiler

Compiled 93 to 65 computations (30.1% saved)

end0.0ms (0%)

preprocess75.0ms (1.8%)

Remove

(abs x)

Compiler

Compiled 30 to 20 computations (33.3% saved)

Profiling

Loading profile data...