Examples.Basics.ProofTests:f4 from sbv-4.4

Time bar (total: 1.1s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze0.0ms (0%)

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

Compiled 15 to 11 computations (26.7% saved)

sample749.0ms (71.3%)

Memory
-16.1MiB live, 1 070.5MiB allocated
Samples
492.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 299.0ms
ival-mult: 216.0ms (72.3% of total)
ival-add: 68.0ms (22.8% of total)
ival-true: 6.0ms (2% of total)
exact: 5.0ms (1.7% of total)
ival-assert: 3.0ms (1% of total)
Bogosity

explain118.0ms (11.3%)

Memory
-5.1MiB live, 194.3MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
130-0-(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
80-0-(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
10-0-(*.f64 (*.f64 x #s(literal 2 binary64)) y)
00-0-(*.f64 x #s(literal 2 binary64))
00-0-(*.f64 x x)
00-0-y
00-0-#s(literal 2 binary64)
00-0-(*.f64 y y)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
+.f64(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))nan-rescue130
(*.f64 x x)overflow72
(*.f64 x #s(literal 2 binary64))overflow1
(*.f64 (*.f64 x #s(literal 2 binary64)) y)overflow37
+.f64(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))nan-rescue80
(*.f64 x #s(literal 2 binary64))overflow1
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))overflow81
(*.f64 x x)overflow72
(*.f64 (*.f64 x #s(literal 2 binary64)) y)overflow37
(*.f64 y y)overflow64
*.f64(*.f64 (*.f64 x #s(literal 2 binary64)) y)n*o10
Confusion
Predicted +Predicted -
+180
-0238
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+1800
-00238
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
0238
114
24
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
37.0ms512×0valid
Compiler

Compiled 134 to 40 computations (70.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 22.0ms
ival-mult: 17.0ms (77.7% of total)
ival-add: 4.0ms (18.3% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess3.0ms (0.2%)

Memory
4.9MiB live, 4.9MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
Outputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
Compiler

Compiled 13 to 9 computations (30.8% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
93.0%
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify0.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
cost-diff0
(*.f64 x x)
cost-diff0
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
cost-diff0
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 x x)
x
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(*.f64 x #s(literal 2 binary64))
#s(literal 2 binary64)
y
(*.f64 y y)
Outputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 x x)
x
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(*.f64 x #s(literal 2 binary64))
#s(literal 2 binary64)
y
(*.f64 y y)

localize27.0ms (2.6%)

Memory
-3.0MiB live, 39.7MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x #s(literal 2 binary64))
accuracy0.22797736813742084
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
accuracy1.5976562500000002
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
accuracy2.8007729933208236
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
Samples
21.0ms256×0valid
Compiler

Compiled 80 to 20 computations (75% saved)

Precisions
Click to see histograms. Total time spent on operations: 14.0ms
ival-add: 7.0ms (50.3% of total)
ival-mult: 6.0ms (43.1% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series7.0ms (0.7%)

Memory
12.2MiB live, 12.2MiB allocated
Counts
5 → 17
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 x x)
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(*.f64 x #s(literal 2 binary64))
Outputs
(pow y 2)
(+ (* 2 (* x y)) (pow y 2))
(+ (* x (+ x (* 2 y))) (pow y 2))
(* 2 (* x y))
(* x (+ x (* 2 y)))
(pow x 2)
(* 2 x)
(* (pow x 2) (+ 1 (* 2 (/ y x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ y x)) (/ (pow y 2) (pow x 2)))))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 y) (* -1 (/ (pow y 2) x))) x))))
(+ (* 2 (* x y)) (pow x 2))
(+ (* y (+ y (* 2 x))) (pow x 2))
(* (pow y 2) (+ 1 (* 2 (/ x y))))
(* (pow y 2) (+ 1 (+ (* 2 (/ x y)) (/ (pow x 2) (pow y 2)))))
(* y (+ (* 2 x) (/ (pow x 2) y)))
(* (pow y 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) y))) y))))
(* -1 (* y (+ (* -2 x) (* -1 (/ (pow x 2) y)))))
Calls

6 calls:

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

simplify0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
egg-herbie
Counts
17 → 5
Calls
Call 1
Inputs
(pow y 2)
(+ (* 2 (* x y)) (pow y 2))
(+ (* x (+ x (* 2 y))) (pow y 2))
(* 2 (* x y))
(* x (+ x (* 2 y)))
(pow x 2)
(* 2 x)
(* (pow x 2) (+ 1 (* 2 (/ y x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ y x)) (/ (pow y 2) (pow x 2)))))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 y) (* -1 (/ (pow y 2) x))) x))))
(+ (* 2 (* x y)) (pow x 2))
(+ (* y (+ y (* 2 x))) (pow x 2))
(* (pow y 2) (+ 1 (* 2 (/ x y))))
(* (pow y 2) (+ 1 (+ (* 2 (/ x y)) (/ (pow x 2) (pow y 2)))))
(* y (+ (* 2 x) (/ (pow x 2) y)))
(* (pow y 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) y))) y))))
(* -1 (* y (+ (* -2 x) (* -1 (/ (pow x 2) y)))))
Outputs
(pow y 2)
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
(+ (* 2 (* x y)) (pow y 2))
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(+ (* x (+ x (* 2 y))) (pow y 2))
(*.f64 x x)
(* 2 (* x y))
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(* x (+ x (* 2 y)))
(*.f64 x #s(literal 2 binary64))

rewrite0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Counts
5 → 5
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 x x)
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(*.f64 x #s(literal 2 binary64))
Outputs
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 x x)
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(*.f64 x #s(literal 2 binary64))

eval1.0ms (0.1%)

Memory
1.8MiB live, 1.8MiB allocated
Compiler

Compiled 168 to 23 computations (86.3% saved)

prune2.0ms (0.2%)

Memory
3.2MiB live, 3.2MiB allocated
Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New6410
Fresh000
Picked011
Done000
Total6511
Accuracy
100.0%
Counts
11 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
93.0%
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
57.8%
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
50.3%
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64))) (*.f64 y y))
51.6%
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
55.3%
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
Compiler

