Data.Random.Distribution.Normal:normalTail from random-fu-0.2.6.2

Time bar (total: 3.9s)

start0.0ms (0%)

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

analyze0.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated; 0ms collecting garbage
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)

sample962.0ms (24.7%)

Memory
30.1MiB live, 1 149.1MiB allocated; 325ms collecting garbage
Samples
575.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 274.0ms
ival-add: 180.0ms (65.6% of total)
ival-mult: 83.0ms (30.3% of total)
ival-true: 6.0ms (2.2% of total)
ival-assert: 3.0ms (1.1% of total)
adjust: 2.0ms (0.7% of total)
Bogosity

explain71.0ms (1.8%)

Memory
-17.3MiB live, 221.7MiB allocated; 15ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(+.f64 (*.f64 x x) y)
00-0-(+.f64 (+.f64 (*.f64 x x) y) y)
00-0-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
22.0ms512×0valid
Compiler

Compiled 45 to 19 computations (57.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 9.0ms
ival-add: 5.0ms (54.1% of total)
ival-mult: 4.0ms (43.3% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess209.0ms (5.4%)

Memory
28.3MiB live, 212.8MiB allocated; 20ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01541
14738
212136
319835
431235
538235
659035
7138235
8612735
057
087
1167
2387
3827
41177
51557
62477
76087
829007
082746
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x x) y) y)
Outputs
(+.f64 (+.f64 (*.f64 x x) y) y)
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
Symmetry

(abs x)

Compiler

Compiled 7 to 5 computations (28.6% saved)

eval0.0ms (0%)

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

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (+.f64 (*.f64 x x) y) y)
Compiler

Compiled 7 to 5 computations (28.6% saved)

simplify144.0ms (3.7%)

Memory
-13.6MiB live, 168.0MiB allocated; 59ms collecting garbage
Localize:

Found 3 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0517
0817
11617
23817
38217
411717
515517
624717
760817
8290017
0827415
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x x) y) y)
(+.f64 (*.f64 x x) y)
(*.f64 x x)
x
y
Outputs
(+.f64 (+.f64 (*.f64 x x) y) y)
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(+.f64 (*.f64 x x) y)
(fma.f64 x x y)
(*.f64 x x)
x
y

localize15.0ms (0.4%)

Memory
36.9MiB live, 36.9MiB allocated; 0ms collecting garbage
Localize:

Found 3 expressions of interest:

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

Compiled 19 to 7 computations (63.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 4.0ms
ival-add: 2.0ms (45.6% of total)
ival-mult: 2.0ms (45.6% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series9.0ms (0.2%)

Memory
-37.4MiB live, 8.5MiB allocated; 11ms collecting garbage
Counts
3 → 11
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) y)
(+.f64 (+.f64 (*.f64 x x) y) y)
(*.f64 x x)
Outputs
y
(+ y (pow x 2))
(* 2 y)
(+ (* 2 y) (pow x 2))
(pow x 2)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(* (pow x 2) (+ 1 (* 2 (/ y (pow x 2)))))
(* y (+ 1 (/ (pow x 2) y)))
(* y (+ 2 (/ (pow x 2) y)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 2)))
Calls

6 calls:

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

simplify239.0ms (6.2%)

Memory
27.2MiB live, 234.6MiB allocated; 42ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02755
18255
224355
3110255
4606555
0803047
Stop Event
iter limit
node limit
Counts
11 → 10
Calls
Call 1
Inputs
y
(+ y (pow x 2))
(* 2 y)
(+ (* 2 y) (pow x 2))
(pow x 2)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(* (pow x 2) (+ 1 (* 2 (/ y (pow x 2)))))
(* y (+ 1 (/ (pow x 2) y)))
(* y (+ 2 (/ (pow x 2) y)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 2)))
Outputs
y
(+ y (pow x 2))
(fma.f64 x x y)
(* 2 y)
(*.f64 #s(literal 2 binary64) y)
(+ (* 2 y) (pow x 2))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(fma.f64 x x y)
(* (pow x 2) (+ 1 (* 2 (/ y (pow x 2)))))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(* y (+ 1 (/ (pow x 2) y)))
(fma.f64 x x y)
(* y (+ 2 (/ (pow x 2) y)))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
(fma.f64 x x y)
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 2)))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))

