sqrt C (should all be same)

Time bar (total: 1.2s)

start0.0ms (0%)

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

analyze0.0ms (0%)

Memory
0.2MiB live, 0.2MiB 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)

sample612.0ms (51.6%)

Memory
-8.7MiB live, 693.7MiB allocated; 130ms collecting garbage
Samples
382.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 204.0ms
ival-mult: 137.0ms (67.2% of total)
ival-sqrt: 56.0ms (27.5% of total)
exact: 6.0ms (2.9% of total)
ival-assert: 3.0ms (1.5% of total)
adjust: 2.0ms (1% of total)
Bogosity

explain96.0ms (8.1%)

Memory
-23.9MiB live, 96.1MiB allocated; 79ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1240-1(-2.213483507942375e-160)(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
00-0-#s(literal 2 binary64)
00-0-(*.f64 x x)
00-0-(*.f64 #s(literal 2 binary64) (*.f64 x x))
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))oflow-rescue700
(*.f64 #s(literal 2 binary64) (*.f64 x x))overflow70
(*.f64 x x)overflow69
sqrt.f64(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))uflow-rescue530
(*.f64 #s(literal 2 binary64) (*.f64 x x))underflow53
(*.f64 x x)underflow53
Confusion
Predicted +Predicted -
+1232
-0131
Precision
1.0
Recall
0.984
Confusion?
Predicted +Predicted MaybePredicted -
+12302
-00131
Precision?
1.0
Recall?
0.984
Freqs
test
numberfreq
0133
1123
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
23.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 (61% of total)
ival-sqrt: 3.0ms (26.1% 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)

preprocess298.0ms (25.1%)

Memory
10.3MiB live, 149.6MiB allocated; 13ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01019
12819
29019
318519
457819
5131419
6497519
056
086
1186
2616
31826
45016
512346
647306
779156
084953
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
Outputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 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.5MiB live, 0.5MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.0%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
Compiler

Compiled 6 to 5 computations (16.7% saved)

series4.0ms (0.3%)

Memory
3.9MiB live, 3.9MiB allocated; 0ms collecting garbage
Counts
5 → 5
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
#s(literal 2 binary64)
(*.f64 x x)
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 (* x x) #s(hole binary64 (pow x 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
2.0ms
x
@inf
((sqrt (* 2 (* x x))) (* 2 (* x x)) 2 (* x x) x)
1.0ms
x
@0
((sqrt (* 2 (* x x))) (* 2 (* x x)) 2 (* x x) x)
1.0ms
x
@-inf
((sqrt (* 2 (* x x))) (* 2 (* x x)) 2 (* x x) x)

rewrite55.0ms (4.6%)

Memory
-17.2MiB live, 32.5MiB allocated; 6ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01961
02260
15054
017149
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
10 → 65
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
#s(literal 2 binary64)
(*.f64 x x)
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 (* x x) #s(hole binary64 (pow x 2)))
#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 x) #s(literal 2 binary64)) #s(literal 1/4 binary64)) (pow.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)) #s(literal 1/4 binary64)))
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(*.f64 (pow.f64 (*.f64 x #s(literal 2 binary64)) #s(literal 1/2 binary64)) (pow.f64 x #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(pow.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) x)
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 x))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (neg.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 x (neg.f64 (neg.f64 x)))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #s(literal 1/2 binary64)))
(*.f64 (*.f64 #s(literal 2 binary64) (neg.f64 x)) (neg.f64 x))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 (neg.f64 x) (*.f64 (neg.f64 x) #s(literal 2 binary64)))
(*.f64 (neg.f64 x) (fma.f64 #s(literal -1 binary64) x (neg.f64 x)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.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 (neg.f64 x)) (neg.f64 (neg.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 (neg.f64 x) (neg.f64 x) (*.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 x (neg.f64 x)))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 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))
#s(literal 2 binary64)
(*.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 x x)
(pow.f64 (exp.f64 (log.f64 x)) #s(literal 2 binary64))
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(pow.f64 x #s(literal 2 binary64))
(neg.f64 (*.f64 x (neg.f64 x)))
(neg.f64 (*.f64 (neg.f64 x) x))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))
x
#s(approx (sqrt (* 2 (* x x))) (hypot.f64 x x))
#s(approx (* 2 (* x x)) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
#s(approx (* x x) (*.f64 x x))
#s(approx x x)
#s(approx (sqrt (* 2 (* x x))) (neg.f64 (hypot.f64 x x)))

eval7.0ms (0.6%)

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

Compiled 563 to 158 computations (71.9% saved)

prune15.0ms (1.2%)

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

3 alts after pruning (2 fresh and 1 done)

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

Compiled 17 to 13 computations (23.5% saved)

series1.0ms (0.1%)

Memory
1.7MiB live, 1.7MiB allocated; 0ms collecting garbage
Counts
4 → 2
Calls
Call 1
Inputs
(*.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) #s(hole binary64 (* x (sqrt 2))))
#s(approx x #s(hole binary64 x))
Calls

3 calls:

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

rewrite20.0ms (1.7%)

Memory
-36.4MiB live, 10.0MiB allocated; 3ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0920
01120
11620
03420
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
6 → 10
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
#s(approx (* (sqrt 2) x) #s(hole binary64 (* x (sqrt 2))))
#s(approx x #s(hole binary64 x))
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)) (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) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
#s(approx x x)

eval1.0ms (0.1%)

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

Compiled 56 to 22 computations (60.7% saved)

prune1.0ms (0.1%)

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

3 alts after pruning (1 fresh and 2 done)

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

Compiled 17 to 13 computations (23.5% saved)

series2.0ms (0.1%)

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

3 calls:

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

rewrite50.0ms (4.2%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
02053
02535
16832
033332
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
9 → 21
Calls
Call 1
Inputs
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(neg.f64 (neg.f64 x))
(neg.f64 x)
x
#s(approx (sqrt (+ (* (neg (neg x)) (neg (neg x))) (* (neg (neg x)) (neg (neg x))))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (neg (neg x)) #s(hole binary64 x))
#s(approx (neg x) #s(hole binary64 (* -1 x)))
#s(approx x #s(hole binary64 x))
#s(approx (sqrt (+ (* (neg (neg x)) (neg (neg x))) (* (neg (neg x)) (neg (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 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 (*.f64 #s(literal 2 binary64) x) #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 x #s(literal 6 binary64)))) (sqrt.f64 (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64)))))
(sqrt.f64 #s(literal 2 binary64))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
x
(*.f64 #s(literal -1 binary64) x)
(*.f64 x #s(literal -1 binary64))
(neg.f64 x)
x
#s(approx (sqrt (+ (* (neg (neg x)) (neg (neg x))) (* (neg (neg x)) (neg (neg x))))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (neg (neg x)) x)
#s(approx (neg x) (neg.f64 x))
#s(approx (neg (neg x)) x)
#s(approx (sqrt (+ (* (neg (neg x)) (neg (neg x))) (* (neg (neg x)) (neg (neg x))))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x)))

eval3.0ms (0.2%)

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

Compiled 204 to 66 computations (67.6% saved)

prune5.0ms (0.4%)

Memory
5.5MiB live, 5.5MiB 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 (neg.f64 x)) (neg.f64 (neg.f64 x)))
99.4%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
55.0%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
Compiler

Compiled 34 to 26 computations (23.5% saved)

derivations2.0ms (0.1%)

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

Compiled 7 to 4 computations (42.9% saved)

preprocess14.0ms (1.2%)

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

(abs x)

Compiler

Compiled 40 to 26 computations (35% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...