sqrt C (should all be same)

Time bar (total: 1.4s)

start0.0ms (0%)

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

analyze0.0ms (0%)

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

sample532.0ms (37.5%)

Memory
-9.3MiB live, 361.7MiB allocated; 131ms collecting garbage
Samples
329.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 167.0ms
ival-mult!: 85.0ms (51% of total)
ival-sqrt: 80.0ms (48% of total)
adjust: 2.0ms (1.2% of total)
Bogosity

preprocess123.0ms (8.6%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01019
13519
211419
325219
4107019
5720719
Stop Event
node-limit
Alt Table
Click to see full alt table
StatusAccuracyProgram
49.3%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
Symmetry

(abs x)

Compiler

Compiled 12 to 10 computations (16.7% saved)

series67.0ms (4.7%)

Memory
15.0MiB live, 15.0MiB 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))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
#s(approx (* 2 (* x x)) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
#s(approx (* x x) (pow.f64 x #s(literal 2 binary64)))
#s(approx x x)
#s(approx (sqrt (* 2 (* x x))) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))))
Calls

3 calls:

TimeVariablePoint
1.0ms
x
-inf
1.0ms
x
inf
1.0ms
x
0

rewrite146.0ms (10.3%)

Memory
-23.3MiB live, 25.5MiB allocated; 14ms collecting garbage
Counts
5 → 26
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
(fabs.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x))))
(hypot.f64 x x)
(hypot.f64 (neg.f64 x) x)
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) (fabs.f64 x))
(hypot.f64 (fabs.f64 x) x)
(hypot.f64 (fabs.f64 x) (neg.f64 x))
(hypot.f64 (fabs.f64 x) (fabs.f64 x))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x (fabs.f64 x))
(pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 (*.f64 #s(literal 2 binary64) 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 x x (*.f64 x x))
#s(literal 2 binary64)
(+.f64 #s(literal 1 binary64) #s(literal 1 binary64))
(*.f64 x x)
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 (neg.f64 x) (neg.f64 x))
(pow.f64 x #s(literal 2 binary64))
x

eval6.0ms (0.4%)

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

Compiled 184 to 64 computations (65.2% saved)

prune4.0ms (0.3%)

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

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New23326
Fresh000
Picked011
Done000
Total23427
Accuracy
100.0%
Counts
27 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
49.3%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
99.3%
#s(approx (sqrt (* 2 (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
2.1%
#s(approx (sqrt (* 2 (* x x))) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))))
Compiler

Compiled 33 to 27 computations (18.2% saved)

series72.0ms (5.1%)

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

3 calls:

TimeVariablePoint
3.0ms
x
inf
3.0ms
x
-inf
2.0ms
x
0

rewrite172.0ms (12.1%)

Memory
-14.6MiB live, 32.0MiB allocated; 8ms collecting garbage
Counts
9 → 85
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))))
(*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
#s(literal -1 binary64)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
x
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
#s(approx (sqrt (* 2 (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(hypot.f64 x x)
Outputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 x #s(literal -2 binary64)))
(*.f64 x #s(literal -2 binary64))
(*.f64 #s(literal -2 binary64) x)
(*.f64 #s(literal -1 binary64) (+.f64 x x))
(*.f64 (+.f64 x x) #s(literal -1 binary64))
(*.f64 (neg.f64 x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (neg.f64 x))
(+.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (*.f64 #s(literal 1 binary64) (neg.f64 x)))
(+.f64 (*.f64 (neg.f64 x) #s(literal 1 binary64)) (*.f64 (neg.f64 x) #s(literal 1 binary64)))
(fma.f64 #s(literal 1 binary64) (neg.f64 x) (*.f64 #s(literal 1 binary64) (neg.f64 x)))
(fma.f64 (neg.f64 x) #s(literal 1 binary64) (*.f64 (neg.f64 x) #s(literal 1 binary64)))
(neg.f64 (+.f64 x x))
#s(literal -1 binary64)
(neg.f64 #s(literal 1 binary64))
(*.f64 x #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) x)
(+.f64 x x)
(+.f64 (*.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 x (neg.f64 x))
(fma.f64 x #s(literal 1 binary64) (*.f64 x #s(literal 1 binary64)))
(fma.f64 #s(literal 1 binary64) x (*.f64 #s(literal 1 binary64) x))
x
#s(literal 2 binary64)
(*.f64 #s(literal 2 binary64) #s(literal 1 binary64))
(fabs.f64 #s(literal 2 binary64))
(fabs.f64 #s(literal -2 binary64))
(+.f64 #s(literal 1 binary64) #s(literal 1 binary64))
(-.f64 #s(literal 1 binary64) #s(literal -1 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
(sqrt.f64 #s(literal 2 binary64))
(sqrt.f64 #s(literal 4 binary64))
#s(literal 2 binary64)
(*.f64 #s(literal 2 binary64) #s(literal 1 binary64))
(fabs.f64 #s(literal 2 binary64))
(fabs.f64 #s(literal -2 binary64))
(+.f64 #s(literal 1 binary64) #s(literal 1 binary64))
(-.f64 #s(literal 1 binary64) #s(literal -1 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
(sqrt.f64 #s(literal 2 binary64))
(sqrt.f64 #s(literal 4 binary64))
#s(approx (sqrt (* 2 (* x x))) (+.f64 x x))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 x x) x)))
(fabs.f64 (neg.f64 (sqrt.f64 (*.f64 (+.f64 x x) x))))
(hypot.f64 x x)
(hypot.f64 (neg.f64 x) x)
(hypot.f64 (neg.f64 x) (fabs.f64 x))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (fabs.f64 x) x)
(hypot.f64 (fabs.f64 x) (fabs.f64 x))
(hypot.f64 (fabs.f64 x) (neg.f64 x))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x (fabs.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) x)
(hypot.f64 (neg.f64 (neg.f64 x)) (fabs.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 (fabs.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (fabs.f64 (fabs.f64 x)))
(hypot.f64 (neg.f64 (fabs.f64 x)) x)
(hypot.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x))
(hypot.f64 (neg.f64 (fabs.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)))
(hypot.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)))
(hypot.f64 (fabs.f64 (fabs.f64 x)) x)
(hypot.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 x))
(hypot.f64 (fabs.f64 (fabs.f64 x)) (neg.f64 x))
(hypot.f64 (fabs.f64 (fabs.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (fabs.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)))
(hypot.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)))
(hypot.f64 x (neg.f64 (neg.f64 x)))
(hypot.f64 (fabs.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 x (neg.f64 (fabs.f64 x)))
(hypot.f64 (fabs.f64 x) (neg.f64 (fabs.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 (fabs.f64 x)))
(hypot.f64 x (fabs.f64 (fabs.f64 x)))
(hypot.f64 (fabs.f64 x) (fabs.f64 (fabs.f64 x)))
(hypot.f64 (neg.f64 x) (fabs.f64 (fabs.f64 x)))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(sqrt.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 x x) x)) (sqrt.f64 (*.f64 (+.f64 x x) x))))

eval17.0ms (1.2%)

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

Compiled 901 to 174 computations (80.7% saved)

prune8.0ms (0.6%)

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

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New89392
Fresh000
Picked033
Done101
Total90696
Accuracy
100.0%
Counts
96 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
49.3%
(sqrt.f64 (*.f64 (+.f64 x x) x))
20.3%
#s(approx (sqrt (* 2 (* x x))) (+.f64 x x))
99.3%
#s(approx (sqrt (* 2 (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
2.1%
#s(approx (sqrt (* 2 (* x x))) (*.f64 x #s(literal -2 binary64)))
2.1%
#s(approx (sqrt (* 2 (* x x))) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))))
Compiler

Compiled 53 to 41 computations (22.6% saved)

series72.0ms (5.1%)

Memory
-32.0MiB live, 15.1MiB allocated; 4ms collecting garbage
Counts
8 → 6
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 x #s(literal -2 binary64)))
(*.f64 x #s(literal -2 binary64))
x
#s(literal -2 binary64)
#s(approx (sqrt (* 2 (* x x))) (+.f64 x x))
(+.f64 x x)
(sqrt.f64 (*.f64 (+.f64 x x) x))
(*.f64 (+.f64 x x) x)
Outputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
#s(approx (* x -2) (*.f64 #s(literal -2 binary64) x))
#s(approx x x)
#s(approx (+ x x) (*.f64 #s(literal 2 binary64) x))
#s(approx (* (+ x x) x) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
#s(approx (sqrt (* 2 (* x x))) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))))
Calls

3 calls:

TimeVariablePoint
3.0ms
x
inf
2.0ms
x
-inf
2.0ms
x
0

rewrite121.0ms (8.6%)

Memory
29.4MiB live, 29.4MiB allocated; 0ms collecting garbage
Counts
8 → 29
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 x #s(literal -2 binary64)))
(*.f64 x #s(literal -2 binary64))
x
#s(literal -2 binary64)
#s(approx (sqrt (* 2 (* x x))) (+.f64 x x))
(+.f64 x x)
(sqrt.f64 (*.f64 (+.f64 x x) x))
(*.f64 (+.f64 x x) x)
Outputs
#s(approx (sqrt (* (* x x) 2)) (*.f64 x #s(literal -2 binary64)))
(*.f64 x #s(literal -2 binary64))
(*.f64 #s(literal -2 binary64) x)
x
#s(literal -2 binary64)
#s(approx (sqrt (* (* x x) 2)) (+.f64 x x))
(*.f64 #s(literal 2 binary64) x)
(+.f64 x x)
(-.f64 x (neg.f64 x))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 x x) x)))
(hypot.f64 x x)
(hypot.f64 (neg.f64 x) x)
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) (fabs.f64 x))
(hypot.f64 (fabs.f64 x) x)
(hypot.f64 (fabs.f64 x) (neg.f64 x))
(hypot.f64 (fabs.f64 x) (fabs.f64 x))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x (fabs.f64 x))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(*.f64 (+.f64 x x) x)
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 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 x x (*.f64 x x))

eval4.0ms (0.3%)

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

Compiled 253 to 74 computations (70.8% saved)

prune3.0ms (0.2%)

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

6 alts after pruning (0 fresh and 6 done)

PrunedKeptTotal
New31031
Fresh000
Picked033
Done033
Total31637
Accuracy
100.0%
Counts
37 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
49.3%
(sqrt.f64 (*.f64 (+.f64 x x) x))
20.3%
#s(approx (sqrt (* 2 (* x x))) (+.f64 x x))
99.3%
#s(approx (sqrt (* 2 (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
2.1%
#s(approx (sqrt (* 2 (* x x))) (*.f64 x #s(literal -2 binary64)))
2.1%
#s(approx (sqrt (* 2 (* x x))) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))))
Compiler

Compiled 53 to 41 computations (22.6% saved)

regimes41.0ms (2.9%)

Memory
-26.4MiB live, 24.7MiB allocated; 7ms collecting garbage
Accuracy

Total -11.7b remaining (-22.7%)

Threshold costs -11.7b (-22.7%)

Counts
2 → 1
6 → 1
7 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (* x x))) (+.f64 x x))
#s(approx (sqrt (* 2 (* x x))) (*.f64 x #s(literal -2 binary64)))
Outputs
#s(approx (sqrt (* 2 (* x x))) (+.f64 x x))
Call 2
Inputs
#s(approx (sqrt (* 2 (* x x))) (+.f64 x x))
#s(approx (sqrt (* 2 (* x x))) (*.f64 x #s(literal -2 binary64)))
#s(approx (sqrt (* 2 (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (*.f64 (+.f64 x x) x))
#s(approx (sqrt (* 2 (* x x))) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))))
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
Outputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
Call 3
Inputs
#s(approx (sqrt (* 2 (* x x))) (+.f64 x x))
#s(approx (sqrt (* 2 (* x x))) (*.f64 x #s(literal -2 binary64)))
#s(approx (sqrt (* 2 (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (*.f64 (+.f64 x x) x))
#s(approx (sqrt (* 2 (* x x))) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))))
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
(hypot.f64 x x)
Outputs
(hypot.f64 x x)
Calls

12 calls:

8.0ms
(*.f64 x x)
4.0ms
x
3.0ms
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
3.0ms
(*.f64 #s(literal 2 binary64) (*.f64 x x))
3.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
20.3%1(*.f64 x x)
20.3%1(*.f64 #s(literal 2 binary64) (*.f64 x x))
20.3%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
20.3%1x
99.3%1(*.f64 x x)
99.3%1(*.f64 #s(literal 2 binary64) (*.f64 x x))
99.3%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
99.3%1x
100.0%1(*.f64 x x)
100.0%1(*.f64 #s(literal 2 binary64) (*.f64 x x))
100.0%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
100.0%1x
Compiler

Compiled 104 to 59 computations (43.3% saved)

derivations1.0ms (0.1%)

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

Compiled 24 to 12 computations (50% saved)

preprocess27.0ms (1.9%)

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

Compiled 78 to 53 computations (32.1% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...