sqrt A (should all be same)

Time bar (total: 1.9s)

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 10 to 4 computations (60% saved)

sample576.0ms (29.7%)

Memory
34.6MiB live, 697.8MiB allocated
Samples
385.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 184.0ms
ival-hypot: 174.0ms (94.6% of total)
ival-true: 6.0ms (3.3% of total)
ival-assert: 3.0ms (1.6% of total)
Bogosity

explain122.0ms (6.3%)

Memory
-8.8MiB live, 71.8MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1240-2(-4.739140339998984e-162)(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
00-0-(+.f64 (*.f64 x x) (*.f64 x x))
00-0-(*.f64 x x)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))oflow-rescue650
(+.f64 (*.f64 x x) (*.f64 x x))overflow65
(*.f64 x x)overflow130
sqrt.f64(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))uflow-rescue570
(+.f64 (*.f64 x x) (*.f64 x x))underflow57
(*.f64 x x)underflow114
Confusion
Predicted +Predicted -
+1223
-0131
Precision
1.0
Recall
0.976
Confusion?
Predicted +Predicted MaybePredicted -
+12203
-00131
Precision?
1.0
Recall?
0.976
Freqs
test
numberfreq
0134
1122
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
26.0ms512×0valid
Compiler

Compiled 50 to 16 computations (68% saved)

Precisions
Click to see histograms. Total time spent on operations: 16.0ms
ival-hypot: 9.0ms (56.7% of total)
ival-mult: 4.0ms (25.2% of total)
ival-add: 2.0ms (12.6% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess34.0ms (1.7%)

Memory
-19.1MiB live, 19.4MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
12113
26613
316613
424713
525613
625813
048
076
1116
2146
3176
0173
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(hypot.f64 x x)
Symmetry

(abs x)

Compiler

Compiled 8 to 4 computations (50% saved)

eval0.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.1%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Compiler

Compiled 8 to 4 computations (50% saved)

simplify3.0ms (0.1%)

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

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff-5184
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
cost-diff0
(*.f64 x x)
cost-diff192
(+.f64 (*.f64 x x) (*.f64 x x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0419
0715
11115
21415
31715
01712
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 x x)
x
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(hypot.f64 x x)
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 x x)
x

localize17.0ms (0.9%)

Memory
18.7MiB live, 18.7MiB allocated
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0
(*.f64 x x)
accuracy0.0078125
(+.f64 (*.f64 x x) (*.f64 x x))
accuracy28.710000619475718
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Samples
12.0ms256×0valid
Compiler

Compiled 21 to 6 computations (71.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-hypot: 4.0ms (53.4% of total)
ival-mult: 2.0ms (26.7% of total)
ival-add: 1.0ms (13.4% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series4.0ms (0.2%)

Memory
3.8MiB live, 3.8MiB allocated
Counts
3 → 36
Calls
Call 1
Inputs
#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())
#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())
Outputs
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
Calls

3 calls:

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

simplify5.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
08148
115148
232148
337148
441148
553148
665148
776148
896148
9101148
0101148
Stop Event
iter limit
saturated
Counts
36 → 36
Calls
Call 1
Inputs
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
Outputs
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))

rewrite62.0ms (3.2%)

Memory
-16.6MiB live, 21.2MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0418
0714
12310
01609
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 33
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 x x)
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval8.0ms (0.4%)

Memory
10.4MiB live, 10.4MiB allocated
Compiler

Compiled 669 to 107 computations (84% saved)

prune4.0ms (0.2%)

Memory
7.1MiB live, 7.1MiB allocated
Pruning

4 alts after pruning (4 fresh and 0 done)

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

Compiled 21 to 18 computations (14.3% saved)

simplify3.0ms (0.2%)

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

Found 11 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01654
02551
13351
23451
03451
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
x
#s(literal 2 binary64)
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(sqrt.f64 x)
x
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
(hypot.f64 x x)
x
Outputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(hypot.f64 x x)
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 x x)
x
#s(literal 2 binary64)
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(sqrt.f64 x)
x
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
(hypot.f64 x x)
x