rewrite85.0ms (2.2%)

Memory
-16.9MiB live, 128.5MiB allocated; 15ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0515
0815
14115
035613
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
3 → 57
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) y)
(+.f64 (+.f64 (*.f64 x x) y) y)
(*.f64 x x)
Outputs
(/.f64 (-.f64 (*.f64 y y) (pow.f64 x #s(literal 4 binary64))) (-.f64 y (*.f64 x x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))) (neg.f64 (-.f64 (*.f64 x x) y)))
(/.f64 (neg.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 3 binary64)))) (neg.f64 (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) (-.f64 (*.f64 x x) y))
(/.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 3 binary64))) (fma.f64 y y (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y (*.f64 x x)))))
(/.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 3 binary64))) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) y)
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) y)
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) y)
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) y)
(fma.f64 (neg.f64 x) (neg.f64 x) y)
(fma.f64 (fabs.f64 x) (fabs.f64 x) y)
(fma.f64 x x y)
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 x x) y)) (/.f64 (*.f64 y y) (-.f64 (*.f64 x x) y)))
(-.f64 y (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 y (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 y (*.f64 (neg.f64 x) x))
(-.f64 y (*.f64 x (neg.f64 x)))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 y (*.f64 x x))
(+.f64 (*.f64 x x) y)
(/.f64 (-.f64 (*.f64 y y) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64))) (-.f64 y (fma.f64 x x y)))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 #s(literal 2 binary64) y))) (-.f64 (*.f64 x x) (*.f64 #s(literal 2 binary64) y)))
(/.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 #s(literal 2 binary64) y) #s(literal 3 binary64))) (+.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 #s(literal 2 binary64) y)) (*.f64 (*.f64 x x) (*.f64 #s(literal 2 binary64) y)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 y y))) (neg.f64 (-.f64 (fma.f64 x x y) y)))
(/.f64 (neg.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)))) (neg.f64 (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 y y)) (-.f64 (fma.f64 x x y) y))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 3 binary64))) (fma.f64 y y (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 (fma.f64 x x y) y))))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 3 binary64))) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64))))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 #s(literal 2 binary64) y))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
(-.f64 (/.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (-.f64 (fma.f64 x x y) y)) (/.f64 (*.f64 y y) (-.f64 (fma.f64 x x y) y)))
(+.f64 (/.f64 (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))))
(+.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x))
(+.f64 (fma.f64 x x y) y)
(+.f64 y (fma.f64 x x y))
(+.f64 (*.f64 x x) (*.f64 #s(literal 2 binary64) y))
(*.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(*.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)))
(*.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 x x)
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (fabs.f64 x) #s(literal 2 binary64))
(pow.f64 x #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 x) x))
(neg.f64 (*.f64 x (neg.f64 x)))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))

eval56.0ms (1.4%)

Memory
-26.2MiB live, 19.2MiB allocated; 3ms collecting garbage
Compiler

Compiled 788 to 181 computations (77% saved)

prune3.0ms (0.1%)

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

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New58361
Fresh000
Picked101
Done000
Total59362
Accuracy
100.0%
Counts
62 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
100.0%
(+.f64 (fma.f64 x x y) y)
54.2%
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
Compiler

Compiled 23 to 17 computations (26.1% saved)

simplify131.0ms (3.4%)

Memory
23.7MiB live, 215.2MiB allocated; 17ms collecting garbage
Localize:

