sqrt D (should all be same)

Time bar (total: 2.1s)

start0.0ms (0%)

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

analyze0.0ms (0%)

Memory
0.6MiB live, 0.6MiB 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 8 to 7 computations (12.5% saved)

sample786.0ms (37.4%)

Memory
-6.9MiB live, 703.4MiB allocated; 250ms collecting garbage
Samples
545.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 255.0ms
ival-pow2: 97.0ms (38.1% of total)
ival-mult: 85.0ms (33.4% of total)
ival-sqrt: 56.0ms (22% of total)
ival-true: 6.0ms (2.4% of total)
exact: 5.0ms (2% of total)
ival-assert: 3.0ms (1.2% of total)
adjust: 2.0ms (0.8% of total)
Bogosity

explain116.0ms (5.5%)

Memory
3.4MiB live, 97.5MiB allocated; 8ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1210-4(-3.222238778852059e-157)(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
00-0-(pow.f64 x #s(literal 2 binary64))
00-0-#s(literal 2 binary64)
00-0-(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))oflow-rescue620
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))overflow62
(pow.f64 x #s(literal 2 binary64))overflow62
sqrt.f64(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))uflow-rescue550
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))underflow55
(pow.f64 x #s(literal 2 binary64))underflow55
Confusion
Predicted +Predicted -
+1174
-0135
Precision
1.0
Recall
0.9669421487603306
Confusion?
Predicted +Predicted MaybePredicted -
+11704
-00135
Precision?
1.0
Recall?
0.9669421487603306
Freqs
test
numberfreq
0139
1117
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
56.0ms512×0valid
Compiler

Compiled 42 to 19 computations (54.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 38.0ms
ival-pow2: 26.0ms (67.6% of total)
ival-mult: 6.0ms (15.6% of total)
ival-sqrt: 6.0ms (15.6% of total)
ival-true: 1.0ms (2.6% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess275.0ms (13.1%)

Memory
10.8MiB live, 169.5MiB allocated; 37ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0715
11213
23913
315513
440713
5128413
6485713
056
086
1136
2346
31066
43586
510966
645306
080833
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
Outputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
(hypot.f64 x 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)

prune13.0ms (0.6%)

Memory
-45.7MiB live, 0.8MiB allocated; 4ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
56.7%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
Compiler

Compiled 6 to 5 computations (16.7% saved)

series4.0ms (0.2%)

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

3 calls:

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

simplify183.0ms (8.7%)

Memory
34.0MiB live, 181.5MiB allocated; 22ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
11818
25018
312518
439818
5130818
6489918
0808718
Stop Event
iter limit
node limit
Counts
5 → 4
Calls
Call 1
Inputs
(* x (sqrt 2))
(* 2 (pow x 2))
(pow x 2)
x
(* -1 (* x (sqrt 2)))
Outputs
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(pow x 2)
(*.f64 x x)
x
(* -1 (* x (sqrt 2)))
(*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))

rewrite60.0ms (2.9%)

Memory
-7.8MiB live, 37.4MiB allocated; 4ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0516
0816
12414
010513
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
5 → 41
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
#s(literal 2 binary64)
(pow.f64 x #s(literal 2 binary64))
x
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 #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 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 (exp.f64 (log.f64 x)) (neg.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 (exp.f64 (log.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) x) x)
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(*.f64 x (+.f64 x x))
(*.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 (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))
#s(literal 2 binary64)
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(*.f64 x x)
(pow.f64 (exp.f64 (log.f64 x)) #s(literal 2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(pow.f64 x #s(literal 2 binary64))
(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

eval4.0ms (0.2%)

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

Compiled 400 to 109 computations (72.8% saved)

prune2.0ms (0.1%)

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

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New42446
Fresh000
Picked101
Done000
Total43447
Accuracy
100.0%
Counts
47 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
52.8%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
56.8%
(sqrt.f64 (*.f64 x (+.f64 x x)))
48.7%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64)))))
Compiler

Compiled 25 to 20 computations (20% saved)

series17.0ms (0.8%)

Memory
-27.9MiB live, 25.2MiB allocated; 10ms collecting garbage
Counts
11 → 5
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64)))))
(*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
x
(neg.f64 (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 x (+.f64 x x))
(+.f64 x x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(hypot.f64 x x)
Outputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
x
(* 2 (pow x 2))
(* 2 x)
Calls

3 calls:

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

simplify156.0ms (7.4%)

Memory
8.5MiB live, 144.8MiB allocated; 16ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0918
12118
25318
313418
433618
5127218
6499118
0805218
Stop Event
iter limit
node limit
Counts
5 → 4
Calls
Call 1
Inputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
x
(* 2 (pow x 2))
(* 2 x)
Outputs
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
x
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))

rewrite58.0ms (2.8%)

Memory
-6.4MiB live, 48.1MiB allocated; 9ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01445
02427
17124
037824
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
11 → 63
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64)))))
(*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
x
(neg.f64 (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 x (+.f64 x x))
(+.f64 x x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(hypot.f64 x x)
Outputs
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (neg.f64 (sqrt.f64 #s(literal 2 binary64))) x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(neg.f64 (sqrt.f64 #s(literal 2 binary64)))
x
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (neg.f64 (sqrt.f64 #s(literal 2 binary64))) x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(neg.f64 (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 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 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))))
(/.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 (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 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 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))))
(/.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)
#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 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 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))))
(/.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 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 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))))
(/.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)))

