sqrt A (should all be same)

Time bar (total: 2.2s)

start0.0ms (0%)

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

analyze0.0ms (0%)

Memory
0.4MiB live, 0.4MiB allocated; 0ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
100%100%0%0%0%0%0%1
Compiler

Compiled 10 to 4 computations (60% saved)

sample718.0ms (33.4%)

Memory
36.1MiB live, 962.9MiB allocated; 234ms collecting garbage
Samples
484.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 217.0ms
ival-hypot: 204.0ms (94% of total)
ival-true: 7.0ms (3.2% of total)
ival-assert: 4.0ms (1.8% of total)
adjust: 3.0ms (1.4% of total)
Bogosity

explain71.0ms (3.3%)

Memory
31.7MiB live, 125.0MiB allocated; 7ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1240-2(-1.7018849600979206e-160)(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
00-0-(+.f64 (*.f64 x x) (*.f64 x x))
00-0-(*.f64 x x)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))oflow-rescue640
(+.f64 (*.f64 x x) (*.f64 x x))overflow64
(*.f64 x x)overflow128
sqrt.f64(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))uflow-rescue580
(+.f64 (*.f64 x x) (*.f64 x x))underflow58
(*.f64 x x)underflow116
Confusion
Predicted +Predicted -
+1222
-0132
Precision
1.0
Recall
0.9838709677419355
Confusion?
Predicted +Predicted MaybePredicted -
+12202
-00132
Precision?
1.0
Recall?
0.9838709677419355
Freqs
test
numberfreq
0134
1122
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
28.0ms512×0valid
Compiler

Compiled 50 to 16 computations (68% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
ival-hypot: 9.0ms (53% of total)
ival-mult: 4.0ms (23.5% of total)
ival-add: 2.0ms (11.8% of total)
ival-true: 1.0ms (5.9% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess224.0ms (10.4%)

Memory
12.4MiB live, 154.8MiB allocated; 16ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
12919
28419
314419
429819
566319
6154219
7351819
048
076
1176
2546
31356
42646
56126
614306
753046
080683
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(hypot.f64 x x)
Symmetry

(abs x)

Compiler

Compiled 8 to 4 computations (50% 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 (*.f64 x x) (*.f64 x x)))
Compiler

Compiled 8 to 4 computations (50% saved)

simplify196.0ms (9.1%)

Memory
-36.6MiB live, 101.5MiB allocated; 21ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff2
(+.f64 (*.f64 x x) (*.f64 x x))
cost-diff3
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0419
0715
11715
25415
313515
426415
561215
6143015
7530415
0806812
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 x x)
x
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(hypot.f64 x x)
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 x x)
x

localize18.0ms (0.8%)

Memory
19.7MiB live, 19.7MiB allocated; 0ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(+.f64 (*.f64 x x) (*.f64 x x))
accuracy28.795561539218873
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Samples
13.0ms256×0valid
Compiler

Compiled 21 to 6 computations (71.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-hypot: 5.0ms (64.4% of total)
ival-mult: 2.0ms (25.8% of total)
ival-add: 1.0ms (12.9% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.2%)

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

3 calls:

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

simplify164.0ms (7.6%)

Memory
10.5MiB live, 99.7MiB allocated; 11ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01541
13441
29441
323041
447441
5135141
6563141
0821235
Stop Event
iter limit
node limit
Counts
4 → 4
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* x x))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (+ (* x x) (* x x)) #s(hole binary64 (* 2 (pow x 2))))
#s(approx (* x x) #s(hole binary64 (pow x 2)))
#s(approx (sqrt (+ (* x x) (* x x))) #s(hole binary64 (* -1 (* x (sqrt 2)))))
Outputs
#s(approx (sqrt (+ (* x x) (* x x))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (+ (* x x) (* x x)) #s(hole binary64 (* 2 (pow x 2))))
#s(approx (+ (* x x) (* x x)) (*.f64 #s(literal 2 binary64) (*.f64 x x)))
#s(approx (* x x) #s(hole binary64 (pow x 2)))
#s(approx (* x x) (*.f64 x x))
#s(approx (sqrt (+ (* x x) (* x x))) #s(hole binary64 (* -1 (* x (sqrt 2)))))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x)))

rewrite70.0ms (3.2%)

