Graphics.Rasterific.Linear:$cquadrance from Rasterific-0.6.1

Time bar (total: 4.0s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze0.0ms (0%)

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

Compiled 9 to 7 computations (22.2% saved)

sample784.0ms (19.4%)

Memory
1.6MiB live, 947.6MiB allocated
Samples
516.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 267.0ms
ival-mult: 178.0ms (66.7% of total)
ival-add: 78.0ms (29.2% of total)
ival-true: 6.0ms (2.2% of total)
ival-assert: 4.0ms (1.5% of total)
Bogosity

explain240.0ms (6%)

Memory
-23.7MiB live, 178.5MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(+.f64 (*.f64 x x) (*.f64 y y))
00-0-y
00-0-(*.f64 y y)
00-0-(*.f64 x x)
00-0-x
Confusion
Predicted +Predicted -
+00
-0256
Precision
0/0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-00256
Precision?
0/0
Recall?
0/0
Freqs
test
numberfreq
0256
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-001
Precision?
0/0
Recall?
0/0
Samples
117.0ms512×0valid
Compiler

Compiled 56 to 24 computations (57.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 104.0ms
ival-mult: 101.0ms (97.1% of total)
ival-add: 3.0ms (2.9% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess18.0ms (0.4%)

Memory
6.8MiB live, 47.4MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01337
13637
28837
318737
422737
523237
057
087
197
096
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 y y))
Outputs
(+.f64 (*.f64 x x) (*.f64 y y))
(fma.f64 y y (*.f64 x x))
Symmetry

(abs y)

(abs x)

(sort x y)

Compiler

Compiled 7 to 5 computations (28.6% saved)

eval0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated
Compiler

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

Memory
1.3MiB live, 1.3MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (*.f64 x x) (*.f64 y y))
Compiler

Compiled 7 to 5 computations (28.6% saved)

simplify3.0ms (0.1%)

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

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 y y)
cost-diff0
(*.f64 x x)
cost-diff128
(+.f64 (*.f64 x x) (*.f64 y y))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0515
0815
1915
0914
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
Outputs
(+.f64 (*.f64 x x) (*.f64 y y))
(fma.f64 y y (*.f64 x x))
(*.f64 x x)
x
(*.f64 y y)
y

localize17.0ms (0.4%)

Memory
-0.7MiB live, 38.0MiB allocated
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0
(+.f64 (*.f64 x x) (*.f64 y y))
accuracy0
(*.f64 y y)
accuracy0
(*.f64 x x)
Samples
11.0ms256×0valid
Compiler

Compiled 32 to 12 computations (62.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-mult: 3.0ms (57.5% of total)
ival-add: 2.0ms (38.3% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series4.0ms (0.1%)

Memory
11.8MiB live, 11.8MiB allocated
Counts
3 → 48
Calls
Call 1
Inputs
#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())
#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())
Outputs
#s(alt (pow x 2) (taylor 0 y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor inf y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor inf y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor inf y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor -inf y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor -inf y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor -inf y) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<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 (pow x 2) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<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 (pow x 2) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 y y)) (patch (+.f64 (*.f64 x x) (*.f64 y y)) #<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>) () ())) ())
Calls

6 calls:

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

simplify198.0ms (4.9%)

Memory
-6.5MiB live, 193.8MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
013216
134216
284216
3339216
41000216
51883216
62170216
72681216
83990216
95169216
105742216
116153216
126344216
136378216
146378216
157576216
08271198
Stop Event
iter limit
node limit
Counts
48 → 48
Calls
Call 1
Inputs
(pow x 2)
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
Outputs
(pow x 2)
(*.f64 x x)
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.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)
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.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)
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.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)

rewrite158.0ms (3.9%)

Memory
-6.4MiB live, 270.7MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0513
0813
12513
217913
3165313
0825812
Stop Event
iter limit
node limit
iter limit
Counts
3 → 172
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
(*.f64 y y)
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>
#<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>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval23.0ms (0.6%)

Memory
4.6MiB live, 40.7MiB allocated
Compiler

Compiled 5 418 to 511 computations (90.6% saved)

prune4.0ms (0.1%)

Memory
13.0MiB live, 13.0MiB allocated
Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New2182220
Fresh000
Picked101
Done000
Total2192221
Accuracy
100.0%
Counts
221 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 y y (*.f64 x x))
99.5%
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
Compiler

Compiled 10 to 8 computations (20% saved)

