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

Time bar (total: 3.3s)

start0.0ms (0%)

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

analyze0.0ms (0%)

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

sample752.0ms (22.8%)

Memory
0.7MiB live, 1 071.0MiB allocated; 290ms collecting garbage
Samples
440.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 178.0ms
ival-add: 92.0ms (51.7% of total)
ival-mult: 75.0ms (42.2% of total)
ival-true: 5.0ms (2.8% of total)
ival-assert: 3.0ms (1.7% of total)
adjust: 2.0ms (1.1% of total)
Bogosity

explain83.0ms (2.5%)

Memory
15.9MiB live, 200.8MiB allocated; 37ms 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
20.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: 4.0ms (46.1% of total)
ival-mult: 4.0ms (46.1% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess271.0ms (8.2%)

Memory
34.6MiB live, 219.4MiB allocated; 67ms 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.0MiB live, 0.0MiB allocated; 0ms collecting garbage
Compiler

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

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

simplify251.0ms (7.6%)

Memory
-5.6MiB live, 187.9MiB allocated; 147ms 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

localize41.0ms (1.2%)

Memory
-33.7MiB live, 21.3MiB allocated; 16ms collecting garbage
Localize:

Found 3 expressions of interest:

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

Compiled 19 to 7 computations (63.2% saved)

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

series3.0ms (0.1%)

Memory
4.8MiB live, 4.8MiB allocated; 0ms 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
1.0ms
x
@inf
((+ (* x x) y) (+ (+ (* x x) y) y) (* x x))
1.0ms
x
@0
((+ (* x x) y) (+ (+ (* x x) y) y) (* x x))
1.0ms
y
@-inf
((+ (* x x) y) (+ (+ (* x x) y) y) (* x x))
0.0ms
x
@-inf
((+ (* x x) y) (+ (+ (* x x) y) y) (* x x))
0.0ms
y
@inf
((+ (* x x) y) (+ (+ (* x x) y) y) (* x x))

simplify166.0ms (5%)

Memory
28.9MiB live, 209.3MiB allocated; 50ms 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))

rewrite63.0ms (1.9%)

Memory
5.5MiB live, 51.0MiB allocated; 8ms 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)))

eval6.0ms (0.2%)

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

Compiled 788 to 181 computations (77% saved)

prune76.0ms (2.3%)

Memory
-33.6MiB live, 10.9MiB allocated; 9ms 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)
46.5%
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
Compiler

Compiled 23 to 17 computations (26.1% saved)

simplify148.0ms (4.5%)

Memory
-3.4MiB live, 136.1MiB allocated; 44ms 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

localize21.0ms (0.6%)

Memory
39.1MiB live, 39.1MiB allocated; 0ms 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.0078125
(+.f64 (fma.f64 x x y) y)
accuracy0.0
(*.f64 #s(literal 2 binary64) y)
accuracy34.269631435769874
#s(approx (+ (+ (* x x) y) y) (*.f64 #s(literal 2 binary64) y))
Samples
14.0ms256×0valid
Compiler

Compiled 41 to 10 computations (75.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-add: 3.0ms (44.3% of total)
ival-mult: 3.0ms (44.3% 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
3.7MiB live, 3.7MiB 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)))

simplify330.0ms (10%)

Memory
-27.2MiB live, 161.2MiB allocated; 43ms 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)

rewrite102.0ms (3.1%)

Memory
17.5MiB live, 62.0MiB allocated; 7ms 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))

eval7.0ms (0.2%)

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

Compiled 1 125 to 206 computations (81.7% saved)

prune28.0ms (0.8%)

Memory
-59.1MiB live, 16.6MiB allocated; 19ms 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))
46.5%
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
55.4%
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
Compiler

Compiled 28 to 18 computations (35.7% saved)

simplify186.0ms (5.6%)

Memory
28.4MiB live, 166.5MiB allocated; 11ms 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

localize100.0ms (3%)

Memory
11.8MiB live, 63.6MiB allocated; 9ms 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)
accuracy34.269631435769874
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
accuracy0.0
(*.f64 x x)
accuracy28.515723962347362
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
Samples
28.0ms256×0valid
Compiler

Compiled 36 to 9 computations (75% saved)

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

series7.0ms (0.2%)

Memory
-32.8MiB live, 10.4MiB allocated; 5ms 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
5.0ms
x
@0
((+ (+ (* 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
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
y
@-inf
((+ (+ (* x x) y) y) (* x x) (+ (+ (* x x) y) y) (+ y y) (+ (* x x) (+ y y)))

simplify227.0ms (6.9%)

Memory
12.0MiB live, 201.6MiB allocated; 27ms 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))

rewrite80.0ms (2.4%)

Memory
1.9MiB live, 47.3MiB 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))

eval11.0ms (0.3%)

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

Compiled 1 705 to 256 computations (85% saved)

prune15.0ms (0.4%)

Memory
-26.0MiB live, 17.7MiB allocated; 6ms 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))
46.5%
#s(approx (+ (+ (* x x) y) y) (+.f64 y y))
55.4%
#s(approx (+ (+ (* x x) y) y) (*.f64 x x))
Compiler

Compiled 86 to 36 computations (58.1% saved)

regimes10.0ms (0.3%)

Memory
34.2MiB live, 34.2MiB allocated; 0ms 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
y
2.0ms
x
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)

regimes28.0ms (0.8%)

Memory
-25.4MiB live, 32.6MiB allocated; 7ms 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:

22.0ms
y
2.0ms
x
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)

regimes10.0ms (0.3%)

Memory
-25.9MiB live, 20.6MiB allocated; 3ms 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:

5.0ms
(*.f64 x x)
2.0ms
y
1.0ms
(+.f64 (+.f64 (*.f64 x x) y) y)
1.0ms
x
Results
AccuracySegmentsBranch
87.8%2(*.f64 x x)
81.0%2(+.f64 (+.f64 (*.f64 x x) y) y)
87.8%2x
71.8%3y
Compiler

Compiled 12 to 12 computations (0% saved)

regimes5.0ms (0.2%)

Memory
13.3MiB live, 13.3MiB 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
y
1.0ms
x
1.0ms
(+.f64 (+.f64 (*.f64 x x) y) y)
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
46.5%1y
46.5%1(+.f64 (+.f64 (*.f64 x x) y) y)
46.5%1(*.f64 x x)
46.5%1x
Compiler

Compiled 12 to 12 computations (0% saved)

bsearch9.0ms (0.3%)

Memory
29.5MiB live, 29.5MiB allocated; 0ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
8.0ms
9.3610443094506e-46
5.100919007471151e-44
Samples
4.0ms112×0valid
Compiler

Compiled 164 to 122 computations (25.6% saved)

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

simplify135.0ms (4.1%)

Memory
-12.5MiB live, 75.0MiB allocated; 10ms 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 6226884921503587/200867255532373784442745261542645325315275374222849104412672 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 6226884921503587/200867255532373784442745261542645325315275374222849104412672 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))

derivations104.0ms (3.2%)

Memory
-20.4MiB live, 89.5MiB allocated; 13ms collecting garbage
Stop Event
done
Compiler

Compiled 49 to 15 computations (69.4% saved)

preprocess24.0ms (0.7%)

Memory
6.8MiB live, 51.1MiB allocated; 5ms 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...