sqrt A (should all be same)

Time bar (total: 2.0s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
100%100%0%0%0%0%0%2
Compiler

Compiled 10 to 5 computations (50% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-add: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
const: 0.0ms (0% of total)
ival-sqrt: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

sample639.0ms (32.5%)

Results
441.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 227.0ms
ival-sqrt: 99.0ms (43.7% of total)
ival-mult: 75.0ms (33.1% of total)
ival-add: 42.0ms (18.5% of total)
const: 7.0ms (3.1% of total)
backward-pass: 3.0ms (1.3% of total)
Bogosity

preprocess25.0ms (1.3%)

Algorithm
egg-herbie
Rules
172×fmsub-define
168×fnmadd-define
162×fnmsub-define
112×fma-define
80×sum3-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0910
13210
28010
321410
440910
562710
669410
769710
043
1113
2143
3173
0173
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(sqrt (+ (* x x) (* x x)))
Outputs
(sqrt (+ (* x x) (* x x)))
(hypot.f64 x x)
Call 2
Inputs
(sqrt (+ (* x x) (* x x)))
(sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x))))
(neg (sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x)))))
Outputs
(sqrt (+ (* x x) (* x x)))
(hypot x x)
(sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x))))
(hypot x x)
(neg (sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x)))))
(neg (hypot x x))
Symmetry

(abs x)

