sqrt D (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.7MiB live, 0.7MiB 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)

sample829.0ms (67.3%)

Memory
45.4MiB live, 731.9MiB allocated; 853ms collecting garbage
Samples
395.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 199.0ms
ival-pow2: 92.0ms (46.2% of total)
ival-sqrt: 67.0ms (33.7% of total)
ival-mult!: 39.0ms (19.6% of total)
adjust: 1.0ms (0.5% of total)
Bogosity

preprocess101.0ms (8.2%)

Memory
-25.6MiB live, 19.8MiB allocated; 6ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01020
12319
26919
324019
487719
5530919
Stop Event
node-limit
Alt Table
Click to see full alt table
StatusAccuracyProgram
52.8%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
Symmetry

(abs x)

Compiler

Compiled 12 to 10 computations (16.7% saved)

series6.0ms (0.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01445
Stop Event
iter-limit
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
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
#s(approx (* 2 (pow x 2)) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
#s(approx (pow x 2) (pow.f64 x #s(literal 2 binary64)))
#s(approx x x)
#s(approx (sqrt (* 2 (pow x 2))) (*.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

rewrite68.0ms (5.5%)

Memory
-12.2MiB live, 43.6MiB allocated; 86ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0516
0816
12515
012313
Stop Event
iter-limit
iter-limit
iter-limit
unsound
iter-limit
Counts
5 → 56
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 x (+.f64 x x)) #s(literal 1/4 binary64)) (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)))
(*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64))) (*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(fabs.f64 (neg.f64 (*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))))
(fabs.f64 (*.f64 (fabs.f64 x) (sqrt.f64 #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) (fabs.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)) (fabs.f64 x))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (fabs.f64 x) (neg.f64 x))
(hypot.f64 (fabs.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (fabs.f64 x) (fabs.f64 x))
(hypot.f64 (fabs.f64 x) x)
(hypot.f64 x (neg.f64 x))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x (fabs.f64 x))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (*.f64 x (+.f64 x x))) #s(literal 1/2 binary64)))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 x x) (*.f64 x x))) (*.f64 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 (fabs.f64 x) (fabs.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 x x) (neg.f64 (*.f64 x x)))
(+.f64 (*.f64 (*.f64 x x) #s(literal 1 binary64)) (*.f64 (*.f64 x x) #s(literal 1 binary64)))
(+.f64 (*.f64 #s(literal 1 binary64) (*.f64 x x)) (*.f64 #s(literal 1 binary64) (*.f64 x x)))
(+.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 (fabs.f64 x) (fabs.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))
(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

eval5.0ms (0.4%)

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

Compiled 494 to 141 computations (71.5% saved)

prune3.0ms (0.3%)

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

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New53558
Fresh000
Picked101
Done000
Total54559
Accuracy
100.0%
Counts
59 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
52.6%
(*.f64 (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)) (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)))
99.3%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
52.8%
(sqrt.f64 (*.f64 x (+.f64 x x)))
99.3%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
Compiler

Compiled 80 to 52 computations (35% saved)

series53.0ms (4.3%)

Memory
-1.0MiB live, 88.8MiB allocated; 16ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056201
Stop Event
iter-limit
Counts
14 → 13
Calls
Call 1
Inputs
(hypot.f64 x x)
x
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(fabs.f64 x)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 x (+.f64 x x))
(+.f64 x x)
(*.f64 (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)) (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)))
(pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64))
#s(literal 1/4 binary64)
Outputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
#s(approx x x)
#s(approx (* (sqrt 2) (fabs x)) (*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64))))
#s(approx (fabs x) (fabs.f64 x))
#s(approx (* x (+ x x)) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
#s(approx (+ x x) (*.f64 #s(literal 2 binary64) x))
#s(approx (* (pow (* x (+ x x)) 1/4) (pow (* x (+ x x)) 1/4)) (pow.f64 (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (log.f64 x))))) #s(literal 2 binary64)))
#s(approx (pow (* x (+ x x)) 1/4) (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (log.f64 x))))))
#s(approx (* (pow (* x (+ x x)) 1/4) (pow (* x (+ x x)) 1/4)) (pow.f64 (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal -2 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)))))) #s(literal 2 binary64)))
#s(approx (pow (* x (+ x x)) 1/4) (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal -2 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)))))))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))))
#s(approx (* (pow (* x (+ x x)) 1/4) (pow (* x (+ x x)) 1/4)) (pow.f64 (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal -2 binary64) (log.f64 (/.f64 #s(literal -1 binary64) x)))))) #s(literal 2 binary64)))
#s(approx (pow (* x (+ x x)) 1/4) (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal -2 binary64) (log.f64 (/.f64 #s(literal -1 binary64) x)))))))
Calls

3 calls:

TimeVariablePoint
29.0ms
x
0
13.0ms
x
-inf
8.0ms
x
inf

rewrite21.0ms (1.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01766
02946
010846
Stop Event
iter-limit
iter-limit
iter-limit
unsound
iter-limit
Counts
14 → 144
Calls
Call 1
Inputs
(hypot.f64 x x)
x
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(fabs.f64 x)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 x (+.f64 x x))
(+.f64 x x)
(*.f64 (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)) (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)))
(pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64))
#s(literal 1/4 binary64)
Outputs
(*.f64 (fabs.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))) (fabs.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))))
(*.f64 (neg.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))) (neg.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)))
(*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(pow.f64 (*.f64 (*.f64 (+.f64 x x) x) (*.f64 (+.f64 x x) x)) #s(literal 1/4 binary64))
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(fabs.f64 (*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 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 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 x) (pow.f64 x #s(literal 1 binary64)))
(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 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 x))
(hypot.f64 x (fabs.f64 x))
(hypot.f64 x x)
x
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) 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))
(sqrt.f64 #s(literal 2 binary64))
(fabs.f64 (sqrt.f64 #s(literal 2 binary64)))
#s(literal 2 binary64)
(*.f64 (fabs.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))) (fabs.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))))
(*.f64 (neg.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))) (neg.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)))
(*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(pow.f64 (*.f64 (*.f64 (+.f64 x x) x) (*.f64 (+.f64 x x) x)) #s(literal 1/4 binary64))
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(fabs.f64 (*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 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 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 x) (pow.f64 x #s(literal 1 binary64)))
(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 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 x))
(hypot.f64 x (fabs.f64 x))
(hypot.f64 x x)
(sqrt.f64 (*.f64 x x))
(fabs.f64 (neg.f64 x))
(fabs.f64 x)
(*.f64 (fabs.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))) (fabs.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))))
(*.f64 (neg.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))) (neg.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)))
(*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(pow.f64 (*.f64 (*.f64 (+.f64 x x) x) (*.f64 (+.f64 x x) x)) #s(literal 1/4 binary64))
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(fabs.f64 (*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 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 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 x) (pow.f64 x #s(literal 1 binary64)))
(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 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 x))
(hypot.f64 x (fabs.f64 x))
(hypot.f64 x x)
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 x x) (*.f64 x x))) (*.f64 x x))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 (+.f64 x x) x)
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 x (+.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 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.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))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 x) x))
(-.f64 (*.f64 x x) (neg.f64 (*.f64 x x)))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 x x)) x)
(*.f64 #s(literal 2 binary64) x)
(/.f64 (-.f64 (*.f64 x x) (*.f64 x x)) (-.f64 x x))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x (-.f64 (*.f64 x x) (*.f64 x x))))
(-.f64 x (neg.f64 x))
(+.f64 x x)
(*.f64 (fabs.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))) (fabs.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))))
(*.f64 (neg.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))) (neg.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)))
(*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(pow.f64 (*.f64 (*.f64 (+.f64 x x) x) (*.f64 (+.f64 x x) x)) #s(literal 1/4 binary64))
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(fabs.f64 (*.f64 (fabs.f64 x) (sqrt.f64 #s(literal 2 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 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 x) (pow.f64 x #s(literal 1 binary64)))
(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 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 x))
(hypot.f64 x (fabs.f64 x))
(hypot.f64 x x)
(*.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/8 binary64)) (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/8 binary64)))
(*.f64 (pow.f64 x #s(literal 1/4 binary64)) (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 x x) x)) #s(literal 1/4 binary64)))
#s(literal 1/4 binary64)

eval17.0ms (1.3%)

Memory
-32.3MiB live, 13.7MiB allocated; 4ms collecting garbage
Compiler

Compiled 1 413 to 235 computations (83.4% saved)

prune3.0ms (0.2%)

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

6 alts after pruning (2 fresh and 4 done)

PrunedKeptTotal
New90292
Fresh000
Picked145
Done000
Total91697
Accuracy
100.0%
Counts
97 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
52.6%
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
99.3%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
52.8%
(sqrt.f64 (*.f64 x (+.f64 x x)))
99.3%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
Compiler

Compiled 41 to 32 computations (22% saved)

series43.0ms (3.5%)

Memory
-7.0MiB live, 43.8MiB allocated; 10ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
065243
Stop Event
iter-limit
Counts
10 → 17
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 x)
x
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))
(*.f64 (+.f64 x x) x)
#s(literal 1/4 binary64)
#s(literal 2 binary64)
Outputs
#s(approx (* (sqrt x) (sqrt (+ x x))) (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))))
#s(approx (sqrt x) (sqrt.f64 x))
#s(approx x x)
#s(approx (sqrt (+ x x)) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
#s(approx (+ x x) (*.f64 #s(literal 2 binary64) x))
#s(approx (pow (pow (* (+ x x) x) 1/4) 2) (pow.f64 (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (log.f64 x))))) #s(literal 2 binary64)))
#s(approx (pow (* (+ x x) x) 1/4) (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (log.f64 x))))))
#s(approx (* (+ x x) x) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
#s(approx (* (sqrt x) (sqrt (+ x x))) (*.f64 (pow.f64 x #s(literal 2 binary64)) (*.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) x)) (sqrt.f64 (/.f64 #s(literal 2 binary64) x)))))
#s(approx (sqrt x) (*.f64 x (sqrt.f64 (/.f64 #s(literal 1 binary64) x))))
#s(approx (sqrt (+ x x)) (*.f64 x (sqrt.f64 (/.f64 #s(literal 2 binary64) x))))
#s(approx (pow (pow (* (+ x x) x) 1/4) 2) (pow.f64 (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal -2 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)))))) #s(literal 2 binary64)))
#s(approx (pow (* (+ x x) x) 1/4) (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal -2 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)))))))
#s(approx (sqrt x) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 (/.f64 #s(literal 1 binary64) x)))))
#s(approx (sqrt (+ x x)) (*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 (/.f64 #s(literal 2 binary64) x)))))
#s(approx (pow (pow (* (+ x x) x) 1/4) 2) (pow.f64 (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal -2 binary64) (log.f64 (/.f64 #s(literal -1 binary64) x)))))) #s(literal 2 binary64)))
#s(approx (pow (* (+ x x) x) 1/4) (exp.f64 (*.f64 #s(literal 1/4 binary64) (+.f64 (log.f64 #s(literal 2 binary64)) (*.f64 #s(literal -2 binary64) (log.f64 (/.f64 #s(literal -1 binary64) x)))))))
Calls

