diff --git a/project/housQR.jl b/project/housQR.jl
index 8a2e45e..9f1e31b 100644
--- a/project/housQR.jl
+++ b/project/housQR.jl
@@ -16,19 +16,7 @@ end
-function householder_vector(x::Vector{T})::Tuple{Vector{T}, T} where T
- # returns the normalized vector u such that H*x is a multiple of e_1
- s = norm(x)
- if x[1] ≥ 0
- s = -s
- end
- u = copy(x)
- u[1] -= s
- u ./= norm(u)
- return u, s
-end
-
-function householder_vector(x::Matrix{T})::Tuple{Matrix{T}, T} where T
+function householder_vector(x::AbstractVecOrMat{T})::Tuple{Vector{T}, T} where T
# returns the normalized vector u such that H*x is a multiple of e_1
s = norm(x)
if x[1] ≥ 0
@@ -45,12 +33,12 @@ function qrfact(A::Matrix{T})::QRhous where T
R = deepcopy(A)
d = zeros(n)
- for k ∈ 1:n
- (u, s) = householder_vector(R[k:end, k])
+ for k ∈ 1:min(m, n)
+ @views (u, s) = householder_vector(R[k:m, k])
# construct R
d[k] = s
- R[k:end, k+1:end] -= 2 * u * (u' * R[k:end, k+1:end])
- R[k:end, k] .= u
+ @views R[k:m, k+1:n] -= 2 * u * (u' * R[k:m, k+1:n])
+ R[k:m, k] .= u
end
return QRhous(R, d)
end
@@ -59,19 +47,19 @@ end
function qyhous(A::QRhous{T}, y::AbstractArray{T}) where T
m, n = size(A)
z = deepcopy(y)
- for j ∈ n:-1:1
+ for k ∈ n:-1:1
# z[j:m] = z[j:m] - 2 * A.A[j:m, j] * (A.A[j:m, j]' * z[j:m])
- z[j:m] -= 2 * A.A[j:m, j] .* dot(A.A[j:m, j], z[j:m])
+ @views z[k:m] -= 2 * A.A[k:m, k] .* dot(A.A[k:m, k], z[k:m])
end
return z
end
function qyhoust(A::QRhous{T}, y::AbstractArray{T}) where T
- m, n = size(A.A)
+ m, n = size(A)
z = deepcopy(y)
- for j ∈ 1:n
- # z[j:m] = z[j:m] - A.A[j:m, j] * (A.A[j:m, j]' * z[j:m])
- z[j:m] -= 2 * A.A[j:m, j] .* dot(A.A[j:m, j], z[j:m])
+ for k ∈ 1:n
+ # z[j:m] = z[j:m] - 2 * A.A[j:m, j] * (A.A[j:m, j]' * z[j:m])
+ @views z[k:m] -= 2 * A.A[k:m, k] .* dot(A.A[k:m, k], z[k:m])
end
return z
end
@@ -125,9 +113,18 @@ function (\)(A::QRhous{T}, b::AbstractVector{T}) where T
n, m = size(A)
v = qyhoust(A, b)
x = zeros(m)
- for j ∈ m:-1:1
- x[j] = (v[j] - dot(x[j+1:m], A.A[j, j+1:m])) * A.d[j]^-1
- end
+
+
+ @show size(v)
+ @show size(x)
+ @show size(A.A)
+ @show size(A.d)
+ @show m
+ #@inbounds begin
+ for j ∈ m:-1:1
+ @views x[j] = (v[j] - dot(x[j+1:m], A.A[j, j+1:m])) * A.d[j]^-1
+ end
+ #end
return x
end
diff --git a/project/testing.ipynb b/project/testing.ipynb
index a7f668f..8476a6e 100644
--- a/project/testing.ipynb
+++ b/project/testing.ipynb
@@ -50,42 +50,6 @@
{
"cell_type": "code",
"execution_count": 3,
- "id": "c7f143dc-a80d-4326-83c1-31dac3a6e3e0",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "x = [-1.0000000000000033, 1.0000000000000002, 4.0792198665315527e-16]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "3-element Vector{Float64}:\n",
- " 1.0000000000000009\n",
- " 2.000000000000001\n",
- " 3.000000000000001"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "A = [1. 2. 3.; 1. 3. 6.; 1. 4. 5.]\n",
- "A = qrhous!(A)\n",
- "b = [1., 2, 3]\n",
- "x = A \\ b\n",
- "@show x\n",
- "A * x"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
"id": "afd34800-7b9a-4006-9849-071fa197d962",
"metadata": {},
"outputs": [
@@ -105,7 +69,7 @@
" 2.999999999999999"
]
},
- "execution_count": 2,
+ "execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
@@ -121,15 +85,15 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 1,
"id": "d7d24c53-5485-4f8a-bea3-3fe4ec1f456b",
"metadata": {},
"outputs": [],
"source": [
"using BenchmarkTools\n",
- "A=randn(10000, 100)\n",
+ "A=randn(100, 10_000)\n",
"a=deepcopy(A)\n",
- "y=randn(10000);"
+ "y=randn(100);"
]
},
{
@@ -141,14 +105,14 @@
{
"data": {
"text/plain": [
- "BenchmarkTools.Trial: 11 samples with 1 evaluation.\n",
- " Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m458.557 ms\u001b[22m\u001b[39m … \u001b[35m496.613 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m18.11% … 20.40%\n",
- " Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m475.247 ms \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m20.13%\n",
- " Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m475.772 ms\u001b[22m\u001b[39m ± \u001b[32m 8.688 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m19.88% ± 0.73%\n",
+ "BenchmarkTools.Trial: 20 samples with 1 evaluation.\n",
+ " Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m246.781 ms\u001b[22m\u001b[39m … \u001b[35m278.597 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m18.71% … 22.05%\n",
+ " Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m250.615 ms \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m19.94%\n",
+ " Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m252.757 ms\u001b[22m\u001b[39m ± \u001b[32m 7.079 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m20.18% ± 0.96%\n",
"\n",
- " \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m█\u001b[39m \u001b[34m \u001b[39m\u001b[39m▃\u001b[32m \u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \n",
- " \u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m█\u001b[39m▇\u001b[34m▇\u001b[39m\u001b[39m█\u001b[32m▁\u001b[39m\u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▇\u001b[39m \u001b[39m▁\n",
- " 459 ms\u001b[90m Histogram: frequency by time\u001b[39m 497 ms \u001b[0m\u001b[1m<\u001b[22m\n",
+ " \u001b[39m \u001b[39m \u001b[39m \u001b[39m▄\u001b[39m▁\u001b[39m█\u001b[34m \u001b[39m\u001b[39m \u001b[39m \u001b[39m▁\u001b[39m▁\u001b[32m \u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \n",
+ " \u001b[39m▆\u001b[39m▁\u001b[39m▁\u001b[39m█\u001b[39m█\u001b[39m█\u001b[34m▁\u001b[39m\u001b[39m▁\u001b[39m▆\u001b[39m█\u001b[39m█\u001b[32m▁\u001b[39m\u001b[39m▁\u001b[39m▁\u001b[39m▆\u001b[39m▆\u001b[39m▆\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▆\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▆\u001b[39m \u001b[39m▁\n",
+ " 247 ms\u001b[90m Histogram: frequency by time\u001b[39m 279 ms \u001b[0m\u001b[1m<\u001b[22m\n",
"\n",
" Memory estimate\u001b[90m: \u001b[39m\u001b[33m1.54 GiB\u001b[39m, allocs estimate\u001b[90m: \u001b[39m\u001b[33m4804\u001b[39m."
]
@@ -172,14 +136,14 @@
{
"data": {
"text/plain": [
- "BenchmarkTools.Trial: 77 samples with 1 evaluation.\n",
- " Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m56.414 ms\u001b[22m\u001b[39m … \u001b[35m98.485 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m0.00% … 0.00%\n",
- " Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m62.403 ms \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m0.00%\n",
- " Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m65.010 ms\u001b[22m\u001b[39m ± \u001b[32m 8.780 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m0.75% ± 1.84%\n",
+ "BenchmarkTools.Trial: 85 samples with 1 evaluation.\n",
+ " Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m48.265 ms\u001b[22m\u001b[39m … \u001b[35m75.642 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m0.00% … 6.42%\n",
+ " Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m60.888 ms \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m0.00%\n",
+ " Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m59.241 ms\u001b[22m\u001b[39m ± \u001b[32m 7.561 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m0.76% ± 1.71%\n",
"\n",
- " \u001b[39m \u001b[39m█\u001b[39m▃\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[34m \u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[32m \u001b[39m\u001b[39m \u001b[39m \u001b[39m▄\u001b[39m▂\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \n",
- " \u001b[39m▆\u001b[39m█\u001b[39m█\u001b[39m▃\u001b[39m▃\u001b[39m▅\u001b[39m▅\u001b[39m▃\u001b[39m▃\u001b[39m▁\u001b[39m▃\u001b[34m▃\u001b[39m\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[32m▁\u001b[39m\u001b[39m▃\u001b[39m▁\u001b[39m█\u001b[39m█\u001b[39m▃\u001b[39m▁\u001b[39m▁\u001b[39m▄\u001b[39m▃\u001b[39m▃\u001b[39m▃\u001b[39m▃\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▃\u001b[39m▃\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▅\u001b[39m▃\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▄\u001b[39m▁\u001b[39m▁\u001b[39m▃\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▃\u001b[39m▃\u001b[39m \u001b[39m▁\n",
- " 56.4 ms\u001b[90m Histogram: frequency by time\u001b[39m 88 ms \u001b[0m\u001b[1m<\u001b[22m\n",
+ " \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m▂\u001b[39m█\u001b[39m█\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[32m \u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[34m▂\u001b[39m\u001b[39m▅\u001b[39m▂\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \n",
+ " \u001b[39m▅\u001b[39m▄\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m█\u001b[39m█\u001b[39m█\u001b[39m▇\u001b[39m▄\u001b[39m▁\u001b[39m▅\u001b[39m▁\u001b[39m▅\u001b[39m▁\u001b[39m▁\u001b[39m▄\u001b[39m▄\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▄\u001b[39m▅\u001b[39m▁\u001b[32m▁\u001b[39m\u001b[39m▁\u001b[39m▄\u001b[39m▄\u001b[34m█\u001b[39m\u001b[39m█\u001b[39m█\u001b[39m▅\u001b[39m▄\u001b[39m▄\u001b[39m▁\u001b[39m▅\u001b[39m▅\u001b[39m▅\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▄\u001b[39m▅\u001b[39m▁\u001b[39m▄\u001b[39m▅\u001b[39m▄\u001b[39m▁\u001b[39m▄\u001b[39m▄\u001b[39m▅\u001b[39m▅\u001b[39m▁\u001b[39m▄\u001b[39m▄\u001b[39m▄\u001b[39m \u001b[39m▁\n",
+ " 48.3 ms\u001b[90m Histogram: frequency by time\u001b[39m 73.7 ms \u001b[0m\u001b[1m<\u001b[22m\n",
"\n",
" Memory estimate\u001b[90m: \u001b[39m\u001b[33m7.92 MiB\u001b[39m, allocs estimate\u001b[90m: \u001b[39m\u001b[33m624\u001b[39m."
]
@@ -197,7 +161,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 6,
"id": "43d521a7-6bf4-45c6-abb6-0a07a666570d",
"metadata": {},
"outputs": [],
@@ -217,283 +181,281 @@
"\n",
"\n",
"\n"
@@ -901,283 +863,281 @@
"\n",
"
\n",
"\n",
@@ -1583,7 +1543,7 @@
"\n"
],
"text/plain": [
- "ProfileSVG.FGConfig(Node(FlameGraphs.NodeData(ip:0x0, 0x01, 1:382)), Dict{Symbol, Any}(), FlameGraphs.FlameColors(ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.882,0.698,1.0), RGB{N0f8}(0.435,0.863,0.569), RGB{N0f8}(0.0,0.71,0.545), RGB{N0f8}(0.173,0.639,1.0)], RGB{N0f8}(1.0,1.0,1.0), RGB{N0f8}(0.0,0.0,0.0), ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.953,0.0,0.302), RGB{N0f8}(0.894,0.0,0.255), RGB{N0f8}(0.831,0.129,0.216), RGB{N0f8}(0.773,0.192,0.184)], ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(1.0,0.627,0.0), RGB{N0f8}(1.0,0.643,0.0), RGB{N0f8}(0.965,0.651,0.039), RGB{N0f8}(0.894,0.655,0.11)]), :fcolor, :fcolor, 1.0, false, 50, 2000, 960.0, 0.0, 2.0, \"inherit\", 12.0, false, :none, 0.001)"
+ "ProfileSVG.FGConfig(Node(FlameGraphs.NodeData(ip:0x0, 0x01, 1:212)), Dict{Symbol, Any}(), FlameGraphs.FlameColors(ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.882,0.698,1.0), RGB{N0f8}(0.435,0.863,0.569), RGB{N0f8}(0.0,0.71,0.545), RGB{N0f8}(0.173,0.639,1.0)], RGB{N0f8}(1.0,1.0,1.0), RGB{N0f8}(0.0,0.0,0.0), ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.953,0.0,0.302), RGB{N0f8}(0.894,0.0,0.255), RGB{N0f8}(0.831,0.129,0.216), RGB{N0f8}(0.773,0.192,0.184)], ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(1.0,0.627,0.0), RGB{N0f8}(1.0,0.643,0.0), RGB{N0f8}(0.965,0.651,0.039), RGB{N0f8}(0.894,0.655,0.11)]), :fcolor, :fcolor, 1.0, false, 50, 2000, 960.0, 0.0, 2.0, \"inherit\", 12.0, false, :none, 0.001)"
]
},
"execution_count": 8,
@@ -1598,7 +1558,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 2,
"id": "fb2484bd-fd33-4b42-bc14-1006c4d9811d",
"metadata": {},
"outputs": [],
@@ -1609,67 +1569,1436 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 2,
"id": "eb827167-7fa3-4106-9bac-71a3c237ad5b",
"metadata": {},
"outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = [1.3333333333333313, -0.3333333333333316]\n"
+ ]
+ },
{
"data": {
"text/plain": [
- "2-element Vector{Float64}:\n",
- " 5.810770900369532e-16\n",
- " 0.4999999999999994"
+ "3-element Vector{Float64}:\n",
+ " 0.6666666666666674\n",
+ " 2.6666666666666674\n",
+ " 4.666666666666667"
]
},
- "execution_count": 5,
+ "execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "A = [1. 2; 3 4; 5 6]\n",
- "qr = qrfact(A)\n",
+ "AAA = [1. 2; 3 4; 5 6]\n",
+ "q_r = qrfact(AAA)\n",
"\n",
- "A \\ [1., 2, 3]"
+ "b = [1., 2, 5]\n",
+ "x = q_r \\ b\n",
+ "@show x\n",
+ "q_r.Q * q_r.R * x"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "41d9dca0-6880-4133-8dc3-c35d5c0c9a49",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "size(v) = (100,)\n",
+ "size(x) = (10000,)\n",
+ "size(A.A) = (100, 10000)\n",
+ "size(A.d) = (10000,)\n",
+ "m = 10000\n"
+ ]
+ },
+ {
+ "ename": "LoadError",
+ "evalue": "BoundsError: attempt to access 100-element Vector{Float64} at index [10000]",
+ "output_type": "error",
+ "traceback": [
+ "BoundsError: attempt to access 100-element Vector{Float64} at index [10000]",
+ "",
+ "Stacktrace:",
+ " [1] getindex",
+ " @ ./essentials.jl:13 [inlined]",
+ " [2] maybeview(A::Vector{Float64}, args::Int64)",
+ " @ Base ./views.jl:149",
+ " [3] \\(A::QRhous{Float64}, b::Vector{Float64})",
+ " @ Main.housQR ~/Documents/University/Corsi/Computational Mathematics for Learning and Data Analysis/CMLDA/project/housQR.jl:125",
+ " [4] top-level scope",
+ " @ ./timing.jl:273 [inlined]",
+ " [5] top-level scope",
+ " @ ./In[3]:0"
+ ]
+ }
+ ],
+ "source": [
+ "asd = qrfact(A);\n",
+ "\n",
+ "@time asd \\ y;"
]
},
{
"cell_type": "code",
"execution_count": 9,
- "id": "41d9dca0-6880-4133-8dc3-c35d5c0c9a49",
+ "id": "ee126d8a-ef8e-4cd9-b63c-6fb8696e9766",
"metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " 0.005245 seconds (2.92 k allocations: 22.947 MiB, 46.95% gc time)\n"
+ ]
+ }
+ ],
+ "source": [
+ "asd = qrfact(A);\n",
+ "\n",
+ "@time asd \\ y;"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "13fd94ac-339b-4a9b-8532-10b4b05860bb",
+ "metadata": {
+ "scrolled": true
+ },
"outputs": [
{
"data": {
+ "image/svg+xml": [
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n"
+ ],
"text/plain": [
- "BenchmarkTools.Trial: 21 samples with 1 evaluation.\n",
- " Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m222.384 ms\u001b[22m\u001b[39m … \u001b[35m274.339 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m14.47% … 24.11%\n",
- " Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m250.843 ms \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m18.85%\n",
- " Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m245.919 ms\u001b[22m\u001b[39m ± \u001b[32m 16.588 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m19.02% ± 2.58%\n",
- "\n",
- " \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m▃\u001b[39m▃\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[32m \u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[34m \u001b[39m\u001b[39m█\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m▃\u001b[39m \u001b[39m \n",
- " \u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m█\u001b[39m█\u001b[39m▇\u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▇\u001b[32m▁\u001b[39m\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[34m▇\u001b[39m\u001b[39m█\u001b[39m▇\u001b[39m▁\u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▇\u001b[39m▁\u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m█\u001b[39m \u001b[39m▁\n",
- " 222 ms\u001b[90m Histogram: frequency by time\u001b[39m 274 ms \u001b[0m\u001b[1m<\u001b[22m\n",
- "\n",
- " Memory estimate\u001b[90m: \u001b[39m\u001b[33m1.54 GiB\u001b[39m, allocs estimate\u001b[90m: \u001b[39m\u001b[33m4617\u001b[39m."
+ "ProfileSVG.FGConfig(Node(FlameGraphs.NodeData(ip:0x0, 0x01, 1:122)), Dict{Symbol, Any}(), FlameGraphs.FlameColors(ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.882,0.698,1.0), RGB{N0f8}(0.435,0.863,0.569), RGB{N0f8}(0.0,0.71,0.545), RGB{N0f8}(0.173,0.639,1.0)], RGB{N0f8}(1.0,1.0,1.0), RGB{N0f8}(0.0,0.0,0.0), ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.953,0.0,0.302), RGB{N0f8}(0.894,0.0,0.255), RGB{N0f8}(0.831,0.129,0.216), RGB{N0f8}(0.773,0.192,0.184)], ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(1.0,0.627,0.0), RGB{N0f8}(1.0,0.643,0.0), RGB{N0f8}(0.965,0.651,0.039), RGB{N0f8}(0.894,0.655,0.11)]), :fcolor, :fcolor, 1.0, false, 50, 2000, 960.0, 0.0, 2.0, \"inherit\", 12.0, false, :none, 0.001)"
]
},
- "execution_count": 9,
+ "execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "@benchmark qrfact($A) \\ $y"
+ "@profview qrfact(A) \\ y"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "f505daf2-0a23-415a-bfb7-b282acee8294",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {