sqrt D (should all be same)

Time bar (total: 1.8s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze0.0ms (0%)

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

sample629.0ms (34%)

Memory
12.3MiB live, 629.2MiB allocated
Samples
412.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 208.0ms
ival-pow2: 91.0ms (43.8% of total)
ival-mult: 53.0ms (25.5% of total)
ival-sqrt: 52.0ms (25% of total)
ival-true: 5.0ms (2.4% of total)
exact: 4.0ms (1.9% of total)
ival-assert: 3.0ms (1.4% of total)
Bogosity

explain65.0ms (3.5%)

Memory
4.4MiB live, 106.5MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1200-0-(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))))uflow-rescue610
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))underflow61
(pow.f64 x #s(literal 2 binary64))underflow61
sqrt.f64(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))oflow-rescue590
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))overflow59
(pow.f64 x #s(literal 2 binary64))overflow59
Confusion
Predicted +Predicted -
+1200
-0136
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+12000
-00136
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
0136
1120
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
31.0ms512×0valid
Compiler

Compiled 42 to 19 computations (54.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-pow2: 6.0ms (45.5% of total)
ival-mult: 3.0ms (22.7% of total)
ival-sqrt: 3.0ms (22.7% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess22.0ms (1.2%)

Memory
-20.2MiB live, 26.0MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0715
11213
23213
39913
415313
524713
627313
729313
056
086
1136
2276
3646
41326
52046
62406
72636
82786
02783
Stop Event
iter limit
saturated
iter limit
saturated
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.2MiB live, 0.2MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune1.0ms (0.1%)

Memory
1.8MiB live, 1.8MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
56.2%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify7.0ms (0.4%)

Memory
5.3MiB live, 5.3MiB allocated
Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0516
0816
11316
22716
36416
413216
520416
624016
726316
827816
027813
Stop Event
iter limit
saturated
iter limit
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
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
(hypot.f64 x x)
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
#s(literal 2 binary64)
(pow.f64 x #s(literal 2 binary64))
(*.f64 x x)
x

localize17.0ms (0.9%)

Memory
16.3MiB live, 16.3MiB allocated
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(pow.f64 x #s(literal 2 binary64))
accuracy0.0
(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
accuracy28.00545372394583
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
Samples
12.0ms256×0valid
Compiler

Compiled 18 to 7 computations (61.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-pow2: 3.0ms (47.9% of total)
ival-sqrt: 2.0ms (32% of total)
ival-mult: 1.0ms (16% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series4.0ms (0.2%)

Memory
3.6MiB live, 3.6MiB allocated
Counts
3 → 4
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)))
(pow.f64 x #s(literal 2 binary64))
Outputs
(* x (sqrt 2))
(* 2 (pow x 2))
(pow x 2)
(* -1 (* x (sqrt 2)))
Calls

3 calls:

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

simplify9.0ms (0.5%)

Memory
11.5MiB live, 11.5MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11817
24317
39217
422817
543717
648517
048517
Stop Event
iter limit
saturated
Counts
4 → 4
Calls
Call 1
Inputs
(* x (sqrt 2))
(* 2 (pow x 2))
(pow x 2)
(* -1 (* x (sqrt 2)))
Outputs
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* 2 (pow x 2))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(pow x 2)
(*.f64 x x)
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))

rewrite64.0ms (3.5%)

Memory
-3.7MiB live, 42.0MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0514
0814
12412
28010
04889
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 96
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)))
(pow.f64 x #s(literal 2 binary64))
Outputs
(*.f64 (*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (neg.f64 (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/4 binary64))) (neg.f64 (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/4 binary64))))
(*.f64 (fabs.f64 (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/4 binary64))) (fabs.f64 (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/4 binary64))))
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(*.f64 (pow.f64 (*.f64 x #s(literal 2 binary64)) #s(literal 1/2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x #s(literal 2 binary64))))
(*.f64 (sqrt.f64 x) (pow.f64 (*.f64 x #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(*.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)) x)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(pow.f64 (exp.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) #s(literal 1/2 binary64))
(pow.f64 (*.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #s(literal 1/4 binary64))
(pow.f64 (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/4 binary64)) #s(literal 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 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (pow.f64 (neg.f64 x) #s(literal 1 binary64)))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) x)
(hypot.f64 (pow.f64 (neg.f64 x) #s(literal 1 binary64)) (neg.f64 (neg.f64 x)))
(hypot.f64 (pow.f64 (neg.f64 x) #s(literal 1 binary64)) (pow.f64 (neg.f64 x) #s(literal 1 binary64)))
(hypot.f64 (pow.f64 (neg.f64 x) #s(literal 1 binary64)) (neg.f64 x))
(hypot.f64 (pow.f64 (neg.f64 x) #s(literal 1 binary64)) x)
(hypot.f64 (neg.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 x) (pow.f64 (neg.f64 x) #s(literal 1 binary64)))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 x (neg.f64 (neg.f64 x)))
(hypot.f64 x (pow.f64 (neg.f64 x) #s(literal 1 binary64)))
(hypot.f64 x (neg.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 (cosh.f64 (*.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #s(literal 1/2 binary64))) (sinh.f64 (*.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #s(literal 1/2 binary64))))
(*.f64 (*.f64 (*.f64 x #s(literal 2 binary64)) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (*.f64 #s(literal 2 binary64) (neg.f64 x)) (neg.f64 x))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 x #s(literal 2 binary64))))
(*.f64 (neg.f64 x) (*.f64 (neg.f64 x) #s(literal 2 binary64)))
(*.f64 (neg.f64 x) (+.f64 (neg.f64 x) (neg.f64 x)))
(*.f64 (neg.f64 x) (-.f64 (neg.f64 x) x))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(/.f64 (-.f64 (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 (*.f64 x (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (*.f64 x (sqrt.f64 x)) (sqrt.f64 x) (*.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 (pow.f64 (neg.f64 x) #s(literal 1 binary64)) (pow.f64 (neg.f64 x) #s(literal 1 binary64)) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (pow.f64 (neg.f64 x) #s(literal 1 binary64)) (pow.f64 (neg.f64 x) #s(literal 1 binary64)) (*.f64 x x))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) x) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 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 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) #s(literal 2 binary64) (*.f64 (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) #s(literal 2 binary64)))
(fma.f64 x x (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 x x (*.f64 x x))
(fma.f64 #s(literal 2 binary64) (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (*.f64 #s(literal 2 binary64) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))))
(-.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 x) x))
(+.f64 (fma.f64 x x (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))
(+.f64 (*.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))) (*.f64 #s(literal 2 binary64) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))))
(+.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 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (-.f64 (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (*.f64 (neg.f64 x) x)))
(+.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (+.f64 (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (*.f64 x x)))
(+.f64 (*.f64 x x) (*.f64 (neg.f64 (neg.f64 x)) x))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 (*.f64 x (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (pow.f64 (neg.f64 x) #s(literal 1 binary64)) (pow.f64 (neg.f64 x) #s(literal 1 binary64)))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) x))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 x x)
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 x))
(pow.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 1/2 binary64))
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(pow.f64 x #s(literal 2 binary64))
(/.f64 (-.f64 (*.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))) (*.f64 (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.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)))))
(/.f64 (+.f64 (pow.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) #s(literal 3 binary64)) (pow.f64 (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) #s(literal 3 binary64))) (fma.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (-.f64 (*.f64 (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.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)))))))
(neg.f64 (*.f64 (neg.f64 x) x))
(fma.f64 #s(literal 2 binary64) (*.f64 (sinh.f64 (log.f64 x)) (cosh.f64 (log.f64 x))) (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))
(sqrt.f64 (pow.f64 x #s(literal 4 binary64)))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)) #s(literal 1 binary64)))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(+.f64 (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (cosh.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))))

eval10.0ms (0.5%)

Memory
13.3MiB live, 13.3MiB allocated
Compiler

Compiled 1 024 to 269 computations (73.7% saved)

prune14.0ms (0.8%)

Memory
-35.2MiB live, 10.2MiB allocated
Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New955100
Fresh000
Picked101
Done000
Total965101
Accuracy
100.0%
Counts
101 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
54.4%
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
55.2%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
56.2%
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
46.2%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
Compiler

Compiled 64 to 54 computations (15.6% saved)

simplify9.0ms (0.5%)

Memory
8.0MiB live, 8.0MiB allocated
Algorithm
egg-herbie
Localize:

Found 14 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 x)
cost-diff0
(*.f64 x #s(literal 2 binary64))
cost-diff0
(sqrt.f64 (*.f64 x #s(literal 2 binary64)))
cost-diff0
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 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
(neg.f64 x)
cost-diff0
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
cost-diff0
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
cost-diff0
(sqrt.f64 #s(literal 2 binary64))
cost-diff0
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
cost-diff0
(hypot.f64 x x)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01869
03163
14763
28963
315763
423463
527563
630363
731863
031863
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(hypot.f64 x x)
x
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(neg.f64 x)
x
(sqrt.f64 #s(literal 2 binary64))
#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)
x
#s(literal 2 binary64)
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(sqrt.f64 (*.f64 x #s(literal 2 binary64)))
(*.f64 x #s(literal 2 binary64))
x
#s(literal 2 binary64)
(sqrt.f64 x)
Outputs
(hypot.f64 x x)
x
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(neg.f64 x)
x
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(hypot.f64 x x)
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
x
#s(literal 2 binary64)
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(sqrt.f64 (*.f64 x #s(literal 2 binary64)))
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(*.f64 x #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) x)
x
#s(literal 2 binary64)
(sqrt.f64 x)

localize59.0ms (3.2%)

Memory
13.4MiB live, 70.0MiB allocated
Localize:

Found 14 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x #s(literal 2 binary64))
accuracy0.0
(sqrt.f64 (*.f64 x #s(literal 2 binary64)))
accuracy0.0
(sqrt.f64 x)
accuracy0.15234375
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
accuracy0.0
(*.f64 (*.f64 x x) #s(literal 2 binary64))
accuracy0.0
(*.f64 x x)
accuracy14.939675975725295
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
accuracy0.0
(sqrt.f64 #s(literal 2 binary64))
accuracy0.0
(neg.f64 x)
accuracy0.26171875
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
accuracy34.17639614948672
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
accuracy0.0
(sqrt.f64 #s(literal 2 binary64))
accuracy0.26171875
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
accuracy0.01171875
(hypot.f64 x x)
Samples
27.0ms116×0invalid
20.0ms140×0valid
Compiler

Compiled 70 to 19 computations (72.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 25.0ms
ival-mult: 10.0ms (40% of total)
ival-sqrt: 7.0ms (28% of total)
ival-hypot: 5.0ms (20% of total)
ival-pow2: 2.0ms (8% of total)
ival-neg: 1.0ms (4% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series10.0ms (0.5%)

Memory
-34.5MiB live, 12.4MiB allocated
Counts
13 → 11
Calls
Call 1
Inputs
(hypot.f64 x x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(neg.f64 x)
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(sqrt.f64 (*.f64 x #s(literal 2 binary64)))
(*.f64 x #s(literal 2 binary64))
(sqrt.f64 x)
Outputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 x)
(* 2 (pow x 2))
(pow x 2)
(* (sqrt x) (sqrt 2))
(* 2 x)
(sqrt x)
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
Calls

3 calls:

TimeVariablePointExpression
6.0ms
x
@-inf
((sqrt (+ (* x x) (* x x))) (* (sqrt 2) x) (sqrt 2) (sqrt (* 2 (pow x 2))) (* (neg x) (sqrt 2)) (neg x) (sqrt (* (* x x) 2)) (* (* x x) 2) (* x x) (* (sqrt (* x 2)) (sqrt x)) (sqrt (* x 2)) (* x 2) (sqrt x))
2.0ms
x
@inf
((sqrt (+ (* x x) (* x x))) (* (sqrt 2) x) (sqrt 2) (sqrt (* 2 (pow x 2))) (* (neg x) (sqrt 2)) (neg x) (sqrt (* (* x x) 2)) (* (* x x) 2) (* x x) (* (sqrt (* x 2)) (sqrt x)) (sqrt (* x 2)) (* x 2) (sqrt x))
2.0ms
x
@0
((sqrt (+ (* x x) (* x x))) (* (sqrt 2) x) (sqrt 2) (sqrt (* 2 (pow x 2))) (* (neg x) (sqrt 2)) (neg x) (sqrt (* (* x x) 2)) (* (* x x) 2) (* x x) (* (sqrt (* x 2)) (sqrt x)) (sqrt (* x 2)) (* x 2) (sqrt x))

simplify282.0ms (15.2%)

Memory
26.2MiB live, 251.4MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02348
15648
214548
330748
463648
598948
6107448
7109448
8109448
9121448
10127048
11127048
12138648
13160048
14193648
15230448
16275548
17362448
18502248
19712848
0805248
Stop Event
iter limit
node limit
Counts
11 → 11
Calls
Call 1
Inputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 x)
(* 2 (pow x 2))
(pow x 2)
(* (sqrt x) (sqrt 2))
(* 2 x)
(sqrt x)
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
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)))
(* -1 x)
(neg.f64 x)
(* 2 (pow x 2))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(pow x 2)
(*.f64 x x)
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(sqrt x)
(sqrt.f64 x)
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))) (neg.f64 x))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 (sqrt.f64 #s(literal -2 binary64))) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 x)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)

rewrite30.0ms (1.6%)

Memory
33.8MiB live, 33.8MiB allocated
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01858
03147
17643
030143
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
13 → 175
Calls
Call 1
Inputs
(hypot.f64 x x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(neg.f64 x)
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(sqrt.f64 (*.f64 x #s(literal 2 binary64)))
(*.f64 x #s(literal 2 binary64))
(sqrt.f64 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 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 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 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) x)
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 x))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (neg.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 x (neg.f64 (neg.f64 x)))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #s(literal 1/2 binary64)))
(*.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 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 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 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) x)
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 x))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (neg.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 x (neg.f64 (neg.f64 x)))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 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)))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(sqrt.f64 #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
#s(approx (sqrt (* 2 (pow x 2))) (neg.f64 (hypot.f64 x x)))
(*.f64 (neg.f64 (sqrt.f64 #s(literal 2 binary64))) x)
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.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))
(neg.f64 x)
(*.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 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 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 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) x)
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 x))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (neg.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 x (neg.f64 (neg.f64 x)))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (/.f64 #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) x) x)
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 (neg.f64 x) (*.f64 (neg.f64 x) #s(literal 2 binary64)))
(*.f64 (neg.f64 x) (+.f64 (neg.f64 x) (neg.f64 x)))
(*.f64 (neg.f64 x) (-.f64 (neg.f64 x) x))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.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 (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 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 (neg.f64 (neg.f64 x)) x))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.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 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 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 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 x x)
(pow.f64 (exp.f64 (log.f64 x)) #s(literal 2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(pow.f64 (neg.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 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))
(*.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 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 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 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 (neg.f64 x)) (neg.f64 x))
(hypot.f64 (neg.f64 (neg.f64 x)) x)
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 (neg.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 x))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (neg.f64 x) (neg.f64 (neg.f64 x)))
(hypot.f64 (neg.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 x (neg.f64 (neg.f64 x)))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #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))
(hypot.f64 (sqrt.f64 (neg.f64 x)) (sqrt.f64 (neg.f64 x)))
(hypot.f64 (sqrt.f64 (neg.f64 x)) (sqrt.f64 x))
(hypot.f64 (sqrt.f64 x) (sqrt.f64 (neg.f64 x)))
(hypot.f64 (sqrt.f64 x) (sqrt.f64 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 (sqrt.f64 (neg.f64 x)) (sqrt.f64 (neg.f64 x)) x)
(fma.f64 (sqrt.f64 x) (sqrt.f64 x) x)
(+.f64 x x)
(*.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)))

eval16.0ms (0.9%)

Memory
-24.9MiB live, 21.1MiB allocated
Compiler

Compiled 1 026 to 283 computations (72.4% saved)

prune5.0ms (0.2%)

Memory
9.3MiB live, 9.3MiB allocated
Pruning

6 alts after pruning (2 fresh and 4 done)

PrunedKeptTotal
New1092111
Fresh000
Picked145
Done000
Total1106116
Accuracy
100.0%
Counts
116 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
54.4%
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
55.2%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
56.2%
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
46.2%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
46.3%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
Compiler

Compiled 47 to 39 computations (17% saved)

simplify148.0ms (8%)

Memory
-16.1MiB live, 83.8MiB allocated
Algorithm
egg-herbie
Localize:

Found 8 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 x)
cost-diff0
(+.f64 x x)
cost-diff0
(sqrt.f64 (+.f64 x x))
cost-diff0
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
cost-diff0
(neg.f64 x)
cost-diff0
(*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
cost-diff0
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
cost-diff3
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01656
02550
14247
28347
319747
457847
5311847
6789347
0929344
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
(*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
(neg.f64 x)
x
(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 2 binary64)
#s(literal 1/2 binary64)
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
x
(sqrt.f64 x)
Outputs
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x)))
(*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(neg.f64 x)
x
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(*.f64 #s(literal 1/2 binary64) (log.f64 #s(literal 2 binary64)))
(log.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
#s(literal 1/2 binary64)
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x #s(literal 2 binary64))))
(sqrt.f64 (+.f64 x x))
(sqrt.f64 (*.f64 x #s(literal 2 binary64)))
(+.f64 x x)
(*.f64 x #s(literal 2 binary64))
x
(sqrt.f64 x)

localize40.0ms (2.2%)

Memory
8.9MiB live, 55.1MiB allocated
Localize:

Found 8 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(+.f64 x x)
accuracy0.0
(sqrt.f64 (+.f64 x x))
accuracy0.0
(sqrt.f64 x)
accuracy0.15234375
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
accuracy0.0
(log.f64 #s(literal 2 binary64))
accuracy0.26171875
(*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
accuracy0.546875
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
accuracy34.17639614948672
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
Samples
17.0ms140×0valid
13.0ms116×0invalid
Compiler

Compiled 49 to 17 computations (65.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 22.0ms
ival-mult: 7.0ms (32% of total)
ival-sqrt: 4.0ms (18.3% of total)
ival-log: 3.0ms (13.7% of total)
ival-pow2: 3.0ms (13.7% of total)
ival-exp: 2.0ms (9.2% of total)
ival-add: 1.0ms (4.6% of total)
ival-neg: 1.0ms (4.6% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series3.0ms (0.2%)

Memory
3.7MiB live, 3.7MiB allocated
Counts
9 → 9
Calls
Call 1
Inputs
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
(*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
(neg.f64 x)
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(sqrt.f64 x)
(log.f64 #s(literal 2 binary64))
Outputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 x)
(* (sqrt x) (sqrt 2))
(* 2 x)
(sqrt x)
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
Calls

3 calls:

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

simplify78.0ms (4.2%)

Memory
-16.4MiB live, 29.2MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02140
15140
213340
324840
444840
563240
668040
771340
874340
976440
1093040
1198740
1298740
13114440
14127240
15149740
16152240
0152240
Stop Event
iter limit
saturated
Counts
9 → 9
Calls
Call 1
Inputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 x)
(* (sqrt x) (sqrt 2))
(* 2 x)
(sqrt x)
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
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)))
(* -1 x)
(neg.f64 x)
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(sqrt x)
(sqrt.f64 x)
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))) (neg.f64 x))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 (sqrt.f64 #s(literal -2 binary64))) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 x)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)

rewrite32.0ms (1.7%)

Memory
28.3MiB live, 28.3MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01648
02541
16434
024230
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
9 → 62
Calls
Call 1
Inputs
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
(*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
(neg.f64 x)
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(sqrt.f64 x)
(log.f64 #s(literal 2 binary64))
Outputs
(*.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(approx (sqrt (* 2 (pow x 2))) (neg.f64 (hypot.f64 x x)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(fma.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (neg.f64 x) (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (neg.f64 x)))
(fma.f64 (neg.f64 x) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (*.f64 (neg.f64 x) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))
(+.f64 (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (neg.f64 x)) (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (neg.f64 x)))
(+.f64 (*.f64 (neg.f64 x) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (neg.f64 x) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))
(neg.f64 x)
(*.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 x) (sqrt.f64 (*.f64 x #s(literal 2 binary64))))
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(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 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) (neg.f64 x))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (neg.f64 x) (exp.f64 (log.f64 x)))
(hypot.f64 (neg.f64 x) (neg.f64 x))
(hypot.f64 (neg.f64 x) x)
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x (neg.f64 x))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #s(literal 1/2 binary64)))
(+.f64 (*.f64 (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))))))
(*.f64 (pow.f64 (*.f64 x #s(literal 2 binary64)) #s(literal 1/4 binary64)) (pow.f64 (*.f64 x #s(literal 2 binary64)) #s(literal 1/4 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(pow.f64 (*.f64 x #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 (*.f64 x #s(literal 2 binary64)))
(hypot.f64 (sqrt.f64 x) (sqrt.f64 x))
(exp.f64 (*.f64 (log.f64 (*.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)))
(*.f64 x #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) x)
(/.f64 (neg.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))) (neg.f64 (fma.f64 x x #s(literal 0 binary64))))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x #s(literal 0 binary64)))
(fma.f64 (sqrt.f64 x) (sqrt.f64 x) x)
(-.f64 (/.f64 (*.f64 x x) #s(literal 0 binary64)) (/.f64 (*.f64 x x) #s(literal 0 binary64)))
(+.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x x #s(literal 0 binary64))) (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x x #s(literal 0 binary64))))
(+.f64 x x)
(*.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)))
(log.f64 #s(literal 2 binary64))

eval24.0ms (1.3%)

Memory
-31.5MiB live, 19.4MiB allocated
Compiler

Compiled 864 to 207 computations (76% saved)

prune5.0ms (0.2%)

Memory
7.7MiB live, 7.7MiB allocated
Pruning

6 alts after pruning (0 fresh and 6 done)

PrunedKeptTotal
New70070
Fresh000
Picked022
Done044
Total70676
Accuracy
100.0%
Counts
76 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
54.4%
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
55.2%
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
56.2%
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
46.2%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
46.3%
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
Compiler

Compiled 107 to 70 computations (34.6% saved)

regimes11.0ms (0.6%)

Memory
15.7MiB live, 15.7MiB allocated
Counts
8 → 1
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
(hypot.f64 x x)
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (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
3.0ms
(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
3.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)

regimes10.0ms (0.5%)

Memory
-31.0MiB live, 15.0MiB allocated
Counts
5 → 2
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 (*.f64 x #s(literal 2 binary64))) (sqrt.f64 x))
Outputs
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
Calls

4 calls:

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)))
2.0ms
(pow.f64 x #s(literal 2 binary64))
Results
AccuracySegmentsBranch
78.8%3(pow.f64 x #s(literal 2 binary64))
78.8%3(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
78.8%3(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
99.4%2x
Compiler

Compiled 15 to 13 computations (13.3% saved)

regimes2.0ms (0.1%)

Memory
4.4MiB live, 4.4MiB allocated
Counts
3 → 2
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
#s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
Outputs
#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)
Calls

1 calls:

2.0ms
x
Results
AccuracySegmentsBranch
99.2%2x
Compiler

Compiled 1 to 1 computations (0% saved)

regimes4.0ms (0.2%)

Memory
9.9MiB live, 9.9MiB allocated
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.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
55.2%1(pow.f64 x #s(literal 2 binary64))
55.2%1(*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64)))
55.2%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 2 binary64))))
55.2%1x
Compiler

Compiled 15 to 13 computations (13.3% saved)

bsearch13.0ms (0.7%)

Memory
21.7MiB live, 21.7MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
12.0ms
-5.096500352901269e-304
1.1949215157919546e-306
Samples
6.0ms144×0valid
Compiler

Compiled 180 to 162 computations (10% saved)

Precisions
Click to see histograms. Total time spent on operations: 4.0ms
ival-pow2: 2.0ms (56.5% of total)
ival-mult: 1.0ms (28.2% of total)
ival-sqrt: 1.0ms (28.2% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch1.0ms (0.1%)

Memory
2.4MiB live, 2.4MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
1.0ms
-5.096500352901269e-304
1.1949215157919546e-306
Compiler

Compiled 153 to 153 computations (0% saved)

simplify49.0ms (2.6%)

Memory
-18.3MiB live, 70.7MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01950
13150
24950
39350
417150
526550
646350
7213450
8382250
Stop Event
node limit
Calls
Call 1
Inputs
(hypot.f64 x x)
(if (<=.f64 x #s(literal -20240225330731/202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784 binary64)) #s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x)))
(if (<=.f64 x #s(literal -20240225330731/202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784 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)
Outputs
(hypot.f64 x x)
(if (<=.f64 x #s(literal -20240225330731/202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784 binary64)) #s(approx (sqrt (* 2 (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x)))
(if (<=.f64 x #s(literal -20240225330731/202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784 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)

soundness149.0ms (8.1%)

Memory
-10.8MiB live, 136.8MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0514
0814
12412
28010
04889
0817
11817
24317
39217
422817
543717
648517
048517
01858
03147
17643
030143
Stop Event
done
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
saturated
iter limit
iter limit
iter limit
unsound
iter limit
Compiler

Compiled 116 to 68 computations (41.4% saved)

preprocess26.0ms (1.4%)

Memory
32.9MiB live, 32.9MiB allocated
Compiler

Compiled 112 to 50 computations (55.4% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...