localize44.0ms (2.3%)

Memory
-2.3MiB live, 36.0MiB allocated
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
accuracy0.01171875
(hypot.f64 x x)
accuracy0
(*.f64 #s(literal 2 binary64) x)
accuracy0
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
accuracy0
(sqrt.f64 x)
accuracy0.3515625
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
accuracy0
(*.f64 x x)
accuracy0.0078125
(*.f64 (*.f64 x x) #s(literal 2 binary64))
accuracy28.710000619475718
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
accuracy0
(sqrt.f64 #s(literal 2 binary64))
accuracy0
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
accuracy0.4296875
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
Samples
30.0ms256×0valid
Compiler

Compiled 61 to 14 computations (77% saved)

Precisions
Click to see histograms. Total time spent on operations: 19.0ms
ival-mult: 7.0ms (37.3% of total)
ival-sqrt: 6.0ms (32% of total)
ival-hypot: 5.0ms (26.6% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series531.0ms (27.3%)

Memory
-30.8MiB live, 10.0MiB allocated
Counts
11 → 120
Calls
Call 1
Inputs
#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())
#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())
#s(alt (sqrt.f64 #s(literal 2 binary64)) (patch (sqrt.f64 #s(literal 2 binary64)) #<representation binary64>) () ())
#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())
#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())
#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())
#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())
#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())
#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())
#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())
Outputs
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) (patch (*.f64 (sqrt.f64 #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (*.f64 (*.f64 x x) #s(literal 2 binary64)) (patch (*.f64 (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) (patch (sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (patch (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
Calls

3 calls:

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

simplify131.0ms (6.7%)

Memory
32.7MiB live, 71.0MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022500
150500
2136500
3263500
4491500
5809500
61420500
71546500
81601500
91639500
101822500
112036500
122080500
132108500
142112500
152112500
162253500
172437500
183518500
193636500
203660500
213668500
223672500
233676500
243788500
253836500
263836500
274001500
04001500
Stop Event
iter limit
saturated
Counts
120 → 120
Calls
Call 1
Inputs
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(sqrt x)
(sqrt x)
(sqrt x)
(sqrt x)
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(sqrt x)
(sqrt x)
(sqrt x)
(sqrt x)
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
Outputs
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 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)))
(* -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)))
(* -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)))
(* -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)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))

rewrite27.0ms (1.4%)

Memory
-7.1MiB live, 31.4MiB allocated
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01647
02540
15338
020338
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
11 → 83
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(sqrt.f64 x)
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
(hypot.f64 x x)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval19.0ms (1%)

Memory
-2.8MiB live, 35.6MiB allocated
Compiler

Compiled 1 419 to 169 computations (88.1% saved)

prune21.0ms (1.1%)

Memory
-15.1MiB live, 31.2MiB allocated
Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New2012203
Fresh000
Picked134
Done000
Total2025207
Accuracy
100.0%
Counts
207 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.0%
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))))
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
55.1%
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
99.3%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Compiler

Compiled 29 to 23 computations (20.7% saved)

simplify3.0ms (0.2%)

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

Found 8 expressions of interest:

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

Useful iterations: 1 (0.0ms)