Found 6 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01139
01439
12939
26839
314339
425439
565839
6296339
0833739
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
(*.f64 #s(literal 2 binary64) y)
#s(literal 2 binary64)
y
(+.f64 (fma.f64 x x y) y)
(fma.f64 x x y)
x
y
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
x
(*.f64 #s(literal 2 binary64) y)
#s(literal 2 binary64)
y
Outputs
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
(*.f64 #s(literal 2 binary64) y)
#s(literal 2 binary64)
y
(+.f64 (fma.f64 x x y) y)
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(fma.f64 x x y)
x
y
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
x
(*.f64 #s(literal 2 binary64) y)
#s(literal 2 binary64)
y

localize93.0ms (2.4%)

Memory
-22.9MiB live, 78.6MiB allocated; 10ms collecting garbage
Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
accuracy0.0
(*.f64 #s(literal 2 binary64) y)
accuracy0.0
(fma.f64 x x y)
accuracy0.00390625
(+.f64 (fma.f64 x x y) y)
accuracy0.0
(*.f64 #s(literal 2 binary64) y)
accuracy29.325974747348177
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
Samples
20.0ms256×0valid
Compiler

Compiled 41 to 10 computations (75.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-mult: 4.0ms (52.7% of total)
ival-add: 3.0ms (39.5% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.1%)

Memory
6.0MiB live, 6.0MiB allocated; 0ms collecting garbage
Counts
5 → 11
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
(*.f64 #s(literal 2 binary64) y)
(+.f64 (fma.f64 x x y) y)
(fma.f64 x x y)
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
Outputs
(* 2 y)
(+ (* 2 y) (pow x 2))
y
(+ y (pow x 2))
(pow x 2)
(* (pow x 2) (+ 1 (* 2 (/ y (pow x 2)))))
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(* y (+ 2 (/ (pow x 2) y)))
(* y (+ 1 (/ (pow x 2) y)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 2)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
Calls

6 calls:

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

simplify266.0ms (6.8%)

Memory
-1.2MiB live, 227.6MiB allocated; 140ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02755
18255
224355
3110155
4605355
0821347
Stop Event
iter limit
node limit
Counts
11 → 10
Calls
Call 1
Inputs
(* 2 y)
(+ (* 2 y) (pow x 2))
y
(+ y (pow x 2))
(pow x 2)
(* (pow x 2) (+ 1 (* 2 (/ y (pow x 2)))))
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(* y (+ 2 (/ (pow x 2) y)))
(* y (+ 1 (/ (pow x 2) y)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 2)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
Outputs
(* 2 y)
(*.f64 #s(literal 2 binary64) y)
(+ (* 2 y) (pow x 2))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
y
(+ y (pow x 2))
(fma.f64 x x y)
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (* 2 (/ y (pow x 2)))))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(fma.f64 x x y)
(* y (+ 2 (/ (pow x 2) y)))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(* y (+ 1 (/ (pow x 2) y)))
(fma.f64 x x y)
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 2)))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
(fma.f64 x x y)

rewrite96.0ms (2.5%)

Memory
-18.0MiB live, 90.2MiB allocated; 59ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01129
01429
16329
051829
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
5 → 106
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
(*.f64 #s(literal 2 binary64) y)
(+.f64 (fma.f64 x x y) y)
(fma.f64 x x y)
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
Outputs
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
(*.f64 #s(literal 2 binary64) y)
(*.f64 y #s(literal 2 binary64))
(/.f64 (-.f64 (*.f64 y y) (*.f64 y y)) (-.f64 y y))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) (fma.f64 y y (-.f64 (*.f64 y y) (*.f64 y y))))
(fma.f64 #s(literal 1 binary64) y (*.f64 #s(literal 1 binary64) y))
(fma.f64 y #s(literal 1 binary64) (*.f64 y #s(literal 1 binary64)))
(+.f64 (*.f64 #s(literal 1 binary64) y) (*.f64 #s(literal 1 binary64) y))
(+.f64 (*.f64 y #s(literal 1 binary64)) (*.f64 y #s(literal 1 binary64)))
(+.f64 y y)
(/.f64 (-.f64 (*.f64 #s(literal 4 binary64) (*.f64 y y)) (pow.f64 x #s(literal 4 binary64))) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)))
(/.f64 (-.f64 (*.f64 y y) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64))) (-.f64 y (fma.f64 x x y)))
(/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 #s(literal -2 binary64) y) #s(literal 3 binary64))) (+.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 #s(literal 4 binary64) (*.f64 y y) (*.f64 (*.f64 x x) (*.f64 #s(literal -2 binary64) y)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 #s(literal 4 binary64) (*.f64 y y)))) (neg.f64 (fma.f64 x x (*.f64 #s(literal -2 binary64) y))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 y y))) (neg.f64 (-.f64 (fma.f64 x x y) y)))
(/.f64 (neg.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (neg.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)))) (neg.f64 (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 #s(literal 4 binary64) (*.f64 y y))) (fma.f64 x x (*.f64 #s(literal -2 binary64) y)))
(/.f64 (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 y y)) (-.f64 (fma.f64 x x y) y))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 #s(literal 4 binary64) (*.f64 y y) (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (*.f64 y (*.f64 x x)) #s(literal 2 binary64)))))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 3 binary64))) (fma.f64 y y (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 (fma.f64 x x y) y))))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 3 binary64))) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64))))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) x (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 #s(literal 2 binary64) y))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(fma.f64 y #s(literal 2 binary64) (*.f64 x x))
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 x x (*.f64 #s(literal -2 binary64) y))) (/.f64 (*.f64 #s(literal 4 binary64) (*.f64 y y)) (fma.f64 x x (*.f64 #s(literal -2 binary64) y))))
(-.f64 (/.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (-.f64 (fma.f64 x x y) y)) (/.f64 (*.f64 y y) (-.f64 (fma.f64 x x y) y)))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 (neg.f64 x) x))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x (neg.f64 x)))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 y) #s(literal 2 binary64)))
(-.f64 (*.f64 x x) (*.f64 #s(literal -2 binary64) y))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (*.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64))) (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 (/.f64 (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))))
(+.f64 (fma.f64 x x y) y)
(+.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x))
(+.f64 y (fma.f64 x x y))
(+.f64 (*.f64 x x) (*.f64 #s(literal 2 binary64) y))
(/.f64 (-.f64 (*.f64 y y) (pow.f64 x #s(literal 4 binary64))) (-.f64 y (*.f64 x x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))) (neg.f64 (-.f64 (*.f64 x x) y)))
(/.f64 (neg.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 3 binary64)))) (neg.f64 (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) (-.f64 (*.f64 x x) y))
(/.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 3 binary64))) (fma.f64 y y (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y (*.f64 x x)))))
(/.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 3 binary64))) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) y)
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) y)
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) y)
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) y)
(fma.f64 (pow.f64 x #s(literal 1 binary64)) x y)
(fma.f64 (neg.f64 x) (neg.f64 x) y)
(fma.f64 (fabs.f64 x) (fabs.f64 x) y)
(fma.f64 x x y)
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 x x) y)) (/.f64 (*.f64 y y) (-.f64 (*.f64 x x) y)))
(-.f64 y (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 y (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 y (*.f64 (neg.f64 x) x))
(-.f64 y (*.f64 x (neg.f64 x)))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 y (*.f64 x x))
(+.f64 (*.f64 x x) y)
(/.f64 (-.f64 (*.f64 #s(literal 4 binary64) (*.f64 y y)) (pow.f64 x #s(literal 4 binary64))) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)))
(/.f64 (-.f64 (*.f64 y y) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64))) (-.f64 y (fma.f64 x x y)))
(/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 #s(literal -2 binary64) y) #s(literal 3 binary64))) (+.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 #s(literal 4 binary64) (*.f64 y y) (*.f64 (*.f64 x x) (*.f64 #s(literal -2 binary64) y)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 #s(literal 4 binary64) (*.f64 y y)))) (neg.f64 (fma.f64 x x (*.f64 #s(literal -2 binary64) y))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 y y))) (neg.f64 (-.f64 (fma.f64 x x y) y)))
(/.f64 (neg.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (neg.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)))) (neg.f64 (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 #s(literal 4 binary64) (*.f64 y y))) (fma.f64 x x (*.f64 #s(literal -2 binary64) y)))
(/.f64 (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 y y)) (-.f64 (fma.f64 x x y) y))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 #s(literal 4 binary64) (*.f64 y y) (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (*.f64 y (*.f64 x x)) #s(literal 2 binary64)))))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 3 binary64))) (fma.f64 y y (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 (fma.f64 x x y) y))))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 3 binary64))) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64))))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) x (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 #s(literal 2 binary64) y))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(fma.f64 y #s(literal 2 binary64) (*.f64 x x))
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 x x (*.f64 #s(literal -2 binary64) y))) (/.f64 (*.f64 #s(literal 4 binary64) (*.f64 y y)) (fma.f64 x x (*.f64 #s(literal -2 binary64) y))))
(-.f64 (/.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (-.f64 (fma.f64 x x y) y)) (/.f64 (*.f64 y y) (-.f64 (fma.f64 x x y) y)))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 (neg.f64 x) x))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x (neg.f64 x)))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 y) #s(literal 2 binary64)))
(-.f64 (*.f64 x x) (*.f64 #s(literal -2 binary64) y))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (*.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64))) (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 (/.f64 (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))))
(+.f64 (fma.f64 x x y) y)
(+.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x))
(+.f64 y (fma.f64 x x y))
(+.f64 (*.f64 x x) (*.f64 #s(literal 2 binary64) y))

eval11.0ms (0.3%)

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

Compiled 1 125 to 206 computations (81.7% saved)

prune3.0ms (0.1%)

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

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New78381
Fresh000
Picked303
Done000
Total81384
Accuracy
100.0%
Counts
84 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 x x (+.f64 y y))
54.2%
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
48.2%
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
Compiler

Compiled 28 to 18 computations (35.7% saved)

simplify295.0ms (7.6%)

Memory
-12.0MiB live, 167.8MiB allocated; 77ms collecting garbage
Localize:

Found 6 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01041
01339
12239
25239
310439
416139
525339
665539
7294839
0832239
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
(*.f64 x x)
x
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
(+.f64 y y)
y
(fma.f64 x x (+.f64 y y))
x
(+.f64 y y)
y
Outputs
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
(*.f64 x x)
x
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
(+.f64 y y)
(*.f64 #s(literal 2 binary64) y)
y
(fma.f64 x x (+.f64 y y))
(+.f64 (fma.f64 x x y) y)
x
(+.f64 y y)
(*.f64 #s(literal 2 binary64) y)
y

localize28.0ms (0.7%)

Memory
7.6MiB live, 55.9MiB allocated; 4ms collecting garbage
Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(fma.f64 x x (+.f64 y y))
accuracy0.0
(+.f64 y y)
accuracy0.0
(+.f64 y y)
accuracy29.325974747348177
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
accuracy0.0
(*.f64 x x)
accuracy33.15518439190709
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
Samples
23.0ms256×0valid
Compiler

Compiled 36 to 9 computations (75% saved)

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

series2.0ms (0.1%)

Memory
6.6MiB live, 6.6MiB allocated; 0ms collecting garbage
Counts
5 → 6
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
(*.f64 x x)
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
(+.f64 y y)
(fma.f64 x x (+.f64 y y))
Outputs
(* 2 y)
(+ (* 2 y) (pow x 2))
(pow x 2)
(* (pow x 2) (+ 1 (* 2 (/ y (pow x 2)))))
(* y (+ 2 (/ (pow x 2) y)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 2)))
Calls

6 calls:

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

simplify184.0ms (4.7%)

Memory
-7.2MiB live, 224.7MiB allocated; 26ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01934
15734
218734
392434
4495734
0813330
Stop Event
iter limit
node limit
Counts
6 → 6
Calls
Call 1
Inputs
(* 2 y)
(+ (* 2 y) (pow x 2))
(pow x 2)
(* (pow x 2) (+ 1 (* 2 (/ y (pow x 2)))))
(* y (+ 2 (/ (pow x 2) y)))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 2)))
Outputs
(* 2 y)
(*.f64 #s(literal 2 binary64) y)
(+ (* 2 y) (pow x 2))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (* 2 (/ y (pow x 2)))))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(* y (+ 2 (/ (pow x 2) y)))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 2)))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))