Compiled 89 to 60 computations (32.6% saved)

simplify1.0ms (0.1%)

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

Found 14 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x #s(literal 2 binary64))
cost-diff0
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
cost-diff0
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
cost-diff0
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
cost-diff0
(*.f64 y y)
cost-diff0
(*.f64 x #s(literal 2 binary64))
cost-diff0
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64)))
cost-diff0
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64))) (*.f64 y y))
cost-diff0
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
cost-diff0
(*.f64 x x)
cost-diff0
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
cost-diff0
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
cost-diff0
(*.f64 x x)
cost-diff0
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
(*.f64 x x)
x
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 x x)
x
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(*.f64 x #s(literal 2 binary64))
#s(literal 2 binary64)
y
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64))) (*.f64 y y))
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64)))
(*.f64 x #s(literal 2 binary64))
x
#s(literal 2 binary64)
(*.f64 y y)
y
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(*.f64 x #s(literal 2 binary64))
x
#s(literal 2 binary64)
y
(*.f64 y y)
Outputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
(*.f64 x x)
x
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 x x)
x
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(*.f64 x #s(literal 2 binary64))
#s(literal 2 binary64)
y
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64))) (*.f64 y y))
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64)))
(*.f64 x #s(literal 2 binary64))
x
#s(literal 2 binary64)
(*.f64 y y)
y
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(*.f64 x #s(literal 2 binary64))
x
#s(literal 2 binary64)
y
(*.f64 y y)

localize35.0ms (3.4%)

Memory
-7.7MiB live, 67.8MiB allocated
Localize:

Found 14 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x #s(literal 2 binary64))
accuracy0.22797736813742084
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
accuracy1.5976562500000002
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
accuracy25.26612310742896
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
accuracy0.0
(*.f64 y y)
accuracy0.0
(*.f64 x #s(literal 2 binary64))
accuracy1.5976562500000002
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64))) (*.f64 y y))
accuracy61.35188608507113
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64)))
accuracy0.0
(*.f64 x #s(literal 2 binary64))
accuracy0.22797736813742084
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
accuracy2.8007729933208236
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
accuracy28.45996594541025
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
accuracy0.0
(*.f64 x x)
accuracy28.637982015929925
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
Samples
26.0ms256×0valid
Compiler

Compiled 276 to 32 computations (88.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-mult: 10.0ms (76.8% of total)
ival-add: 2.0ms (15.4% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series5.0ms (0.5%)

Memory
13.2MiB live, 13.2MiB allocated
Counts
11 → 17
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
(*.f64 x x)
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64))) (*.f64 y y))
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64)))
(*.f64 x #s(literal 2 binary64))
(*.f64 y y)
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
Outputs
(pow y 2)
(+ (* 2 (* x y)) (pow y 2))
(+ (* x (+ x (* 2 y))) (pow y 2))
(pow x 2)
(* 2 (* x y))
(* x (+ x (* 2 y)))
(* 2 x)
(* (pow x 2) (+ 1 (* 2 (/ y x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ y x)) (/ (pow y 2) (pow x 2)))))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 y) (* -1 (/ (pow y 2) x))) x))))
(+ (* 2 (* x y)) (pow x 2))
(+ (* y (+ y (* 2 x))) (pow x 2))
(* (pow y 2) (+ 1 (* 2 (/ x y))))
(* (pow y 2) (+ 1 (+ (* 2 (/ x y)) (/ (pow x 2) (pow y 2)))))
(* y (+ (* 2 x) (/ (pow x 2) y)))
(* (pow y 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) y))) y))))
(* -1 (* y (+ (* -2 x) (* -1 (/ (pow x 2) y)))))
Calls

6 calls:

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

simplify1.0ms (0.1%)

Memory
2.2MiB live, 2.2MiB allocated
Algorithm
egg-herbie
Counts
17 → 11
Calls
Call 1
Inputs
(pow y 2)
(+ (* 2 (* x y)) (pow y 2))
(+ (* x (+ x (* 2 y))) (pow y 2))
(pow x 2)
(* 2 (* x y))
(* x (+ x (* 2 y)))
(* 2 x)
(* (pow x 2) (+ 1 (* 2 (/ y x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ y x)) (/ (pow y 2) (pow x 2)))))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 y) (* -1 (/ (pow y 2) x))) x))))
(+ (* 2 (* x y)) (pow x 2))
(+ (* y (+ y (* 2 x))) (pow x 2))
(* (pow y 2) (+ 1 (* 2 (/ x y))))
(* (pow y 2) (+ 1 (+ (* 2 (/ x y)) (/ (pow x 2) (pow y 2)))))
(* y (+ (* 2 x) (/ (pow x 2) y)))
(* (pow y 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) y))) y))))
(* -1 (* y (+ (* -2 x) (* -1 (/ (pow x 2) y)))))
Outputs
(pow y 2)
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
(+ (* 2 (* x y)) (pow y 2))
(*.f64 x x)
(+ (* x (+ x (* 2 y))) (pow y 2))
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
(pow x 2)
(+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y))
(* 2 (* x y))
(*.f64 (*.f64 x #s(literal 2 binary64)) y)
(* x (+ x (* 2 y)))
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64))) (*.f64 y y))
(* 2 x)
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64)))
(* (pow x 2) (+ 1 (* 2 (/ y x))))
(*.f64 x #s(literal 2 binary64))
(* (pow x 2) (+ 1 (+ (* 2 (/ y x)) (/ (pow y 2) (pow x 2)))))
(*.f64 y y)
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 y) (* -1 (/ (pow y 2) x))) x))))
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
(+ (* 2 (* x y)) (pow x 2))
#s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y))

rewrite1.0ms (0.1%)

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

eval4.0ms (0.4%)

Memory
-30.6MiB live, 8.1MiB allocated
Compiler

Compiled 688 to 41 computations (94% saved)

prune2.0ms (0.2%)

Memory
8.9MiB live, 8.9MiB allocated
Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New27128
Fresh000
Picked134
Done011
Total28533
Accuracy
100.0%
Counts
33 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
93.0%
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
57.8%
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
51.6%
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
60.6%
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
55.3%
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
Compiler

Compiled 89 to 59 computations (33.7% saved)

simplify0.0ms (0%)

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

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 y y)
cost-diff0
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
(*.f64 y y)
y
Outputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
(*.f64 y y)
y

localize23.0ms (2.2%)

Memory
-2.2MiB live, 53.6MiB allocated
Localize:

Found 2 expressions of interest:

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

Compiled 40 to 22 computations (45% saved)

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

series2.0ms (0.2%)

Memory
4.1MiB live, 4.1MiB allocated
Counts
2 → 12
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
(*.f64 y y)
Outputs
(pow y 2)
(+ (* 2 (* x y)) (pow y 2))
(+ (* x (+ x (* 2 y))) (pow y 2))
(pow x 2)
(* (pow x 2) (+ 1 (* 2 (/ y x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ y x)) (/ (pow y 2) (pow x 2)))))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 y) (* -1 (/ (pow y 2) x))) x))))
(+ (* 2 (* x y)) (pow x 2))
(+ (* y (+ y (* 2 x))) (pow x 2))
(* (pow y 2) (+ 1 (* 2 (/ x y))))
(* (pow y 2) (+ 1 (+ (* 2 (/ x y)) (/ (pow x 2) (pow y 2)))))
(* (pow y 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) y))) y))))
Calls