simplify3.0ms (0.1%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
(fma.f64 y y (*.f64 x x))
cost-diff0
(*.f64 y y)
cost-diff0
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0926
01125
11125
01125
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
(*.f64 y y)
y
(fma.f64 y y (*.f64 x x))
y
(*.f64 x x)
x
Outputs
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
(*.f64 y y)
y
(fma.f64 y y (*.f64 x x))
(fma.f64 x x (*.f64 y y))
y
(*.f64 x x)
x

localize20.0ms (0.5%)

Memory
-9.2MiB live, 29.1MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0
(fma.f64 y y (*.f64 x x))
accuracy0
(*.f64 x x)
accuracy0
(*.f64 y y)
accuracy0.29720752895776065
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
Samples
15.0ms256×0valid
Compiler

Compiled 44 to 14 computations (68.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-mult: 3.0ms (52.3% of total)
ival-add: 2.0ms (34.9% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series4.0ms (0.1%)

Memory
6.2MiB live, 6.2MiB allocated
Counts
4 → 72
Calls
Call 1
Inputs
#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())
#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())
#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())
#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
Outputs
#s(alt (pow x 2) (taylor 0 y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor inf y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor inf y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor inf y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor inf y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor inf y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor inf y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor inf y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor -inf y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor -inf y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor -inf y) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (*.f64 y y) (patch (*.f64 y y) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor -inf y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor -inf y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor -inf y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2)))) (taylor -inf y) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (pow y 2) (taylor 0 x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (+ (pow x 2) (pow y 2)) (taylor 0 x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.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 (pow x 2) (taylor inf x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor inf x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor inf x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor inf x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor inf x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor inf x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor inf x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.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 (pow x 2) (taylor -inf x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor -inf x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor -inf x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor -inf x) (#s(alt #s(approx (+ (* x x) (* y y)) (*.f64 y y)) (patch #s(approx (+ (* x x) (* y y)) (*.f64 y y)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor -inf x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor -inf x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2)))) (taylor -inf x) (#s(alt (fma.f64 y y (*.f64 x x)) (patch (fma.f64 y y (*.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>) () ())) ())
Calls

6 calls:

TimeVariablePointExpression
0.0ms
y
@inf
((+ (* x x) (* y y)) (* y y) (+ (* y y) (* x x)) (* x x))
0.0ms
x
@inf
((+ (* x x) (* y y)) (* y y) (+ (* y y) (* x x)) (* x x))
0.0ms
y
@-inf
((+ (* x x) (* y y)) (* y y) (+ (* y y) (* x x)) (* x x))
0.0ms
x
@-inf
((+ (* x x) (* y y)) (* y y) (+ (* y y) (* x x)) (* x x))
0.0ms
y
@0
((+ (* x x) (* y y)) (* y y) (+ (* y y) (* x x)) (* x x))

simplify202.0ms (5%)

Memory
6.0MiB live, 121.1MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
013360
134360
284360
3339360
41000360
51883360
62170360
72681360
83990360
95169360
105742360
116153360
126344360
136378360
146378360
157576360
08271324
Stop Event
iter limit
node limit
Counts
72 → 72
Calls
Call 1
Inputs
(pow x 2)
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow x 2)
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(pow y 2)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(pow y 2)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(pow y 2)
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(pow y 2)
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(+ (pow x 2) (pow y 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(pow x 2)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(pow x 2)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
Outputs
(pow x 2)
(*.f64 x x)
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow x 2)
(*.f64 x x)
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(pow y 2)
(*.f64 y y)
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.f64 x x))
(+ (pow x 2) (pow y 2))
(fma.f64 y y (*.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)
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.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)
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.f64 x x))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(fma.f64 y y (*.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)

rewrite179.0ms (4.4%)

Memory
-2.3MiB live, 204.1MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0923
01122
13522
227422
3297922
0838422
Stop Event
iter limit
node limit
iter limit
Counts
4 → 224
Calls
Call 1
Inputs
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
(*.f64 y y)
(fma.f64 y y (*.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>
#<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>
#<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>
#<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>

eval71.0ms (1.8%)

Memory
-14.0MiB live, 75.3MiB allocated
Compiler

Compiled 7 367 to 735 computations (90% saved)

prune9.0ms (0.2%)

Memory
-14.7MiB live, 23.6MiB allocated
Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New2960296
Fresh000
Picked022
Done000
Total2962298
Accuracy
100.0%
Counts
298 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 y y (*.f64 x x))
99.5%
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
Compiler

Compiled 27 to 15 computations (44.4% saved)

regimes9.0ms (0.2%)

Memory
15.6MiB live, 15.6MiB allocated
Counts
3 → 1
Calls
Call 1
Inputs
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
(fma.f64 y y (*.f64 x x))
(+.f64 (*.f64 x x) (*.f64 y y))
Outputs
(fma.f64 y y (*.f64 x x))
Calls

5 calls:

2.0ms
y
2.0ms
x
2.0ms
(+.f64 (*.f64 x x) (*.f64 y y))
2.0ms
(*.f64 y y)
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
100.0%1(+.f64 (*.f64 x x) (*.f64 y y))
100.0%1(*.f64 x x)
100.0%1(*.f64 y y)
Compiler

Compiled 15 to 15 computations (0% saved)

regimes8.0ms (0.2%)

Memory
-22.4MiB live, 16.4MiB allocated
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
Outputs
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
Calls

5 calls:

1.0ms
(+.f64 (*.f64 x x) (*.f64 y y))
1.0ms
y
1.0ms
x
1.0ms
(*.f64 y y)
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
99.5%1x
99.5%1y
99.5%1(+.f64 (*.f64 x x) (*.f64 y y))
99.5%1(*.f64 x x)
99.5%1(*.f64 y y)
Compiler

Compiled 15 to 15 computations (0% saved)

simplify23.0ms (0.6%)

Memory
13.6MiB live, 58.6MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 y y (*.f64 x x))
#s(approx (+ (* x x) (* y y)) (*.f64 y y))
Outputs
(fma.f64 y y (*.f64 x x))
#s(approx (+ (* x x) (* y y)) (*.f64 y y))

soundness1.2s (29%)

Memory
15.5MiB live, 172.6MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
013216
134216
284216
3339216
41000216
51883216
62170216
72681216
83990216
95169216
105742216
116153216
126344216
136378216
146378216
157576216
08271198
0513
0813
12513
217913
3165313
0825812
Stop Event
done
iter limit
node limit
iter limit
iter limit
node limit
Compiler

Compiled 26 to 15 computations (42.3% saved)

preprocess885.0ms (21.9%)

Memory
-6.6MiB live, 70.4MiB allocated
Remove

(sort x y)

(abs x)

(abs y)

Compiler

Compiled 70 to 46 computations (34.3% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...