sqrt E (should all be same)

Time bar (total: 1.3s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze0.0ms (0%)

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

Compiled 10 to 6 computations (40% saved)

sample571.0ms (45.6%)

Memory
-0.9MiB live, 697.1MiB allocated
Samples
371.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 215.0ms
ival-pow2: 104.0ms (48.3% of total)
ival-sqrt: 60.0ms (27.9% of total)
ival-add: 42.0ms (19.5% of total)
ival-true: 5.0ms (2.3% of total)
ival-assert: 3.0ms (1.4% of total)
Bogosity

explain69.0ms (5.5%)

Memory
-1.3MiB live, 115.0MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1450-5(5.65338674859095e-160)(sqrt.f64 (+.f64 (pow.f64 x #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 (pow.f64 x #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 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))uflow-rescue720
(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))underflow72
(pow.f64 x #s(literal 2 binary64))underflow144
sqrt.f64(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))oflow-rescue680
(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))overflow68
(pow.f64 x #s(literal 2 binary64))overflow136
Confusion
Predicted +Predicted -
+1405
-0111
Precision
1.0
Recall
0.9655172413793104
Confusion?
Predicted +Predicted MaybePredicted -
+14005
-00111
Precision?
1.0
Recall?
0.9655172413793104
Freqs
test
numberfreq
0116
1140
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
25.0ms512×0valid
Compiler

Compiled 72 to 24 computations (66.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 14.0ms
ival-pow2: 7.0ms (50.1% of total)
ival-sqrt: 4.0ms (28.6% of total)
ival-add: 2.0ms (14.3% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess15.0ms (1.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0715
11513
23513
314513
429213
532213
632413
058
086
1106
2156
3186
0183
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
Outputs
(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
(hypot.f64 x x)
Compiler

Compiled 8 to 5 computations (37.5% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

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

Compiled 8 to 5 computations (37.5% saved)

simplify3.0ms (0.2%)

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

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff-5184
(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
cost-diff192
(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
cost-diff6144
(pow.f64 x #s(literal 2 binary64))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0520
0816
11016
21516
31816
01813
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(pow.f64 x #s(literal 2 binary64))
x
#s(literal 2 binary64)
Outputs
(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
(hypot.f64 x x)
(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(pow.f64 x #s(literal 2 binary64))
(*.f64 x x)
x
#s(literal 2 binary64)

localize21.0ms (1.7%)

Memory
-21.9MiB live, 22.1MiB allocated
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(pow.f64 x #s(literal 2 binary64))
accuracy0.01171875
(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
accuracy33.326133219766184
(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
Samples
16.0ms256×0valid
Compiler

Compiled 42 to 12 computations (71.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
ival-pow2: 6.0ms (57.4% of total)
ival-sqrt: 2.0ms (19.1% of total)
ival-add: 1.0ms (9.6% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.2%)

Memory
4.3MiB live, 4.3MiB allocated
Counts
3 → 4
Calls
Call 1
Inputs
(pow.f64 x #s(literal 2 binary64))
(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
Outputs
(pow x 2)
(* 2 (pow x 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
Calls

3 calls:

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

simplify4.0ms (0.3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11517
23217
33717
44117
55317
66517
77617
89617
910117
010117
Stop Event
iter limit
saturated
Counts
4 → 4
Calls
Call 1
Inputs
(pow x 2)
(* 2 (pow x 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
Outputs
(pow x 2)
(*.f64 x x)
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 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)))

rewrite35.0ms (2.8%)

Memory
-6.7MiB live, 31.2MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0518
0814
12810
01709
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 33
Calls
Call 1
Inputs
(pow.f64 x #s(literal 2 binary64))
(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
Outputs
(*.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 (*.f64 #s(literal 2 binary64) x) x)
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64))) (/.f64 #s(literal 1 binary64) (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64)))))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 x (+.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 1 binary64) (/.f64 (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64)))))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 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 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.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 x 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 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1/2 binary64))
(/.f64 (sqrt.f64 #s(literal 0 binary64)) (sqrt.f64 #s(literal 0 binary64)))
(/.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64)))) (sqrt.f64 (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64)))))
(sqrt.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 x (exp.f64 (log.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)))

eval4.0ms (0.3%)

Memory
6.4MiB live, 6.4MiB allocated
Compiler

Compiled 394 to 118 computations (70.1% saved)

prune2.0ms (0.1%)

Memory
4.0MiB live, 4.0MiB allocated
Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New40444
Fresh000
Picked101
Done000
Total41445
Accuracy
100.0%
Counts
45 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
47.9%
(sqrt.f64 (*.f64 x (+.f64 x x)))
51.1%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
50.4%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
Compiler

Compiled 36 to 25 computations (30.6% saved)

simplify12.0ms (1%)

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

Found 11 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01565
02552
13652
24852
35952
46552
57652
610452
712352
814452
922252
1035252
1136652
1236652
036652
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (+ (pow x 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)
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 x (+.f64 x x))
x
(+.f64 x x)
(hypot.f64 x x)
x
Outputs
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(neg.f64 x)
x
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
(sqrt.f64 (*.f64 x (+.f64 x x)))
(hypot.f64 x x)
(*.f64 x (+.f64 x x))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
x
(+.f64 x x)
(*.f64 #s(literal 2 binary64) x)
(hypot.f64 x x)
x

localize46.0ms (3.6%)

Memory
-21.4MiB live, 54.4MiB allocated
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
accuracy0.01171875
(hypot.f64 x x)
accuracy0.0
(+.f64 x x)
accuracy0.0
(*.f64 x (+.f64 x x))
accuracy33.326133219766184
(sqrt.f64 (*.f64 x (+.f64 x x)))
accuracy0.0
(sqrt.f64 #s(literal 2 binary64))
accuracy0.4921875
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
accuracy31.04471696561823
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
accuracy0.0
(sqrt.f64 #s(literal 2 binary64))
accuracy0.0
(neg.f64 x)
accuracy0.4921875
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
accuracy31.51108403046872
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
Samples
34.0ms256×0valid
Compiler

Compiled 126 to 31 computations (75.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
ival-mult: 5.0ms (24.9% of total)
ival-sqrt: 5.0ms (24.9% of total)
ival-hypot: 4.0ms (19.9% of total)
ival-pow2: 3.0ms (14.9% of total)
ival-add: 2.0ms (9.9% of total)
ival-neg: 1.0ms (5% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series4.0ms (0.3%)

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

3 calls:

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

simplify4.0ms (0.3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01019
11919
23319
33719
44519
55619
66719
78919
810019
910019
010019
Stop Event
iter limit
saturated
Counts
5 → 5
Calls
Call 1
Inputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 x)
(* 2 (pow x 2))
(* 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)))
(* -1 x)
(neg.f64 x)
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)

rewrite34.0ms (2.7%)

Memory
-12.1MiB live, 29.6MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01557
02542
16642
030342
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
10 → 111
Calls
Call 1
Inputs
#s(approx (sqrt (+ (pow x 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 #s(literal 2 binary64))
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (+.f64 x x))
(+.f64 x x)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(hypot.f64 x x)
Outputs
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x)))
(*.f64 (*.f64 (sqrt.f64 #s(literal 2 binary64)) #s(literal -1 binary64)) x)
(*.f64 (neg.f64 (sqrt.f64 #s(literal 2 binary64))) x)
(*.f64 #s(literal -1 binary64) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 x (neg.f64 (sqrt.f64 #s(literal 2 binary64))))
(neg.f64 (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(-.f64 #s(literal 0 binary64) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 #s(literal -1 binary64) x)
(*.f64 x #s(literal -1 binary64))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 x x)) (+.f64 #s(literal 0 binary64) x))
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 3 binary64))) (+.f64 #s(literal 0 binary64) (fma.f64 x x (*.f64 #s(literal 0 binary64) x))))
(neg.f64 x)
(-.f64 #s(literal 0 binary64) x)
(+.f64 #s(literal 0 binary64) (neg.f64 x))
(*.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 (+ (pow x 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)))
(*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64))) (/.f64 #s(literal 1 binary64) (+.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64))))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal 1 binary64) (fma.f64 x x #s(literal 0 binary64))))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 #s(literal 2 binary64) x)
(*.f64 x (*.f64 #s(literal 2 binary64) x))
(*.f64 x #s(literal 2 binary64))
(/.f64 (*.f64 #s(literal 0 binary64) x) #s(literal 0 binary64))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) x) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (*.f64 x (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 x x #s(literal 0 binary64)))
(/.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 (neg.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (+.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64))))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x x #s(literal 0 binary64)) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))))
(/.f64 #s(literal 1 binary64) (/.f64 (+.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64)) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64)))))
(/.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) x))
(/.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64))) (+.f64 (pow.f64 x #s(literal 4 binary64)) #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 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 x x))
(fma.f64 (sqrt.f64 x) (sqrt.f64 x) x)
(fma.f64 x x (*.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 4 binary64)) #s(literal 0 binary64)) (/.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64)))
(+.f64 (*.f64 x x) (*.f64 x x))
(+.f64 x x)
(*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64))) (/.f64 #s(literal 1 binary64) (+.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64))))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal 1 binary64) (fma.f64 x x #s(literal 0 binary64))))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 #s(literal 2 binary64) x)
(*.f64 x (*.f64 #s(literal 2 binary64) x))
(*.f64 x #s(literal 2 binary64))
(/.f64 (*.f64 #s(literal 0 binary64) x) #s(literal 0 binary64))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) x) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (*.f64 x (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 x x #s(literal 0 binary64)))
(/.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 (neg.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (+.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64))))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x x #s(literal 0 binary64)) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))))
(/.f64 #s(literal 1 binary64) (/.f64 (+.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64)) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64)))))
(/.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) x))
(/.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64))) (+.f64 (pow.f64 x #s(literal 4 binary64)) #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 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 x x))
(fma.f64 (sqrt.f64 x) (sqrt.f64 x) x)
(fma.f64 x x (*.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 4 binary64)) #s(literal 0 binary64)) (/.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64)))
(+.f64 (*.f64 x x) (*.f64 x x))
(+.f64 x x)
(*.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 (hypot.f64 x x) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (hypot.f64 x x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/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))
(/.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 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64))))
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (sqrt.f64 x) (sqrt.f64 x))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (*.f64 #s(literal 2 binary64) x)) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 (*.f64 #s(literal 2 binary64) x) #s(literal 1/4 binary64)) (pow.f64 (*.f64 #s(literal 2 binary64) x) #s(literal 1/4 binary64)))
(*.f64 (hypot.f64 x x) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (hypot.f64 x x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/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))
(/.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 (pow.f64 x #s(literal 4 binary64)) #s(literal 0 binary64))))
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (sqrt.f64 x) (sqrt.f64 x))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (*.f64 #s(literal 2 binary64) x)) #s(literal 1/2 binary64)))

eval7.0ms (0.5%)

Memory
11.5MiB live, 11.5MiB allocated
Compiler

Compiled 834 to 199 computations (76.1% saved)

prune5.0ms (0.4%)

Memory
8.9MiB live, 8.9MiB allocated
Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New72375
Fresh000
Picked044
Done000
Total72779
Accuracy
100.0%
Counts
79 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
3.4%
(sqrt.f64 (+.f64 x x))
47.9%
(sqrt.f64 (*.f64 x (+.f64 x x)))
51.1%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
50.4%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
50.3%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
51.1%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x))
Compiler

Compiled 73 to 53 computations (27.4% saved)

simplify15.0ms (1.2%)

Memory
-27.2MiB live, 11.1MiB allocated
Algorithm
egg-herbie
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
cost-diff-128
(+.f64 x x)
cost-diff0
(sqrt.f64 (+.f64 x 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 (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
cost-diff12480
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
cost-diff0
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
cost-diff0
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
cost-diff0
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x))
cost-diff12480
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01686
02470
13964
25664
36664
47264
58364
611164
713064
815164
922764
1035864
1137264
1237264
037258
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x))
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) 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)
x
#s(approx (sqrt (+ (pow x 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)
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
x
Outputs
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x))
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) 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)
x
#s(approx (sqrt (+ (pow x 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 (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(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)
(sqrt.f64 (+.f64 x x))
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(+.f64 x x)
(*.f64 #s(literal 2 binary64) x)
x

localize44.0ms (3.5%)

Memory
22.2MiB live, 60.2MiB allocated
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(+.f64 x x)
accuracy0.0
(sqrt.f64 (+.f64 x x))
accuracy0.0
(log.f64 #s(literal 2 binary64))
accuracy0.25390625
(*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
accuracy0.50390625
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
accuracy31.51108403046872
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
accuracy0.0
(log.f64 #s(literal 2 binary64))
accuracy0.0
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x))
accuracy0.25390625
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
accuracy0.50390625
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
Samples
16.0ms129×0valid
15.0ms127×0invalid
Compiler

Compiled 157 to 33 computations (79% saved)

Precisions
Click to see histograms. Total time spent on operations: 21.0ms
ival-mult: 4.0ms (19.3% of total)
ival-exp: 3.0ms (14.5% of total)
ival-log: 3.0ms (14.5% of total)
ival-sqrt: 3.0ms (14.5% of total)
ival-pow2: 3.0ms (14.5% of total)
ival-add: 2.0ms (9.6% of total)
ival-neg: 1.0ms (4.8% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series4.0ms (0.3%)

Memory
5.6MiB live, 5.6MiB allocated
Counts
10 → 6
Calls
Call 1
Inputs
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x))
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
#s(approx (sqrt (+ (pow x 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)
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(log.f64 #s(literal 2 binary64))
Outputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 x)
(* (sqrt x) (sqrt 2))
(* 2 x)
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
Calls

3 calls:

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

simplify9.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01628
13228
27528
313128
415128
519628
624028
727728
832628
933528
1033528
033528
Stop Event
iter limit
saturated
Counts
6 → 6
Calls
Call 1
Inputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 x)
(* (sqrt x) (sqrt 2))
(* 2 x)
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
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 #s(literal 2 binary64) x)
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(neg.f64 (*.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))) (sqrt.f64 x)))

rewrite32.0ms (2.6%)

Memory
-8.5MiB live, 29.4MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01668
02454
16345
030442
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
10 → 67
Calls
Call 1
Inputs
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x))
(*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x)
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
#s(approx (sqrt (+ (pow x 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)
(sqrt.f64 (+.f64 x x))
(+.f64 x 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))
(sqrt.f64 #s(literal 2 binary64))
(exp.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 #s(literal 2 binary64))))
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 #s(literal 1/2 binary64) (log.f64 #s(literal 2 binary64)))
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (*.f64 (sqrt.f64 #s(literal 2 binary64)) #s(literal -1 binary64)) x)
(*.f64 (neg.f64 (sqrt.f64 #s(literal 2 binary64))) x)
(*.f64 #s(literal -1 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.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 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(-.f64 #s(literal 0 binary64) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 #s(literal -1 binary64) x)
(*.f64 x #s(literal -1 binary64))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 x x)) (+.f64 #s(literal 0 binary64) x))
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 3 binary64))) (+.f64 #s(literal 0 binary64) (fma.f64 x x (*.f64 #s(literal 0 binary64) x))))
(neg.f64 x)
(-.f64 #s(literal 0 binary64) x)
(+.f64 #s(literal 0 binary64) (neg.f64 x))
(*.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))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 x #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(pow.f64 (*.f64 x #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 (*.f64 x #s(literal 2 binary64)))
(hypot.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(hypot.f64 (exp.f64 (log.f64 x)) x)
(hypot.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 x #s(literal 1/2 binary64)))
(hypot.f64 x (exp.f64 (log.f64 x)))
(hypot.f64 x x)
(exp.f64 (*.f64 (log.f64 (*.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64))) (/.f64 #s(literal 1 binary64) (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64)))))
(*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal 1 binary64) (fma.f64 x x #s(literal 0 binary64))))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(*.f64 x #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 #s(literal 2 binary64) 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 (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 1 binary64) (/.f64 (+.f64 #s(literal 0 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 6 binary64)))))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x x #s(literal 0 binary64)) (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))))
(/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 2 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))))
(/.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x #s(literal 0 binary64)))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 x x))
(fma.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 x #s(literal 1/2 binary64)) 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 (*.f64 x x) #s(literal 0 binary64)) (/.f64 (*.f64 x x) #s(literal 0 binary64)))
(+.f64 (*.f64 x x) (*.f64 x x))
(+.f64 x x)
(log.f64 #s(literal 2 binary64))

eval89.0ms (7.1%)

Memory
-32.2MiB live, 15.4MiB allocated
Compiler

Compiled 982 to 212 computations (78.4% saved)

prune5.0ms (0.4%)

Memory
10.7MiB live, 10.7MiB allocated
Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New81081
Fresh000
Picked033
Done044
Total81788
Accuracy
100.0%
Counts
88 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
3.4%
(sqrt.f64 (+.f64 x x))
47.9%
(sqrt.f64 (*.f64 x (+.f64 x x)))
51.1%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
50.4%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64))))
50.3%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
51.1%
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) x))
Compiler

Compiled 154 to 81 computations (47.4% saved)

regimes11.0ms (0.9%)

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

4 calls:

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

Compiled 19 to 13 computations (31.6% saved)

regimes10.0ms (0.8%)

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

4 calls:

2.0ms
x
2.0ms
(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
2.0ms
(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
2.0ms
(pow.f64 x #s(literal 2 binary64))
Results
AccuracySegmentsBranch
99.2%2x
73.0%3(sqrt.f64 (+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))))
73.0%3(+.f64 (pow.f64 x #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
73.0%3(pow.f64 x #s(literal 2 binary64))
Compiler

Compiled 19 to 13 computations (31.6% saved)

regimes6.0ms (0.5%)

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

4 calls:

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

Compiled 19 to 13 computations (31.6% saved)

regimes5.0ms (0.4%)

Memory
10.8MiB live, 10.8MiB allocated
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 x x))
Outputs
(sqrt.f64 (+.f64 x x))
Calls

4 calls:

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

Compiled 19 to 13 computations (31.6% saved)

bsearch17.0ms (1.4%)

Memory
-16.4MiB live, 20.8MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
16.0ms
-2.746838655593271e-303
2.8932583570319533e-301
Samples
10.0ms160×0valid
Compiler

Compiled 281 to 218 computations (22.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-sqrt: 4.0ms (57.5% of total)
ival-pow2: 2.0ms (28.7% of total)
ival-add: 1.0ms (14.4% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify69.0ms (5.5%)

Memory
11.6MiB live, 48.6MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01745
12645
23945
35045
45945
56545
68445
720845
8380845
Stop Event
node limit
Calls
Call 1
Inputs
(hypot.f64 x x)
(if (<=.f64 x #s(literal -101201126653655/202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784 binary64)) #s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)))
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(sqrt.f64 (+.f64 x x))
Outputs
(hypot.f64 x x)
(if (<=.f64 x #s(literal -101201126653655/202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784 binary64)) #s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)))
#s(approx (sqrt (+ (pow x 2) (pow x 2))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(sqrt.f64 (+.f64 x x))

soundness73.0ms (5.8%)

Memory
-5.1MiB live, 76.9MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11517
23217
33717
44117
55317
66517
77617
89617
910117
010117
01557
02542
16642
030342
0518
0814
12810
01709
Stop Event
done
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
saturated
Compiler

Compiled 99 to 50 computations (49.5% saved)

preprocess24.0ms (1.9%)

Memory
1.9MiB live, 40.3MiB allocated
Compiler

Compiled 118 to 46 computations (61% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...