3 calls:

TimeVariablePoint
25.0ms
x
-inf
8.0ms
x
inf
8.0ms
x
0

rewrite18.0ms (1.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01040
01739
06039
Stop Event
iter-limit
iter-limit
iter-limit
unsound
iter-limit
Counts
10 → 28
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 x)
x
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))
(*.f64 (+.f64 x x) x)
#s(literal 1/4 binary64)
#s(literal 2 binary64)
Outputs
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(pow.f64 x #s(literal 1/2 binary64))
(sqrt.f64 x)
(fabs.f64 (sqrt.f64 x))
x
(pow.f64 (+.f64 x x) #s(literal 1/2 binary64))
(sqrt.f64 (+.f64 x x))
(fabs.f64 (sqrt.f64 (+.f64 x x)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 x x)) x)
(*.f64 #s(literal 2 binary64) x)
(/.f64 (-.f64 (*.f64 x x) (*.f64 x x)) (-.f64 x x))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x (-.f64 (*.f64 x x) (*.f64 x x))))
(-.f64 x (neg.f64 x))
(+.f64 x x)
(*.f64 (pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 1 binary64)) (pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)))
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))) #s(literal 2 binary64)))
(*.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/8 binary64)) (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/8 binary64)))
(*.f64 (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)) (pow.f64 x #s(literal 1/4 binary64)))
(pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 x x) x)) #s(literal 1/4 binary64)))
(*.f64 (+.f64 x x) x)
(*.f64 x (+.f64 x x))
#s(literal 1/4 binary64)
#s(literal 2 binary64)