IterNodesCost
0936
01636
12232
22532
33232
43432
03432
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 x)
x
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 x)
x
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
Outputs
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 (*.f64 #s(literal 2 binary64) x)) (sqrt.f64 x))
(sqrt.f64 x)
x
(sqrt.f64 (+.f64 x x))
(sqrt.f64 (*.f64 #s(literal 2 binary64) x))
(+.f64 x x)
(*.f64 #s(literal 2 binary64) x)
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 x)
x
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)

localize27.0ms (1.4%)

Memory
15.7MiB live, 54.6MiB allocated
Localize:

Found 8 expressions of interest:

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

Compiled 38 to 11 computations (71.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-sqrt: 7.0ms (53.8% of total)
ival-mult: 5.0ms (38.4% of total)
ival-add: 1.0ms (7.7% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series7.0ms (0.4%)

Memory
-25.9MiB live, 13.0MiB allocated
Counts
7 → 72
Calls
Call 1
Inputs
#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())
#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())
#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())
#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())
#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())
#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())
#s(alt (sqrt.f64 #s(literal 2 binary64)) (patch (sqrt.f64 #s(literal 2 binary64)) #<representation binary64>) () ())
Outputs
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) (patch (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
Calls

3 calls:

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

simplify78.0ms (4%)

Memory
48.8MiB live, 76.4MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
024308
159308
2205308
3427308
4977308
51511308
61873308
71914308
81925308
91934308
101936308
111956308
121964308
131964308
142008308
152279308
162287308
02287308
Stop Event
iter limit
saturated
Counts
72 → 72
Calls
Call 1
Inputs
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(sqrt x)
(sqrt x)
(sqrt x)
(sqrt x)
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(sqrt x)
(sqrt x)
(sqrt x)
(sqrt x)
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2))))
(* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2))))
(* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2))))
(* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2))))
(* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2))))
(* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2))))
(* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2))))
(* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2))))
Outputs
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (neg.f64 x) (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 #s(literal -2 binary64))))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 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)))
(* -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)))
(* -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)))
(* -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)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* x (* (pow (sqrt -1) 2) (sqrt 2))))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2))))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2))))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2))))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* (sqrt x) (* (pow (sqrt -1) 2) (sqrt 2))))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))

rewrite31.0ms (1.6%)

Memory
-11.7MiB live, 40.5MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0931
01631
13923
016219
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
7 → 81
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 x)
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval23.0ms (1.2%)

Memory
-28.5MiB live, 47.7MiB allocated
Compiler

Compiled 1 536 to 158 computations (89.7% saved)

prune8.0ms (0.4%)

Memory
21.8MiB live, 21.8MiB allocated
Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New1850185
Fresh000
Picked022
Done033
Total1855190
Accuracy
100.0%
Counts
190 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.0%
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))))
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
55.1%
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
99.3%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Compiler

Compiled 73 to 43 computations (41.1% saved)

regimes14.0ms (0.7%)

Memory
-16.1MiB live, 22.7MiB allocated
Counts
7 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(sqrt.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 #s(literal 2 binary64) x)))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64))))
(hypot.f64 x x)
Outputs
(hypot.f64 x x)
Calls

4 calls:

5.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
3.0ms
x
2.0ms
(*.f64 x x)
2.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
100.0%1(+.f64 (*.f64 x x) (*.f64 x x))
100.0%1(*.f64 x x)
Compiler

Compiled 19 to 10 computations (47.4% saved)

regimes10.0ms (0.5%)

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

4 calls:

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

Compiled 19 to 10 computations (47.4% saved)

regimes15.0ms (0.7%)

Memory
-25.0MiB live, 19.3MiB allocated
Accuracy

Total -28.4b remaining (-6621%)

Threshold costs -28.4b (-6621%)

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

4 calls:

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

Compiled 19 to 10 computations (47.4% saved)

simplify24.0ms (1.2%)

Memory
5.5MiB live, 43.9MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01323
11523
Stop Event
saturated
Calls
Call 1
Inputs
(hypot.f64 x x)
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Outputs
(hypot.f64 x x)
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))

soundness54.0ms (2.8%)

Memory
14.5MiB live, 50.6MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0418
0714
12310
01609
01647
02540
15338
020338
08148
115148
232148
337148
441148
553148
665148
776148
896148
9101148
0101148
Stop Event
done
iter limit
saturated
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
iter limit
iter limit
unsound
iter limit
Compiler

Compiled 59 to 37 computations (37.3% saved)

preprocess38.0ms (2%)

Memory
-24.1MiB live, 56.0MiB allocated
Remove

(abs x)

Compiler

Compiled 58 to 36 computations (37.9% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...