explain68.0ms (3.5%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1190-2(2.084715917867618e-160)(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
00-0-x
00-0-(*.f64 x x)
00-0-(+.f64 (*.f64 x x) (*.f64 x x))
Results
34.0ms512×0valid
Compiler

Compiled 51 to 14 computations (72.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-mult: 6.0ms (44.6% of total)
ival-sqrt: 4.0ms (29.7% of total)
ival-add: 3.0ms (22.3% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

eval0.0ms (0%)

Compiler

Compiled 4 to 2 computations (50% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
57.0%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Compiler

Compiled 13 to 6 computations (53.8% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(hypot.f64 x x)
cost-diff0
(*.f64 x x)
cost-diff128
(+.f64 (*.f64 x x) (*.f64 x x))
cost-diff192
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Rules
14×*-lowering-*.f32
14×*-lowering-*.f64
*-commutative
+-lowering-+.f64
count-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0414
11114
21414
31714
01714
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(sqrt (+ (* x x) (* x x)))
(+ (* x x) (* x x))
(* x x)
x
(sqrt (+ (* x x) (* x x)))
x
Outputs
(sqrt (+ (* x x) (* x x)))
(hypot.f64 x x)
(+ (* x x) (* x x))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* x x)
(*.f64 x x)
x
(sqrt (+ (* x x) (* x x)))
(hypot.f64 x x)
x

localize54.0ms (2.8%)

Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(hypot.f64 x x)
accuracy100.0%
(*.f64 x x)
accuracy100.0%
(+.f64 (*.f64 x x) (*.f64 x x))
accuracy57.0%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Results
28.0ms256×0valid
Compiler

Compiled 25 to 6 computations (76% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
compiled-spec: 7.0ms (35% of total)
ival-mult: 6.0ms (30% of total)
ival-sqrt: 4.0ms (20% of total)
ival-add: 2.0ms (10% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series3.0ms (0.1%)

Counts
4 → 48
Calls
Call 1
Inputs
#<alt (sqrt (+ (* x x) (* x x)))>
#<alt (+ (* x x) (* x x))>
#<alt (* x x)>
#<alt (sqrt (+ (* x x) (* x x)))>
Outputs
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* -1 (* x (sqrt 2)))>
#<alt (* -1 (* x (sqrt 2)))>
#<alt (* -1 (* x (sqrt 2)))>
#<alt (* -1 (* x (sqrt 2)))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (* 2 (pow x 2))>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* -1 (* x (sqrt 2)))>
#<alt (* -1 (* x (sqrt 2)))>
#<alt (* -1 (* x (sqrt 2)))>
#<alt (* -1 (* x (sqrt 2)))>
Calls

12 calls:

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

rewrite61.0ms (3.1%)

Algorithm
batch-egg-rewrite
Rules
66×*-lowering-*.f32
66×*-lowering-*.f64
34×/-lowering-/.f32
34×/-lowering-/.f64
32×pow-lowering-pow.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0412
12311
017211
Stop Event
iter limit
iter limit
iter limit
unsound
Counts
4 → 40
Calls
Call 1
Inputs
(sqrt (+ (* x x) (* x x)))
(+ (* x x) (* x x))
(* x x)
(sqrt (+ (* x x) (* x x)))
Outputs
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #s(literal 1/2 binary64)))
(hypot.f64 x x)
(sqrt.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(/.f64 (sqrt.f64 (*.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) (sqrt.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64))))
(/.f64 (sqrt.f64 #s(literal 0 binary64)) (sqrt.f64 #s(literal 0 binary64)))
(pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/2 binary64))
(*.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 (*.f64 #s(literal 2 binary64) x) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/4 binary64)) (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/4 binary64)))
(+.f64 (*.f64 x x) (*.f64 x x))
(-.f64 (/.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (/.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)))
(fma.f64 x x (*.f64 x x))
(/.f64 (*.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (neg.f64 (*.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) (neg.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64))))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(/.f64 #s(literal 1 binary64) (/.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (*.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(*.f64 x (*.f64 #s(literal 2 binary64) x))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 (*.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64))))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(pow.f64 x #s(literal 2 binary64))
(*.f64 x x)
(*.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #s(literal 1/2 binary64)))
(hypot.f64 x x)
(sqrt.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(/.f64 (sqrt.f64 (*.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) (sqrt.f64 (+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64))))
(/.f64 (sqrt.f64 #s(literal 0 binary64)) (sqrt.f64 #s(literal 0 binary64)))
(pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/2 binary64))
(*.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 (*.f64 #s(literal 2 binary64) x) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/4 binary64)) (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/4 binary64)))

simplify13.0ms (0.6%)

Algorithm
egg-herbie
Rules
106×sum3-define
98×fma-define
46×fma-lowering-fma.f32
46×fma-lowering-fma.f64
38×*-lowering-*.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
08200
115176
233176
338176
442176
564176
696176
7108176
8139176
9232176
10235176
0235176
Stop Event
iter limit
saturated
Counts
48 → 48
Calls
Call 1
Inputs
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
Outputs
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) x))

eval124.0ms (6.3%)

Compiler

Compiled 814 to 94 computations (88.5% saved)

prune4.0ms (0.2%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New1031104
Fresh000
Picked112
Done000
Total1042106
Accuracy
100.0%
Counts
106 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.3%
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
Compiler

Compiled 9 to 6 computations (33.3% saved)

simplify4.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 #s(literal 2 binary64))
cost-diff0
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
Rules
*-lowering-*.f32
*-lowering-*.f64
*-commutative
sqrt-lowering-sqrt.f64
sqrt-lowering-sqrt.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
048
158
058
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* x (sqrt 2))
x
(sqrt 2)
2
Outputs
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
x
(sqrt 2)
(sqrt.f64 #s(literal 2 binary64))
2
#s(literal 2 binary64)

localize24.0ms (1.2%)

Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(sqrt.f64 #s(literal 2 binary64))
accuracy99.3%
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
Results
18.0ms256×0valid
Compiler

Compiled 10 to 5 computations (50% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-sqrt: 4.0ms (60.7% of total)
ival-mult: 2.0ms (30.3% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series0.0ms (0%)

Counts
2 → 12
Calls
Call 1
Inputs
#<alt (* x (sqrt 2))>
#<alt (sqrt 2)>
Outputs
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
Calls

3 calls:

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

rewrite91.0ms (4.6%)

Algorithm
batch-egg-rewrite
Rules
564×*-lowering-*.f32
564×*-lowering-*.f64
202×associate-*r*
150×associate-*l*
148×prod-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
046
176
2146
3346
4846
52206
010246
Stop Event
iter limit
iter limit
iter limit
unsound
Counts
2 → 55
Calls
Call 1
Inputs
(* x (sqrt 2))
(sqrt 2)
Outputs
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 3/8 binary64))))
(*.f64 (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)) (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64))))
(*.f64 (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 3/8 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 3/8 binary64)) (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64))))
(*.f64 (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 3/8 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/32 binary64)) (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/32 binary64)) (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64)))))
(*.f64 (exp.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) (*.f64 (exp.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) x))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 3/16 binary64)) (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 5/16 binary64))))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64)) (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64))))
(*.f64 (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64)))
(*.f64 (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 5/16 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 3/16 binary64)))
(*.f64 (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 3/16 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 5/16 binary64)))
(*.f64 (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 5/16 binary64)) (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 3/16 binary64))))
(*.f64 (*.f64 x (exp.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))))) (exp.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(*.f64 (*.f64 (*.f64 x (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/32 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/32 binary64)))
(exp.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(exp.f64 (*.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64)))
(exp.f64 (*.f64 (log.f64 #s(literal 16 binary64)) #s(literal 1/8 binary64)))
(sqrt.f64 #s(literal 2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(pow.f64 (sqrt.f64 #s(literal 2 binary64)) #s(literal 1 binary64))
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 #s(literal 4 binary64) #s(literal 1/4 binary64))
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) #s(literal 4 binary64))
(pow.f64 (exp.f64 #s(literal 1/2 binary64)) (log.f64 #s(literal 2 binary64)))
(pow.f64 (exp.f64 #s(literal 1/2 binary64)) (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1 binary64)))
(pow.f64 (exp.f64 #s(literal 1/2 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(pow.f64 (exp.f64 #s(literal 1/2 binary64)) (*.f64 #s(literal 2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)) #s(literal 8 binary64))
(pow.f64 #s(literal 16 binary64) #s(literal 1/8 binary64))
(pow.f64 (exp.f64 #s(literal 1/4 binary64)) (log.f64 #s(literal 4 binary64)))
(pow.f64 (exp.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) #s(literal 2 binary64))
(pow.f64 (*.f64 (exp.f64 #s(literal 1/4 binary64)) (exp.f64 #s(literal 1/4 binary64))) (log.f64 #s(literal 2 binary64)))
(pow.f64 (*.f64 (exp.f64 #s(literal 1/2 binary64)) (exp.f64 #s(literal 1/2 binary64))) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 3/8 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 3/8 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 3/8 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/32 binary64)) (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/32 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64))))
(*.f64 (exp.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) (exp.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 3/16 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 5/16 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 5/16 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 3/16 binary64)))
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)) #s(literal 1 binary64)) (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 3/8 binary64)) #s(literal 1 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)))
(*.f64 (pow.f64 (exp.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) #s(literal 1 binary64)) (pow.f64 (exp.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) #s(literal 1 binary64)))
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64)) #s(literal 1 binary64)) (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)) #s(literal 1 binary64)))
(*.f64 (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 7/16 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/32 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/32 binary64)))

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-lowering-*.f32
*-lowering-*.f64
*-commutative
sqrt-lowering-sqrt.f64
sqrt-lowering-sqrt.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0448
1548
0548
Stop Event
iter limit
saturated
Counts
12 → 12
Calls
Call 1
Inputs
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
Outputs
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))

eval8.0ms (0.4%)

Compiler

Compiled 562 to 147 computations (73.8% saved)

prune6.0ms (0.3%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New66167
Fresh000
Picked011
Done011
Total66369
Accuracy
100.0%
Counts
69 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.1%
(*.f64 x (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)))
99.3%
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
Compiler

Compiled 17 to 12 computations (29.4% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
cost-diff0
(*.f64 x (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)))
cost-diff6528
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
Rules
14×*-lowering-*.f32
14×*-lowering-*.f64
*-commutative
pow-lowering-pow.f64
pow-lowering-pow.f32
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0618
1814
21612
31812
01812
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* x (pow (pow 2 1/4) 2))
x
(pow (pow 2 1/4) 2)
(pow 2 1/4)
2
1/4
Outputs
(* x (pow (pow 2 1/4) 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
x
(pow (pow 2 1/4) 2)
(sqrt.f64 #s(literal 2 binary64))
(pow 2 1/4)
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
2
#s(literal 2 binary64)
1/4
#s(literal 1/4 binary64)

localize46.0ms (2.3%)

Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
accuracy99.3%
(*.f64 x (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)))
accuracy98.4%
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
Results
38.0ms256×0valid
Compiler

Compiled 20 to 7 computations (65% saved)

Precisions
Click to see histograms. Total time spent on operations: 24.0ms
ival-pow: 12.0ms (49.4% of total)
ival-mult: 11.0ms (45.3% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series0.0ms (0%)

Counts
3 → 12
Calls
Call 1
Inputs
#<alt (pow (pow 2 1/4) 2)>
#<alt (* x (pow (pow 2 1/4) 2))>
#<alt (pow 2 1/4)>
Outputs
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
#<alt (* x (sqrt 2))>
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(* x (pow (pow 2 1/4) 2))
0.0ms
x
@inf
(* x (pow (pow 2 1/4) 2))
0.0ms
x
@-inf
(* x (pow (pow 2 1/4) 2))

rewrite68.0ms (3.5%)

Algorithm
batch-egg-rewrite
Rules
130×associate-*r*
118×prod-exp
114×associate-*l*
110×prod-diff
78×unpow-prod-down
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0611
1258
2848
32765
016295
Stop Event
iter limit
iter limit
iter limit
unsound
Counts
3 → 6
Calls
Call 1
Inputs
(pow (pow 2 1/4) 2)
(* x (pow (pow 2 1/4) 2))
(pow 2 1/4)
Outputs
#s(literal 1 binary64)
(*.f64 #s(literal 1 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 1 binary64) x))
(*.f64 x #s(literal 1 binary64))
(*.f64 (*.f64 #s(literal 1 binary64) x) #s(literal 1 binary64))
#s(literal 1 binary64)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-lowering-*.f32
*-lowering-*.f64
*-commutative
sqrt-lowering-sqrt.f64
sqrt-lowering-sqrt.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0448
1548
0548
Stop Event
iter limit
saturated
Counts
12 → 12
Calls
Call 1
Inputs
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
Outputs
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))

eval2.0ms (0.1%)

Compiler

Compiled 73 to 11 computations (84.9% saved)

prune2.0ms (0.1%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New17118
Fresh000
Picked011
Done022
Total17421
Accuracy
100.0%
Counts
21 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.1%
(*.f64 x (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)))
99.3%
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
20.3%
(*.f64 x #s(literal 1 binary64))
Compiler

Compiled 21 to 15 computations (28.6% saved)

simplify4.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
cost-diff128
(*.f64 x #s(literal 1 binary64))
Rules
*-lowering-*.f32
*-lowering-*.f64
*-commutative
*-rgt-identity
1-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
033
163
273
073
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* x 1)
x
1
Outputs
(* x 1)
x
x
1
#s(literal 1 binary64)

localize24.0ms (1.2%)

Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 x #s(literal 1 binary64))
Results
17.0ms256×0valid
Compiler

Compiled 7 to 4 computations (42.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 2.0ms
ival-mult: 2.0ms (85.2% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series1.0ms (0%)

Counts
1 → 12
Calls
Call 1
Inputs
#<alt (* x 1)>
Outputs
#<alt x>
#<alt x>
#<alt x>
#<alt x>
#<alt x>
#<alt x>
#<alt x>
#<alt x>
#<alt x>
#<alt x>
#<alt x>
#<alt x>
Calls

3 calls:

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

rewrite26.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
*-lowering-*.f32
*-lowering-*.f64
*-rgt-identity
*-commutative
1-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
031
161
271
071
Stop Event
iter limit
saturated
Counts
1 → 3
Calls
Call 1
Inputs
(* x 1)
Outputs
x
(*.f64 x #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) x)

simplify4.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0112
0112
Stop Event
saturated
saturated
Counts
12 → 12
Calls
Call 1
Inputs
x
x
x
x
x
x
x
x
x
x
x
x
Outputs
x
x
x
x
x
x
x
x
x
x
x
x

eval1.0ms (0.1%)

Compiler

Compiled 20 to 4 computations (80% saved)

prune3.0ms (0.1%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New14115
Fresh000
Picked101
Done033
Total15419
Accuracy
100.0%
Counts
19 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.1%
(*.f64 x (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)))
99.3%
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
20.3%
x
Compiler

Compiled 46 to 27 computations (41.3% saved)

regimes15.0ms (0.8%)

Counts
6 → 1
Calls
Call 1
Inputs
x
(*.f64 x #s(literal 1 binary64))
(hypot.f64 x x)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(*.f64 x (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)))
Outputs
(hypot.f64 x x)
Calls

4 calls:

8.0ms
x
2.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
2.0ms
(*.f64 x x)
2.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
100.0%1(+.f64 (*.f64 x x) (*.f64 x x))
100.0%1(*.f64 x x)
Compiler

Compiled 23 to 10 computations (56.5% saved)

regimes2.0ms (0.1%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
2 → 1
Calls
Call 1
Inputs
x
(*.f64 x #s(literal 1 binary64))
Outputs
x
Calls

1 calls:

1.0ms
x
Results
AccuracySegmentsBranch
20.3%1x
Compiler

Compiled 2 to 1 computations (50% saved)

simplify6.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
024
Stop Event
saturated
Calls
Call 1
Inputs
(hypot.f64 x x)
x
Outputs
(hypot.f64 x x)
x

soundness560.0ms (28.5%)

Rules
564×*-lowering-*.f32
564×*-lowering-*.f64
202×associate-*r*
150×associate-*l*
148×prod-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0611
1258
2848
32765
016295
046
176
2146
3346
4846
52206
010246
031
161
271
071
08200
115176
233176
338176
442176
564176
696176
7108176
8139176
9232176
10235176
0235176
043
1113
2143
3173
0173
Stop Event
fuel
iter limit
saturated
iter limit
saturated
iter limit
saturated
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
iter limit
unsound
Compiler

Compiled 24 to 15 computations (37.5% saved)

preprocess57.0ms (2.9%)

Remove

(abs x)

Compiler

Compiled 44 to 20 computations (54.5% saved)

end0.0ms (0%)

Profiling

Loading profile data...