eval4.0ms (0.3%)

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

Compiled 593 to 164 computations (72.3% saved)

prune2.0ms (0.2%)

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

6 alts after pruning (0 fresh and 6 done)

PrunedKeptTotal
New42042
Fresh000
Picked022
Done044
Total42648
Accuracy
100.0%
Counts
48 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
52.6%
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
99.3%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
52.8%
(sqrt.f64 (*.f64 x (+.f64 x x)))
99.3%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
Compiler

Compiled 41 to 32 computations (22% saved)

regimes28.0ms (2.2%)

Memory
-1.3MiB live, 44.2MiB allocated; 3ms collecting garbage
Accuracy

Total -29.9b remaining (-3495.7%)

Threshold costs -29.9b (-3495.7%)

Counts
3 → 1
4 → 1
8 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(sqrt.f64 (*.f64 x (+.f64 x x)))
Outputs
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
Call 2
Inputs
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
Outputs
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
Call 3
Inputs
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (fabs.f64 x))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(hypot.f64 x x)
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
(pow.f64 (pow.f64 (*.f64 (+.f64 x x) x) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(*.f64 (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)) (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)))
Outputs
(hypot.f64 x x)
Calls

12 calls:

3.0ms
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
3.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)))
2.0ms
(pow.f64 x #s(literal 2 binary64))
Results
AccuracySegmentsBranch
99.3%1(pow.f64 x #s(literal 2 binary64))
99.3%1(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
99.3%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
99.3%1x
99.4%1(pow.f64 x #s(literal 2 binary64))
99.4%1(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
99.4%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
99.4%1x
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 107 to 66 computations (38.3% saved)

derivations3.0ms (0.2%)

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

Compiled 21 to 14 computations (33.3% saved)

preprocess27.0ms (2.2%)

Memory
10.5MiB live, 54.1MiB allocated; 9ms collecting garbage
Compiler

Compiled 69 to 51 computations (26.1% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...