6 calls:

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

simplify0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
egg-herbie
Counts
12 → 2
Calls
Call 1
Inputs
(pow y 2)
(+ (* 2 (* x y)) (pow y 2))
(+ (* x (+ x (* 2 y))) (pow y 2))
(pow x 2)
(* (pow x 2) (+ 1 (* 2 (/ y x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ y x)) (/ (pow y 2) (pow x 2)))))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 y) (* -1 (/ (pow y 2) x))) x))))
(+ (* 2 (* x y)) (pow x 2))
(+ (* y (+ y (* 2 x))) (pow x 2))
(* (pow y 2) (+ 1 (* 2 (/ x y))))
(* (pow y 2) (+ 1 (+ (* 2 (/ x y)) (/ (pow x 2) (pow y 2)))))
(* (pow y 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) y))) y))))
Outputs
(pow y 2)
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
(+ (* 2 (* x y)) (pow y 2))
(*.f64 y y)

rewrite0.0ms (0%)

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

eval0.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Compiler

Compiled 65 to 12 computations (81.5% saved)

prune4.0ms (0.4%)

Memory
-29.4MiB live, 9.4MiB allocated
Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New303
Fresh000
Picked011
Done044
Total358
Accuracy
100.0%
Counts
8 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
93.0%
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
57.8%
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
51.6%
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
60.6%
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
55.3%
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
Compiler

Compiled 195 to 82 computations (57.9% saved)

regimes8.0ms (0.7%)

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

3 calls:

2.0ms
y
2.0ms
x
2.0ms
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
Results
AccuracySegmentsBranch
98.5%3x
98.1%3y
98.5%2(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
Compiler

Compiled 15 to 13 computations (13.3% saved)

regimes7.0ms (0.6%)

Memory
13.4MiB live, 13.4MiB allocated
Counts
5 → 3
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64))) (*.f64 y y))
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
Outputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
Calls

3 calls:

2.0ms
x
2.0ms
y
2.0ms
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
Results
AccuracySegmentsBranch
83.9%4y
86.3%3x
66.4%3(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
Compiler

Compiled 15 to 13 computations (13.3% saved)

regimes2.0ms (0.2%)

Memory
4.5MiB live, 4.5MiB allocated
Counts
4 → 3
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
(+.f64 #s(approx (+ (* x x) (* (* x 2) y)) (*.f64 x #s(literal 2 binary64))) (*.f64 y y))
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)))
Outputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 y y))
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
Calls

1 calls:

2.0ms
x
Results
AccuracySegmentsBranch
85.9%3x
Compiler

Compiled 1 to 2 computations (-100% saved)

regimes4.0ms (0.4%)

Memory
-30.5MiB live, 8.4MiB allocated
Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
Outputs
#s(approx (+ (+ (* x x) (* (* x 2) y)) (* y y)) (*.f64 x x))
Calls

3 calls:

2.0ms
x
1.0ms
(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
1.0ms
y
Results
AccuracySegmentsBranch
55.3%1(+.f64 (+.f64 (*.f64 x x) (*.f64 (*.f64 x #s(literal 2 binary64)) y)) (*.f64 y y))
55.3%1y
55.3%1x
Compiler

Compiled 15 to 13 computations (13.3% saved)

bsearch0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
+inf
NaN
Compiler

Compiled 16 to 14 computations (12.5% saved)

bsearch33.0ms (3.2%)

Memory
25.3MiB live, 64.0MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
15.0ms
641113486843.5437
9.708113303267447e+20
15.0ms
-1.5460526395187075e+30
-209391915899225.94
Samples
17.0ms304×0valid
Compiler

Compiled 700 to 508 computations (27.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 8.0ms (75.3% of total)
ival-add: 2.0ms (18.8% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch2.0ms (0.2%)

Memory
4.0MiB live, 4.0MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
1.0ms
641113486843.5437
9.708113303267447e+20
1.0ms
-1.5460526395187075e+30
-209391915899225.94
Compiler

Compiled 662 to 470 computations (29% saved)

simplify6.0ms (0.6%)

Memory
-32.6MiB live, 9.8MiB allocated

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...