sqrt B (should all be same)

Time bar (total: 1.1s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

analyze0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated; 0ms collecting garbage
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 8 to 7 computations (12.5% saved)

sample634.0ms (56%)

Memory
11.5MiB live, 569.5MiB allocated; 102ms collecting garbage
Samples
378.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 194.0ms
ival-mult: 125.0ms (64.5% of total)
ival-sqrt: 57.0ms (29.4% of total)
exact: 6.0ms (3.1% of total)
ival-assert: 3.0ms (1.5% of total)
adjust: 2.0ms (1% of total)
Bogosity

explain62.0ms (5.4%)

Memory
-15.3MiB live, 87.0MiB allocated; 13ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1240-1(-2.213483507942375e-160)(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))
00-0-#s(literal 2 binary64)
00-0-(*.f64 (*.f64 #s(literal 2 binary64) x) x)
00-0-(*.f64 #s(literal 2 binary64) x)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))oflow-rescue700
(*.f64 (*.f64 #s(literal 2 binary64) x) x)overflow70
sqrt.f64(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))uflow-rescue530
(*.f64 (*.f64 #s(literal 2 binary64) x) x)underflow53
Confusion
Predicted +Predicted -
+1231
-0132
Precision
1.0
Recall
0.9919354838709677
Confusion?
Predicted +Predicted MaybePredicted -
+12301
-00132
Precision?
1.0
Recall?
0.9919354838709677
Freqs
test
numberfreq
0133
1123
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
22.0ms512×0valid
Compiler

Compiled 42 to 19 computations (54.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 7.0ms (62.3% of total)
ival-sqrt: 3.0ms (26.7% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess251.0ms (22.1%)

Memory
-2.9MiB live, 136.3MiB allocated; 9ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01021
12519
26219
319619
433319
5101119
6490819
056
086
1156
2286
3906
42326
58186
642636
080383
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))
Outputs
(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))
(hypot.f64 x x)
Symmetry

(abs x)

Compiler

Compiled 6 to 5 computations (16.7% saved)

eval0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.0%
(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))
Compiler

Compiled 6 to 5 computations (16.7% saved)

series4.0ms (0.4%)

Memory
6.0MiB live, 6.0MiB allocated; 0ms collecting garbage
Counts
5 → 5
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
x
Outputs
#s(approx (sqrt (* (* 2 x) x)) #s(hole binary64 (* x (sqrt 2))))
#s(approx (* (* 2 x) x) #s(hole binary64 (* 2 (pow x 2))))
#s(approx (* 2 x) #s(hole binary64 (* 2 x)))
#s(approx x #s(hole binary64 x))
#s(approx (sqrt (* (* 2 x) x)) #s(hole binary64 (* -1 (* x (sqrt 2)))))
Calls

3 calls:

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

rewrite35.0ms (3.1%)

Memory
36.3MiB live, 36.3MiB allocated; 0ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01961
02260
14860
015051
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
10 → 58
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
x
#s(approx (sqrt (* (* 2 x) x)) #s(hole binary64 (* x (sqrt 2))))
#s(approx (* (* 2 x) x) #s(hole binary64 (* 2 (pow x 2))))
#s(approx (* 2 x) #s(hole binary64 (* 2 x)))
#s(approx x #s(hole binary64 x))
#s(approx (sqrt (* (* 2 x) x)) #s(hole binary64 (* -1 (* x (sqrt 2)))))
Outputs
(*.f64 (pow.f64 (*.f64 (*.f64 x #s(literal 2 binary64)) x) #s(literal 1/4 binary64)) (pow.f64 (*.f64 (*.f64 x #s(literal 2 binary64)) x) #s(literal 1/4 binary64)))
(*.f64 (sqrt.f64 (*.f64 x x)) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x #s(literal 2 binary64))))
(*.f64 (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(pow.f64 (*.f64 (*.f64 x #s(literal 2 binary64)) x) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (*.f64 x #s(literal 2 binary64)) x))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) (fabs.f64 x))
(hypot.f64 (neg.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 (fabs.f64 x) (neg.f64 x))
(hypot.f64 (fabs.f64 x) (fabs.f64 x))
(hypot.f64 (fabs.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (fabs.f64 x) x)
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 x))
(hypot.f64 (exp.f64 (log.f64 x)) (fabs.f64 x))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 x (neg.f64 x))
(hypot.f64 x (fabs.f64 x))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 x #s(literal 2 binary64)) x)) #s(literal 1/2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(/.f64 (-.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 (*.f64 x x) (*.f64 x x))) (-.f64 (*.f64 x x) (*.f64 x x)))
(/.f64 (+.f64 (pow.f64 (*.f64 x x) #s(literal 3 binary64)) (pow.f64 (*.f64 x x) #s(literal 3 binary64))) (fma.f64 (*.f64 x x) (*.f64 x x) (-.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 (*.f64 x x) (*.f64 x x)))))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 x x))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 x x))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 x x))
(fma.f64 #s(literal 1 binary64) (*.f64 x x) (*.f64 #s(literal 1 binary64) (*.f64 x x)))
(fma.f64 (*.f64 x x) #s(literal 1 binary64) (*.f64 (*.f64 x x) #s(literal 1 binary64)))
(fma.f64 x x (*.f64 x x))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 x) x))
(+.f64 (*.f64 #s(literal 1 binary64) (*.f64 x x)) (*.f64 #s(literal 1 binary64) (*.f64 x x)))
(+.f64 (*.f64 (*.f64 x x) #s(literal 1 binary64)) (*.f64 (*.f64 x x) #s(literal 1 binary64)))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 x #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) x)
(/.f64 (-.f64 (*.f64 x x) (*.f64 x x)) (-.f64 x x))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x (-.f64 (*.f64 x x) (*.f64 x x))))
(fma.f64 #s(literal 1 binary64) x (*.f64 #s(literal 1 binary64) x))
(fma.f64 x #s(literal 1 binary64) (*.f64 x #s(literal 1 binary64)))
(+.f64 (*.f64 #s(literal 1 binary64) x) (*.f64 #s(literal 1 binary64) x))
(+.f64 (*.f64 x #s(literal 1 binary64)) (*.f64 x #s(literal 1 binary64)))
(+.f64 x x)
#s(literal 2 binary64)
x
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (* (* 2 x) x) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
#s(approx (* 2 x) (*.f64 x #s(literal 2 binary64)))
#s(approx x x)
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))

eval26.0ms (2.3%)

Memory
-24.4MiB live, 22.8MiB allocated; 8ms collecting garbage
Compiler

Compiled 513 to 135 computations (73.7% saved)

prune12.0ms (1%)

Memory
20.2MiB live, 20.2MiB allocated; 0ms collecting garbage
Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New58260
Fresh000
Picked011
Done000
Total58361
Accuracy
100.0%
Counts
61 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 (neg.f64 x) (neg.f64 x))
55.0%
(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))
99.4%
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Compiler

Compiled 22 to 17 computations (22.7% saved)

series2.0ms (0.1%)

Memory
3.6MiB live, 3.6MiB allocated; 0ms collecting garbage
Counts
5 → 4
Calls
Call 1
Inputs
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
Outputs
#s(approx (sqrt (* (* 2 x) x)) #s(hole binary64 (* x (sqrt 2))))
#s(approx (* (sqrt 2) x) #s(hole binary64 (* x (sqrt 2))))
#s(approx x #s(hole binary64 x))
#s(approx (sqrt (* (* 2 x) x)) #s(hole binary64 (* -1 (* x (sqrt 2)))))
Calls

3 calls:

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

rewrite24.0ms (2.1%)

Memory
-21.3MiB live, 23.0MiB allocated; 4ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01755
02054
13854
010045
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
9 → 13
Calls
Call 1
Inputs
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
#s(approx (sqrt (* (* 2 x) x)) #s(hole binary64 (* x (sqrt 2))))
#s(approx (* (sqrt 2) x) #s(hole binary64 (* x (sqrt 2))))
#s(approx x #s(hole binary64 x))
#s(approx (sqrt (* (* 2 x) x)) #s(hole binary64 (* -1 (* x (sqrt 2)))))
Outputs
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(sqrt.f64 #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
#s(literal 2 binary64)
x
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (* (sqrt 2) x) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx x x)
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))

eval2.0ms (0.1%)

Memory
2.2MiB live, 2.2MiB allocated; 0ms collecting garbage
Compiler

Compiled 149 to 35 computations (76.5% saved)

prune2.0ms (0.2%)

Memory
3.5MiB live, 3.5MiB allocated; 0ms collecting garbage
Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New12012
Fresh011
Picked011
Done011
Total12315
Accuracy
100.0%
Counts
15 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 (neg.f64 x) (neg.f64 x))
55.0%
(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))
99.4%
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Compiler

Compiled 22 to 17 computations (22.7% saved)

series2.0ms (0.2%)

Memory
3.3MiB live, 3.3MiB allocated; 0ms collecting garbage
Counts
3 → 4
Calls
Call 1
Inputs
(hypot.f64 (neg.f64 x) (neg.f64 x))
(neg.f64 x)
x
Outputs
#s(approx (sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x)))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (neg x) #s(hole binary64 (* -1 x)))
#s(approx x #s(hole binary64 x))
#s(approx (sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x)))) #s(hole binary64 (* -1 (* x (sqrt 2)))))
Calls

3 calls:

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

rewrite57.0ms (5%)

Memory
1.3MiB live, 47.0MiB allocated; 4ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01739
01837
15428
041328
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
7 → 19
Calls
Call 1
Inputs
(hypot.f64 (neg.f64 x) (neg.f64 x))
(neg.f64 x)
x
#s(approx (sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x)))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (neg x) #s(hole binary64 (* -1 x)))
#s(approx x #s(hole binary64 x))
#s(approx (sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x)))) #s(hole binary64 (* -1 (* x (sqrt 2)))))
Outputs
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(*.f64 (sqrt.f64 (neg.f64 x)) (sqrt.f64 (*.f64 x #s(literal -2 binary64))))
(*.f64 (pow.f64 (neg.f64 x) #s(literal 1/2 binary64)) (pow.f64 (*.f64 x #s(literal -2 binary64)) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(/.f64 (sqrt.f64 #s(literal 0 binary64)) (sqrt.f64 #s(literal 0 binary64)))
(/.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 (neg.f64 x) #s(literal 6 binary64)))) (sqrt.f64 (+.f64 #s(literal 0 binary64) (pow.f64 (neg.f64 x) #s(literal 4 binary64)))))
(sqrt.f64 #s(literal 2 binary64))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(*.f64 #s(literal -1 binary64) x)
(*.f64 x #s(literal -1 binary64))
(neg.f64 x)
x
#s(approx (sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x)))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (neg x) (neg.f64 x))
#s(approx x x)
#s(approx (sqrt (+ (* (neg x) (neg x)) (* (neg x) (neg x)))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x)))

eval2.0ms (0.2%)

Memory
3.5MiB live, 3.5MiB allocated; 0ms collecting garbage
Compiler

Compiled 182 to 60 computations (67% saved)

prune4.0ms (0.3%)

Memory
5.2MiB live, 5.2MiB allocated; 0ms collecting garbage
Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New25025
Fresh000
Picked011
Done022
Total25328
Accuracy
100.0%
Counts
28 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 (neg.f64 x) (neg.f64 x))
55.0%
(sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) x))
99.4%
#s(approx (sqrt (* (* 2 x) x)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Compiler

Compiled 44 to 34 computations (22.7% saved)

derivations2.0ms (0.2%)

Memory
1.2MiB live, 1.2MiB allocated; 0ms collecting garbage
Stop Event
done
Compiler

Compiled 5 to 3 computations (40% saved)

preprocess13.0ms (1.1%)

Memory
-32.7MiB live, 14.2MiB allocated; 2ms collecting garbage
Remove

(abs x)

Compiler

Compiled 32 to 22 computations (31.3% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

Profiling

Loading profile data...