Memory
-13.7MiB live, 44.9MiB allocated; 30ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0418
0714
12910
02509
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 107
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 x x)
Outputs
(*.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 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64)) (pow.f64 (*.f64 x x) #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)))
(pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 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 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (neg.f64 (neg.f64 x)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (neg.f64 (fabs.f64 x)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (fabs.f64 (fabs.f64 x)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (neg.f64 x))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (fabs.f64 x))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) x)
(hypot.f64 (neg.f64 (neg.f64 x)) (pow.f64 x #s(literal 1 binary64)))
(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 (neg.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) (fabs.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) x)
(hypot.f64 (neg.f64 (fabs.f64 x)) (pow.f64 x #s(literal 1 binary64)))
(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 (neg.f64 (fabs.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x))
(hypot.f64 (neg.f64 (fabs.f64 x)) x)
(hypot.f64 (fabs.f64 (fabs.f64 x)) (pow.f64 x #s(literal 1 binary64)))
(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 (fabs.f64 (fabs.f64 x)) (neg.f64 x))
(hypot.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 x))
(hypot.f64 (fabs.f64 (fabs.f64 x)) x)
(hypot.f64 (neg.f64 x) (pow.f64 x #s(literal 1 binary64)))
(hypot.f64 (neg.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 (fabs.f64 x)))
(hypot.f64 (neg.f64 x) (fabs.f64 (fabs.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) (fabs.f64 x))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 (fabs.f64 x) (pow.f64 x #s(literal 1 binary64)))
(hypot.f64 (fabs.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 (fabs.f64 x) (neg.f64 (fabs.f64 x)))
(hypot.f64 (fabs.f64 x) (fabs.f64 (fabs.f64 x)))
(hypot.f64 (fabs.f64 x) (neg.f64 x))
(hypot.f64 (fabs.f64 x) (fabs.f64 x))
(hypot.f64 (fabs.f64 x) x)
(hypot.f64 x (pow.f64 x #s(literal 1 binary64)))
(hypot.f64 x (neg.f64 (neg.f64 x)))
(hypot.f64 x (neg.f64 (fabs.f64 x)))
(hypot.f64 x (fabs.f64 (fabs.f64 x)))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x (fabs.f64 x))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #s(literal 1/2 binary64)))
(*.f64 (*.f64 #s(literal 2 binary64) (neg.f64 x)) (neg.f64 x))
(*.f64 (*.f64 #s(literal 2 binary64) (fabs.f64 x)) (fabs.f64 x))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(*.f64 (neg.f64 x) (+.f64 (neg.f64 x) (neg.f64 x)))
(*.f64 (neg.f64 x) (-.f64 (neg.f64 x) x))
(*.f64 (fabs.f64 x) (+.f64 (fabs.f64 x) (fabs.f64 x)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x (-.f64 x (neg.f64 x)))
(*.f64 x (*.f64 #s(literal 2 binary64) x))
(/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 (neg.f64 x) x) #s(literal 3 binary64))) (+.f64 (pow.f64 x #s(literal 4 binary64)) (+.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (*.f64 x x) (*.f64 (neg.f64 x) x)))))
(/.f64 (neg.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64))) (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64))))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 x x))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) (*.f64 x x))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) (*.f64 x x))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) (*.f64 x x))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 x x))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 x x))
(fma.f64 x x (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 x x (*.f64 x x))
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64)) (/.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64)))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 x) x))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 x #s(literal 6 binary64)) (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 (*.f64 x x) (*.f64 (neg.f64 (neg.f64 x)) x))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(*.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)))
(*.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 x x)
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (fabs.f64 x) #s(literal 2 binary64))
(pow.f64 x #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 x) x))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))

eval12.0ms (0.6%)

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

Compiled 1 053 to 257 computations (75.6% saved)

prune7.0ms (0.3%)

Memory
-37.8MiB live, 8.6MiB allocated; 5ms collecting garbage
Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New1214125
Fresh000
Picked101
Done000
Total1224126
Accuracy
100.0%
Counts
126 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
55.0%
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
99.3%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Compiler

Compiled 29 to 21 computations (27.6% saved)

simplify152.0ms (7.1%)

Memory
27.4MiB live, 116.7MiB allocated; 10ms collecting garbage
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
cost-diff0
(hypot.f64 x x)
cost-diff0
(*.f64 #s(literal 2 binary64) x)
cost-diff0
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
cost-diff0
(sqrt.f64 x)
cost-diff0
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
cost-diff0
(*.f64 x x)
cost-diff0
(*.f64 (*.f64 x x) #s(literal 2 binary64))
cost-diff3
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
cost-diff0
(sqrt.f64 #s(literal 2 binary64))
cost-diff0
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
cost-diff0
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01654
02551
14151
28951
321451
443751
5126751
6524351
0802551
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* 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
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
x
#s(literal 2 binary64)
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(sqrt.f64 x)
x
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
(hypot.f64 x x)
x
Outputs
#s(approx (sqrt (+ (* x x) (* 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
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(hypot.f64 x x)
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 x x)
x
#s(literal 2 binary64)
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(sqrt.f64 x)
x
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
(hypot.f64 x x)
x

localize54.0ms (2.5%)

Memory
1.3MiB live, 51.6MiB allocated; 9ms collecting garbage
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
accuracy0.0078125
(hypot.f64 x x)
accuracy0.0
(*.f64 #s(literal 2 binary64) x)
accuracy0.0
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
accuracy0.0
(sqrt.f64 x)
accuracy0.34765625
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(*.f64 (*.f64 x x) #s(literal 2 binary64))
accuracy28.795561539218873
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
accuracy0.0
(sqrt.f64 #s(literal 2 binary64))
accuracy0.0
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
accuracy0.41796875
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
Samples
41.0ms256×0valid
Compiler

Compiled 61 to 14 computations (77% saved)

Precisions
Click to see histograms. Total time spent on operations: 19.0ms
ival-mult: 7.0ms (37% of total)
ival-sqrt: 6.0ms (31.7% of total)
ival-hypot: 5.0ms (26.4% 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)

series7.0ms (0.3%)

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

3 calls:

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

simplify29.0ms (1.3%)

Memory
-28.0MiB live, 17.4MiB allocated; 5ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
044142
186142
2221142
0557130
Stop Event
iter limit
iter limit
iter limit
unsound
Counts
14 → 14
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* x x))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (* (sqrt 2) x) #s(hole binary64 (* x (sqrt 2))))
#s(approx (sqrt (* (* x x) 2)) #s(hole binary64 (* x (sqrt 2))))
#s(approx (* (* x x) 2) #s(hole binary64 (* 2 (pow x 2))))
#s(approx (* x x) #s(hole binary64 (pow x 2)))
#s(approx (* (sqrt x) (sqrt (* 2 x))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (sqrt x) #s(hole binary64 (sqrt x)))
#s(approx (sqrt (* 2 x)) #s(hole binary64 (* (sqrt x) (sqrt 2))))
#s(approx (* 2 x) #s(hole binary64 (* 2 x)))
#s(approx (sqrt (+ (* x x) (* x x))) #s(hole binary64 (* -1 (* x (sqrt 2)))))
#s(approx (sqrt (* (* x x) 2)) #s(hole binary64 (* -1 (* x (sqrt 2)))))
#s(approx (* (sqrt x) (sqrt (* 2 x))) #s(hole binary64 (* -1 (* x (* (sqrt -2) (sqrt -1))))))
#s(approx (sqrt x) #s(hole binary64 (* -1 (* (sqrt x) (pow (sqrt -1) 2)))))
#s(approx (sqrt (* 2 x)) #s(hole binary64 (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))))
Outputs
#s(approx (sqrt (+ (* x x) (* x x))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (sqrt (* (* x x) 2)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (* (sqrt 2) x) #s(hole binary64 (* x (sqrt 2))))
#s(approx (* (sqrt 2) x) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (sqrt (* (* x x) 2)) #s(hole binary64 (* x (sqrt 2))))
#s(approx (sqrt (* (* x x) 2)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (* (* x x) 2) #s(hole binary64 (* 2 (pow x 2))))
#s(approx (* (* x x) 2) (*.f64 #s(literal 2 binary64) (*.f64 x x)))
#s(approx (* x x) #s(hole binary64 (pow x 2)))
#s(approx (* x x) (*.f64 x x))
#s(approx (* (sqrt x) (sqrt (* 2 x))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (* (sqrt x) (sqrt (* 2 x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (sqrt x) #s(hole binary64 (sqrt x)))
#s(approx (sqrt x) (sqrt.f64 x))
#s(approx (sqrt (* 2 x)) #s(hole binary64 (* (sqrt x) (sqrt 2))))
#s(approx (sqrt (* 2 x)) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))))
#s(approx (* 2 x) #s(hole binary64 (* 2 x)))
#s(approx (* 2 x) (*.f64 #s(literal 2 binary64) x))
#s(approx (sqrt (+ (* x x) (* x x))) #s(hole binary64 (* -1 (* x (sqrt 2)))))
#s(approx (sqrt (* (* x x) 2)) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
#s(approx (sqrt (* (* x x) 2)) #s(hole binary64 (* -1 (* x (sqrt 2)))))
#s(approx (sqrt (* (* x x) 2)) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
#s(approx (* (sqrt x) (sqrt (* 2 x))) #s(hole binary64 (* -1 (* x (* (sqrt -2) (sqrt -1))))))
#s(approx (* (sqrt x) (sqrt (* 2 x))) (*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64)))))
#s(approx (sqrt x) #s(hole binary64 (* -1 (* (sqrt x) (pow (sqrt -1) 2)))))
#s(approx (sqrt x) (sqrt.f64 x))
#s(approx (sqrt (* 2 x)) #s(hole binary64 (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))))
#s(approx (sqrt (* 2 x)) (*.f64 (neg.f64 (sqrt.f64 #s(literal -2 binary64))) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 x))))

rewrite48.0ms (2.2%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
01647
02537
16132
032132
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
11 → 79
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(sqrt.f64 x)
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
(hypot.f64 x x)
Outputs
#s(approx (sqrt (+ (* x x) (* 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)))
(*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.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)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.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)))
#s(literal 2 binary64)
(*.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 (fabs.f64 x) x)
(*.f64 x x)
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (fabs.f64 x) #s(literal 2 binary64))
(pow.f64 x #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 x) x))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (log.f64 x) #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)))
(*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.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)))
(*.f64 (pow.f64 x #s(literal 1/4 binary64)) (pow.f64 x #s(literal 1/4 binary64)))
(pow.f64 x #s(literal 1/2 binary64))
(sqrt.f64 x)
(exp.f64 (*.f64 (log.f64 x) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 (*.f64 #s(literal 2 binary64) x) #s(literal 1/4 binary64)) (pow.f64 (*.f64 #s(literal 2 binary64) x) #s(literal 1/4 binary64)))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(pow.f64 (*.f64 #s(literal 2 binary64) x) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(exp.f64 (*.f64 (log.f64 (*.f64 #s(literal 2 binary64) x)) #s(literal 1/2 binary64)))
(*.f64 #s(literal 2 binary64) x)
(*.f64 x #s(literal 2 binary64))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 #s(literal 0 binary64) (-.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)
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.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)))

eval11.0ms (0.5%)

Memory
-34.5MiB live, 10.9MiB allocated; 4ms collecting garbage
Compiler

Compiled 638 to 194 computations (69.6% saved)

prune3.0ms (0.2%)

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

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New55257
Fresh000
Picked134
Done000
Total56561
Accuracy
100.0%
Counts
61 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
55.0%
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
5.5%
(sqrt.f64 #s(literal 2 binary64))
99.3%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Compiler

Compiled 31 to 23 computations (25.8% saved)

simplify145.0ms (6.7%)

Memory
-0.5MiB live, 92.4MiB allocated; 12ms collecting garbage
Localize:

Found 5 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 x x)
cost-diff0
(sqrt.f64 (+.f64 x x))
cost-diff0
(sqrt.f64 x)
cost-diff0
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
cost-diff0
(sqrt.f64 #s(literal 2 binary64))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0720
01220
11620
22020
33120
47120
526620
6143520
7683520
0809720
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 x)
x
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
Outputs
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(sqrt.f64 x)
x
(sqrt.f64 (+.f64 x x))
(sqrt.f64 (*.f64 x #s(literal 2 binary64)))
(+.f64 x x)
(*.f64 x #s(literal 2 binary64))

localize21.0ms (1%)

Memory
23.3MiB live, 23.3MiB allocated; 0ms collecting garbage
Localize:

Found 5 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(+.f64 x x)
accuracy0.0
(sqrt.f64 (+.f64 x x))
accuracy0.0
(sqrt.f64 x)
accuracy0.34765625
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
accuracy0.0
(sqrt.f64 #s(literal 2 binary64))
Samples
15.0ms256×0valid
Compiler

Compiled 22 to 9 computations (59.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 9.0ms
ival-sqrt: 5.0ms (58.4% of total)
ival-mult: 2.0ms (23.4% of total)
ival-add: 1.0ms (11.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)

series3.0ms (0.1%)

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

3 calls:

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

simplify19.0ms (0.9%)

Memory
-32.3MiB live, 13.4MiB allocated; 5ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02969
15669
213969
033369
Stop Event
iter limit
iter limit
iter limit
unsound
Counts
7 → 7
Calls
Call 1
Inputs
#s(approx (* (sqrt x) (sqrt (+ x x))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (sqrt x) #s(hole binary64 (sqrt x)))
#s(approx (sqrt (+ x x)) #s(hole binary64 (* (sqrt x) (sqrt 2))))
#s(approx (+ x x) #s(hole binary64 (* 2 x)))
#s(approx (* (sqrt x) (sqrt (+ x x))) #s(hole binary64 (* -1 (* x (* (sqrt -2) (sqrt -1))))))
#s(approx (sqrt x) #s(hole binary64 (* -1 (* (sqrt x) (pow (sqrt -1) 2)))))
#s(approx (sqrt (+ x x)) #s(hole binary64 (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))))
Outputs
#s(approx (* (sqrt x) (sqrt (+ x x))) #s(hole binary64 (* x (sqrt 2))))
#s(approx (* (sqrt x) (sqrt (+ x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(approx (sqrt x) #s(hole binary64 (sqrt x)))
#s(approx (sqrt x) (sqrt.f64 x))
#s(approx (sqrt (+ x x)) #s(hole binary64 (* (sqrt x) (sqrt 2))))
#s(approx (sqrt (+ x x)) (*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x)))
#s(approx (+ x x) #s(hole binary64 (* 2 x)))
#s(approx (+ x x) (*.f64 #s(literal 2 binary64) x))
#s(approx (* (sqrt x) (sqrt (+ x x))) #s(hole binary64 (* -1 (* x (* (sqrt -2) (sqrt -1))))))
#s(approx (* (sqrt x) (sqrt (+ x x))) (*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64)))))
#s(approx (sqrt x) #s(hole binary64 (* -1 (* (sqrt x) (pow (sqrt -1) 2)))))
#s(approx (sqrt x) (sqrt.f64 x))
#s(approx (sqrt (+ x x)) #s(hole binary64 (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))))
#s(approx (sqrt (+ x x)) (*.f64 (neg.f64 (sqrt.f64 #s(literal -2 binary64))) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 x))))

rewrite24.0ms (1.1%)

Memory
18.8MiB live, 18.7MiB allocated; 0ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0718
01211
1319
01599
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
5 → 29
Calls
Call 1
Inputs
(sqrt.f64 #s(literal 2 binary64))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 x)
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
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 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(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 3 binary64)))) (sqrt.f64 (fma.f64 x x #s(literal 0 binary64))))
(sqrt.f64 #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/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)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(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 3 binary64)))) (sqrt.f64 (fma.f64 x x #s(literal 0 binary64))))
(sqrt.f64 #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 x #s(literal 1/4 binary64)) (pow.f64 x #s(literal 1/4 binary64)))
(pow.f64 x #s(literal 1/2 binary64))
(sqrt.f64 x)
(exp.f64 (*.f64 (log.f64 x) #s(literal 1/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)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(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 3 binary64)))) (sqrt.f64 (fma.f64 x x #s(literal 0 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)

eval2.0ms (0.1%)

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

Compiled 165 to 63 computations (61.8% saved)

prune3.0ms (0.1%)

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

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New19019
Fresh000
Picked022
Done033
Total19524
Accuracy
100.0%
Counts
24 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
55.0%
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
5.5%
(sqrt.f64 #s(literal 2 binary64))
99.3%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Compiler

Compiled 77 to 44 computations (42.9% saved)

regimes9.0ms (0.4%)

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

4 calls:

2.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%1(*.f64 x x)
100.0%1(+.f64 (*.f64 x x) (*.f64 x x))
100.0%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
100.0%1x
Compiler

Compiled 19 to 10 computations (47.4% saved)

regimes12.0ms (0.6%)

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

4 calls:

6.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
2.0ms
x
2.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
2.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
99.5%1(*.f64 x x)
99.5%1(+.f64 (*.f64 x x) (*.f64 x x))
99.5%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
99.5%1x
Compiler

Compiled 19 to 10 computations (47.4% saved)

regimes7.0ms (0.3%)

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

4 calls:

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

Compiled 19 to 10 computations (47.4% saved)

regimes4.0ms (0.2%)

Memory
8.0MiB live, 8.0MiB allocated; 0ms collecting garbage
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

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

4 calls:

1.0ms
x
1.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
1.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
5.5%1(*.f64 x x)
5.5%1(+.f64 (*.f64 x x) (*.f64 x x))
5.5%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
5.5%1x
Compiler

Compiled 19 to 10 computations (47.4% saved)

simplify43.0ms (2%)

Memory
-16.9MiB live, 29.2MiB allocated; 3ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01323
12423
26223
315423
434323
5158123
6517223
Stop Event
node limit
Calls
Call 1
Inputs
(hypot.f64 x x)
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(sqrt.f64 #s(literal 2 binary64))
Outputs
(hypot.f64 x x)
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(sqrt.f64 #s(literal 2 binary64))

derivations44.0ms (2%)

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

Compiled 25 to 13 computations (48% saved)

preprocess29.0ms (1.3%)

Memory
-18.1MiB live, 30.9MiB allocated; 8ms collecting garbage
Remove

(abs x)

Compiler

Compiled 72 to 38 computations (47.2% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...