eval4.0ms (0.2%)

Memory
9.1MiB live, 9.0MiB allocated; 0ms collecting garbage
Compiler

Compiled 455 to 114 computations (74.9% saved)

prune4.0ms (0.2%)

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

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New40343
Fresh000
Picked044
Done000
Total40747
Accuracy
100.0%
Counts
47 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
52.8%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
52.8%
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
56.8%
(sqrt.f64 (*.f64 x (+.f64 x x)))
48.7%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64)))))
48.5%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))))
1.7%
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
Compiler

Compiled 57 to 49 computations (14% saved)

series2.0ms (0.1%)

Memory
4.3MiB live, 4.3MiB allocated; 0ms collecting garbage
Counts
13 → 3
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(neg.f64 (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))))
(*.f64 x (neg.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
x
(neg.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(log.f64 #s(literal 2 binary64))
#s(literal 1/2 binary64)
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
Outputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
x
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((sqrt (* 2 (pow x 2))) (neg (sqrt 2)) (sqrt 2) 2 (sqrt (* 2 (pow x 2))) (* x (neg (exp (* (log 2) 1/2)))) x (neg (exp (* (log 2) 1/2))) (exp (* (log 2) 1/2)) (* (log 2) 1/2) (log 2) 1/2 (* (exp (* (log 2) 1/2)) x))
1.0ms
x
@-inf
((sqrt (* 2 (pow x 2))) (neg (sqrt 2)) (sqrt 2) 2 (sqrt (* 2 (pow x 2))) (* x (neg (exp (* (log 2) 1/2)))) x (neg (exp (* (log 2) 1/2))) (exp (* (log 2) 1/2)) (* (log 2) 1/2) (log 2) 1/2 (* (exp (* (log 2) 1/2)) x))
0.0ms
x
@0
((sqrt (* 2 (pow x 2))) (neg (sqrt 2)) (sqrt 2) 2 (sqrt (* 2 (pow x 2))) (* x (neg (exp (* (log 2) 1/2)))) x (neg (exp (* (log 2) 1/2))) (exp (* (log 2) 1/2)) (* (log 2) 1/2) (log 2) 1/2 (* (exp (* (log 2) 1/2)) x))

simplify173.0ms (8.2%)

Memory
14.4MiB live, 139.9MiB allocated; 27ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0610
11310
22810
33410
45310
514810
683510
7549810
0834710
Stop Event
iter limit
node limit
Counts
3 → 2
Calls
Call 1
Inputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
x
Outputs
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
x

rewrite56.0ms (2.7%)

Memory
-25.2MiB live, 35.9MiB allocated; 26ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01665
02450
14945
017140
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
13 → 55
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(neg.f64 (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))))
(*.f64 x (neg.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
x
(neg.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(log.f64 #s(literal 2 binary64))
#s(literal 1/2 binary64)
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
Outputs
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(neg.f64 (sqrt.f64 #s(literal 2 binary64)))
(+.f64 (neg.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (neg.f64 (sinh.f64 (log.f64 (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 (exp.f64 #s(literal 1/2 binary64)) (log.f64 #s(literal 2 binary64)))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(/.f64 (-.f64 (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))) (-.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))
(/.f64 (+.f64 (pow.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64)) (pow.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64))) (fma.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (-.f64 (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))))
(sqrt.f64 #s(literal 2 binary64))
(exp.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))
(+.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
(+.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
#s(literal 2 binary64)
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (hypot.f64 x x)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (neg.f64 (sqrt.f64 #s(literal 2 binary64))) x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(neg.f64 (hypot.f64 x x))
x
(neg.f64 (sqrt.f64 #s(literal 2 binary64)))
(+.f64 (neg.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (neg.f64 (sinh.f64 (log.f64 (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 (exp.f64 #s(literal 1/2 binary64)) (log.f64 #s(literal 2 binary64)))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(/.f64 (-.f64 (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))) (-.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))
(/.f64 (+.f64 (pow.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64)) (pow.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64))) (fma.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (-.f64 (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))))
(sqrt.f64 #s(literal 2 binary64))
(exp.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))
(+.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
(+.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
(*.f64 #s(literal 1/2 binary64) (log.f64 #s(literal 2 binary64)))
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(log.f64 (sqrt.f64 #s(literal 2 binary64)))
(log.f64 #s(literal 2 binary64))
#s(literal 1/2 binary64)
(*.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 #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))
(fma.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) x (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) x))
(fma.f64 x (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (*.f64 x (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 (exp.f64 (log.f64 x)) (neg.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 (exp.f64 (log.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 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) x) (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) x))
(+.f64 (*.f64 x (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 x (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))

eval5.0ms (0.3%)

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

Compiled 624 to 121 computations (80.6% saved)

prune11.0ms (0.5%)

Memory
-30.4MiB live, 14.0MiB allocated; 7ms collecting garbage
Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New54054
Fresh000
Picked033
Done044
Total54761
Accuracy
100.0%
Counts
61 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
52.8%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
52.8%
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
56.8%
(sqrt.f64 (*.f64 x (+.f64 x x)))
48.7%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64)))))
48.5%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))))
1.7%
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
Compiler

Compiled 120 to 76 computations (36.7% saved)

regimes11.0ms (0.5%)

Memory
26.5MiB live, 26.5MiB allocated; 0ms collecting garbage
Counts
8 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64)))))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(hypot.f64 x x)
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))))
Outputs
(hypot.f64 x x)
Calls

4 calls:

3.0ms
x
2.0ms
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
2.0ms
(pow.f64 x #s(literal 2 binary64))
2.0ms
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
100.0%1(pow.f64 x #s(literal 2 binary64))
100.0%1(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
100.0%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
100.0%1x
Compiler

Compiled 15 to 13 computations (13.3% saved)

regimes9.0ms (0.4%)

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

4 calls:

3.0ms
(pow.f64 x #s(literal 2 binary64))
2.0ms
x
2.0ms
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
2.0ms
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
80.2%3(pow.f64 x #s(literal 2 binary64))
80.2%3(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
80.2%3(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
99.3%2x
Compiler

Compiled 15 to 13 computations (13.3% saved)

regimes5.0ms (0.3%)

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

4 calls:

1.0ms
x
1.0ms
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
1.0ms
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
1.0ms
(pow.f64 x #s(literal 2 binary64))
Results
AccuracySegmentsBranch
52.8%1(pow.f64 x #s(literal 2 binary64))
52.8%1(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
52.8%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
52.8%1x
Compiler

Compiled 15 to 13 computations (13.3% saved)

regimes4.0ms (0.2%)

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

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

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

4 calls:

1.0ms
x
1.0ms
(pow.f64 x #s(literal 2 binary64))
1.0ms
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
1.0ms
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
1.7%1(pow.f64 x #s(literal 2 binary64))
1.7%1(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
1.7%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
1.7%1x
Compiler

Compiled 15 to 13 computations (13.3% saved)

bsearch18.0ms (0.9%)

Memory
-20.7MiB live, 24.4MiB allocated; 5ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
17.0ms
-1.8174149497926452e-291
5.569508350748552e-308
Samples
7.0ms160×0valid
Compiler

Compiled 169 to 169 computations (0% saved)

Precisions
Click to see histograms. Total time spent on operations: 4.0ms
ival-pow2: 2.0ms (50.6% of total)
ival-mult: 1.0ms (25.3% of total)
ival-sqrt: 1.0ms (25.3% 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)

simplify63.0ms (3%)

Memory
32.6MiB live, 79.4MiB allocated; 21ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01537
12737
25337
312837
439637
5221837
6736937
Stop Event
node limit
Calls
Call 1
Inputs
(hypot.f64 x x)
(if (<=.f64 x #s(literal -20240225330731/101201126653655309176247673359458653524778324882071059178450679013715169783997673445980191850718562247593538932158405955694904368692896738433506699970369254960758712138283180682233453871046608170619883839236372534281003741712346349309051677824579778170405028256179384776166707307615251266093163754323003131653853870546747392 binary64)) #s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
Outputs
(hypot.f64 x x)
(if (<=.f64 x #s(literal -20240225330731/101201126653655309176247673359458653524778324882071059178450679013715169783997673445980191850718562247593538932158405955694904368692896738433506699970369254960758712138283180682233453871046608170619883839236372534281003741712346349309051677824579778170405028256179384776166707307615251266093163754323003131653853870546747392 binary64)) #s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(if (<=.f64 x #s(literal -20240225330731/101201126653655309176247673359458653524778324882071059178450679013715169783997673445980191850718562247593538932158405955694904368692896738433506699970369254960758712138283180682233453871046608170619883839236372534281003741712346349309051677824579778170405028256179384776166707307615251266093163754323003131653853870546747392 binary64)) #s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (sqrt.f64 #s(literal 2 binary64))))

derivations42.0ms (2%)

Memory
-28.9MiB live, 18.7MiB allocated; 3ms collecting garbage
Stop Event
done
Compiler

Compiled 37 to 17 computations (54.1% saved)

preprocess19.0ms (0.9%)

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

Compiled 86 to 44 computations (48.8% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...