rewrite52.0ms (1.3%)

Memory
16.1MiB live, 60.6MiB allocated; 5ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01034
01332
16232
058932
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
5 → 88
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
(*.f64 x x)
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
(+.f64 y y)
(fma.f64 x x (+.f64 y y))
Outputs
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
(*.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(*.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)))
(*.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 x x)
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (fabs.f64 x) #s(literal 2 binary64))
(pow.f64 x #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 x) x))
(neg.f64 (*.f64 x (neg.f64 x)))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
(*.f64 (*.f64 (*.f64 #s(literal 2 binary64) y) #s(literal 2 binary64)) y)
(*.f64 (pow.f64 (*.f64 #s(literal 2 binary64) y) #s(literal 3/2 binary64)) (pow.f64 (*.f64 #s(literal 2 binary64) y) #s(literal 3/2 binary64)))
(*.f64 (neg.f64 (*.f64 #s(literal 2 binary64) y)) (neg.f64 (*.f64 #s(literal 2 binary64) y)))
(*.f64 (fabs.f64 (*.f64 #s(literal 2 binary64) y)) (fabs.f64 (*.f64 #s(literal 2 binary64) y)))
(*.f64 #s(literal 4 binary64) (*.f64 y y))
(*.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64)))
(*.f64 #s(literal 2 binary64) (*.f64 y (*.f64 #s(literal 2 binary64) y)))
(*.f64 #s(literal 2 binary64) y)
(*.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 #s(literal 2 binary64) y))
(*.f64 y #s(literal 2 binary64))
(pow.f64 (*.f64 #s(literal 2 binary64) y) #s(literal 3 binary64))
(pow.f64 (*.f64 #s(literal 2 binary64) y) #s(literal 2 binary64))
(/.f64 (*.f64 #s(literal 0 binary64) (*.f64 #s(literal 2 binary64) y)) #s(literal 0 binary64))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 y #s(literal 3 binary64))) (*.f64 #s(literal 2 binary64) y)) (fma.f64 y y #s(literal 0 binary64)))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 #s(literal 2 binary64) (pow.f64 y #s(literal 3 binary64)))) (fma.f64 y y #s(literal 0 binary64)))
(/.f64 (neg.f64 (*.f64 #s(literal 2 binary64) (pow.f64 y #s(literal 3 binary64)))) (neg.f64 (fma.f64 y y #s(literal 0 binary64))))
(/.f64 (*.f64 #s(literal 0 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 y #s(literal 3 binary64)))) (*.f64 #s(literal 0 binary64) (fma.f64 y y #s(literal 0 binary64))))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 y #s(literal 3 binary64))) #s(literal 0 binary64)) (*.f64 (fma.f64 y y #s(literal 0 binary64)) #s(literal 0 binary64)))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 y #s(literal 3 binary64))) (*.f64 #s(literal 2 binary64) (pow.f64 y #s(literal 3 binary64)))) (*.f64 (fma.f64 y y #s(literal 0 binary64)) (fma.f64 y y #s(literal 0 binary64))))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (pow.f64 y #s(literal 3 binary64))) #s(literal 3 binary64)) (pow.f64 (fma.f64 y y #s(literal 0 binary64)) #s(literal 3 binary64)))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (*.f64 #s(literal 2 binary64) (pow.f64 y #s(literal 3 binary64))) (fma.f64 y y #s(literal 0 binary64)))
(fma.f64 (*.f64 #s(literal 2 binary64) y) y (*.f64 (*.f64 #s(literal 2 binary64) y) y))
(fma.f64 y (*.f64 #s(literal 2 binary64) y) (*.f64 y (*.f64 #s(literal 2 binary64) y)))
(-.f64 (/.f64 (*.f64 y y) #s(literal 0 binary64)) (/.f64 (*.f64 y y) #s(literal 0 binary64)))
(exp.f64 (*.f64 (log.f64 (*.f64 #s(literal 2 binary64) y)) #s(literal 3 binary64)))
(+.f64 (*.f64 y (*.f64 #s(literal 2 binary64) y)) (*.f64 y (*.f64 #s(literal 2 binary64) y)))
(+.f64 (*.f64 (*.f64 #s(literal 2 binary64) y) y) (*.f64 (*.f64 #s(literal 2 binary64) y) y))
(+.f64 (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y y #s(literal 0 binary64))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y y #s(literal 0 binary64))))
(+.f64 y y)
(/.f64 (-.f64 (*.f64 #s(literal 2 binary64) y) (pow.f64 x #s(literal 4 binary64))) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)))
(/.f64 (-.f64 (*.f64 y y) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64))) (-.f64 y (fma.f64 x x y)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 #s(literal 2 binary64) y))) (neg.f64 (fma.f64 x x (*.f64 #s(literal -2 binary64) y))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 y y))) (neg.f64 (fma.f64 x x #s(literal 0 binary64))))
(/.f64 (neg.f64 (fma.f64 #s(literal 2 binary64) y (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64)))) (neg.f64 (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 #s(literal 2 binary64) y)) (fma.f64 x x (*.f64 #s(literal -2 binary64) y)))
(/.f64 (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 y y)) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (fma.f64 #s(literal 2 binary64) y (pow.f64 x #s(literal 6 binary64))) (fma.f64 #s(literal 2 binary64) y (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (*.f64 (*.f64 x x) #s(literal 2 binary64)) y))))
(/.f64 (fma.f64 #s(literal 2 binary64) y (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(/.f64 (+.f64 (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) (fma.f64 y y (-.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (*.f64 (fma.f64 x x y) y))))
(/.f64 (+.f64 (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64))))
(fma.f64 (*.f64 (*.f64 #s(literal 2 binary64) y) #s(literal 2 binary64)) y (*.f64 x x))
(fma.f64 (pow.f64 (*.f64 #s(literal 2 binary64) y) #s(literal 3/2 binary64)) (pow.f64 (*.f64 #s(literal 2 binary64) y) #s(literal 3/2 binary64)) (*.f64 x x))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (neg.f64 (*.f64 #s(literal 2 binary64) y)) (neg.f64 (*.f64 #s(literal 2 binary64) y)) (*.f64 x x))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (fabs.f64 (*.f64 #s(literal 2 binary64) y)) (fabs.f64 (*.f64 #s(literal 2 binary64) y)) (*.f64 x x))
(fma.f64 #s(literal 4 binary64) (*.f64 y y) (*.f64 x x))
(fma.f64 #s(literal 8 binary64) (pow.f64 y #s(literal 3 binary64)) (*.f64 x x))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 #s(literal 2 binary64) y))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 #s(literal 2 binary64) y))
(fma.f64 #s(literal 2 binary64) (*.f64 y (*.f64 #s(literal 2 binary64) y)) (*.f64 x x))
(fma.f64 #s(literal 2 binary64) y (*.f64 x x))
(fma.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 #s(literal 2 binary64) y) (*.f64 x x))
(fma.f64 y #s(literal 2 binary64) (*.f64 x x))
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 x x (*.f64 #s(literal -2 binary64) y))) (/.f64 (*.f64 #s(literal 2 binary64) y) (fma.f64 x x (*.f64 #s(literal -2 binary64) y))))
(-.f64 (/.f64 (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)) (fma.f64 x x #s(literal 0 binary64))) (/.f64 (*.f64 y y) (fma.f64 x x #s(literal 0 binary64))))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 (neg.f64 x) x))
(-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x (neg.f64 x)))
(-.f64 (*.f64 x x) (*.f64 #s(literal -2 binary64) y))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (*.f64 #s(literal 2 binary64) y) (fma.f64 (*.f64 #s(literal 2 binary64) y) (-.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 (/.f64 (pow.f64 (fma.f64 x x y) #s(literal 3 binary64)) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y (-.f64 y (fma.f64 x x y)) (pow.f64 (fma.f64 x x y) #s(literal 2 binary64)))))
(+.f64 (*.f64 #s(literal 2 binary64) y) (*.f64 x x))
(+.f64 (*.f64 x x) (*.f64 #s(literal 2 binary64) y))
(+.f64 (fma.f64 x x y) y)
(+.f64 y (fma.f64 x x y))

eval161.0ms (4.1%)

Memory
-34.7MiB live, 71.7MiB allocated; 71ms collecting garbage
Compiler

Compiled 1 705 to 256 computations (85% saved)

prune4.0ms (0.1%)

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

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New1200120
Fresh000
Picked033
Done000
Total1203123
Accuracy
100.0%
Counts
123 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 x x (+.f64 y y))
54.2%
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
48.2%
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
Compiler

Compiled 86 to 36 computations (58.1% saved)

regimes13.0ms (0.3%)

Memory
-15.4MiB live, 29.3MiB allocated; 4ms collecting garbage
Counts
7 → 1
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
(+.f64 (fma.f64 x x y) y)
(fma.f64 x x (+.f64 y y))
(+.f64 (+.f64 (*.f64 x x) y) y)
(fma.f64 x x (*.f64 #s(literal 2 binary64) y))
Outputs
(fma.f64 x x (+.f64 y y))
Calls

4 calls:

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

Compiled 12 to 12 computations (0% saved)

regimes7.0ms (0.2%)

Memory
18.7MiB live, 18.7MiB allocated; 0ms collecting garbage
Counts
4 → 1
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
(+.f64 (fma.f64 x x y) y)
Outputs
(+.f64 (fma.f64 x x y) y)
Calls

4 calls:

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

Compiled 12 to 12 computations (0% saved)

regimes6.0ms (0.2%)

Memory
12.9MiB live, 12.9MiB allocated; 0ms collecting garbage
Counts
3 → 2
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
Outputs
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
Calls

4 calls:

1.0ms
y
1.0ms
(+.f64 (+.f64 (*.f64 x x) y) y)
1.0ms
x
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
86.2%2(*.f64 x x)
80.4%2(+.f64 (+.f64 (*.f64 x x) y) y)
86.2%2x
62.7%3y
Compiler

Compiled 12 to 12 computations (0% saved)

regimes5.0ms (0.1%)

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

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

4 calls:

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

Compiled 12 to 12 computations (0% saved)

bsearch27.0ms (0.7%)

Memory
-39.5MiB live, 6.3MiB allocated; 5ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
26.0ms
3.406826067603552e-37
4.857633051272354e-37
Samples
24.0ms48×0valid
Compiler

Compiled 76 to 58 computations (23.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 23.0ms
ival-mult: 22.0ms (95.7% of total)
ival-add: 1.0ms (4.3% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify91.0ms (2.3%)

Memory
3.7MiB live, 56.2MiB allocated; 15ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01549
12349
24549
38849
412449
516749
631749
7149649
8586349
Stop Event
node limit
Calls
Call 1
Inputs
(fma.f64 x x (+.f64 y y))
(+.f64 (fma.f64 x x y) y)
(if (<=.f64 x #s(literal 5746858278247083/11972621413014756705924586149611790497021399392059392 binary64)) #s(approx (+ (+ (* x x) y) y) (+.f64 y y)) #s(approx (+ (+ (* x x) y) y) (*.f64 x x)))
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
Outputs
(fma.f64 x x (+.f64 y y))
(+.f64 (fma.f64 x x y) y)
(if (<=.f64 x #s(literal 5746858278247083/11972621413014756705924586149611790497021399392059392 binary64)) #s(approx (+ (+ (* x x) y) y) (+.f64 y y)) #s(approx (+ (+ (* x x) y) y) (*.f64 x x)))
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))

derivations500.0ms (12.8%)

Memory
20.2MiB live, 345.8MiB allocated; 61ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02755
18255
224355
3110155
4605355
0821347
02755
18255
224355
3110255
4606555
0803047
0515
0815
14115
035613
01129
01429
16329
051829
Stop Event
done
iter limit
iter limit
node limit
iter limit
iter limit
iter limit
node limit
iter limit
iter limit
node limit
iter limit
node limit
Compiler

Compiled 49 to 15 computations (69.4% saved)

preprocess119.0ms (3.1%)

Memory
-10.7MiB live, 139.0MiB allocated; 12ms collecting garbage
Remove

(abs x)

Compiler

Compiled 138 to 58 computations (58% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...