From 51614640879bfbdbd04cb974b07e642bd81e0558 Mon Sep 17 00:00:00 2001 From: elvis Date: Sat, 25 Nov 2023 20:17:20 +0100 Subject: [PATCH] added views decorator --- project/housQR.jl | 49 +- project/testing.ipynb | 2481 +++++++++++++++++++++++++++++++---------- 2 files changed, 1928 insertions(+), 602 deletions(-) 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", + " xmlns=\"http://www.w3.org/2000/svg\" id=\"fig-8b5179c773ea468eb6c7b65a2b2284f0\">\n", "\n", - " \n", + " \n", " \n", " \n", "\n", "\n", - "\n", - "\n", - "Profile results\n", - "\n", - "\n", + "\n", + "\n", + "Profile results\n", + "\n", + "\n", " in :-1\n", - "\n", - "#15 in task.jl:514\n", - "\n", - "eventloop in eventloop.jl:8\n", - "\n", - "invokelatest in essentials.jl:816\n", - "\n", - "#invokelatest#2 in essentials.jl:819\n", - "\n", - "execute_request in execute_request.jl:67\n", - "\n", - "softscope_include_string in SoftGlobalScope.jl:65\n", - "\n", - "include_string in loading.jl:1903\n", - "\n", - "eval in boot.jl:370\n", - "\n", - "\\ in thinQR.jl:109\n", - "\n", - "qyhoust in thinQR.jl:58\n", - "\n", - "getindex in abstractarray.jl:1296\n", - "\n", - "_getindex in multidimensional.jl:861\n", - "\n", - "_unsafe_getindex in multidimensional.jl:873\n", - "\n", - "similar in abstractarray.jl:838\n", - "\n", - "similar in array.jl:374\n", - "\n", - "Array in boot.jl:486\n", - "\n", - "Array in boot.jl:477\n", - "\n", - "_unsafe_getindex in multidimensional.jl:875\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:884\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:889\n", - "\n", - "setindex! in array.jl:969\n", - "\n", - "- in arraymath.jl:8\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:862\n", - "\n", - "materialize in broadcast.jl:873\n", - "\n", - "copy in broadcast.jl:898\n", - "\n", - "copyto! in broadcast.jl:926\n", - "\n", - "copyto! in broadcast.jl:973\n", - "\n", - "macro expansion in simdloop.jl:78\n", - "\n", - "+ in int.jl:87\n", - "\n", - "qrhous! in thinQR.jl:32\n", - "\n", - "getindex in abstractarray.jl:1296\n", - "\n", - "_getindex in multidimensional.jl:861\n", - "\n", - "_unsafe_getindex in multidimensional.jl:873\n", - "\n", - "similar in abstractarray.jl:838\n", - "\n", - "similar in array.jl:374\n", - "\n", - "Array in boot.jl:487\n", - "\n", - "Array in boot.jl:479\n", - "\n", - "_unsafe_getindex in multidimensional.jl:875\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:884\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:887\n", - "\n", - "macro expansion in multidimensional.jl:889\n", - "\n", - "setindex! in array.jl:969\n", - "\n", - "_unsafe_getindex in multidimensional.jl:875\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:884\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:887\n", - "\n", - "macro expansion in multidimensional.jl:889\n", - "\n", - "setindex! in array.jl:969\n", - "\n", - "setindex! in abstractarray.jl:1399\n", - "\n", - "_setindex! in multidimensional.jl:916\n", - "\n", - "_unsafe_setindex! in multidimensional.jl:927\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:930\n", - "\n", - "macro expansion in multidimensional.jl:932\n", - "\n", - "setindex! in array.jl:971\n", - "\n", - "macro expansion in multidimensional.jl:933\n", - "\n", - "iterate in array.jl:893\n", - "\n", - "- in int.jl:1042\n", - "\n", - "- in int.jl:86\n", - "\n", - "macro expansion in cartesian.jl:66\n", - "\n", - "iterate in range.jl:891\n", - "\n", - "== in promotion.jl:499\n", - "\n", - "- in arraymath.jl:8\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:862\n", - "\n", - "materialize in broadcast.jl:873\n", - "\n", - "copy in broadcast.jl:898\n", - "\n", - "copyto! in broadcast.jl:926\n", - "\n", - "copyto! in broadcast.jl:973\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:974\n", - "\n", - "getindex in broadcast.jl:610\n", - "\n", - "_broadcast_getindex in broadcast.jl:655\n", - "\n", - "_getindex in broadcast.jl:679\n", - "\n", - "_broadcast_getindex in broadcast.jl:649\n", - "\n", - "getindex in multidimensional.jl:668\n", - "\n", - "getindex in essentials.jl:14\n", - "\n", - "setindex! in multidimensional.jl:670\n", - "\n", - "setindex! in array.jl:971\n", - "\n", - "macro expansion in simdloop.jl:78\n", - "\n", - "+ in int.jl:87\n", - "\n", - "similar in broadcast.jl:211\n", - "\n", - "similar in broadcast.jl:212\n", - "\n", - "similar in abstractarray.jl:883\n", - "\n", - "similar in abstractarray.jl:884\n", - "\n", - "Array in boot.jl:494\n", - "\n", - "Array in boot.jl:487\n", - "\n", - "Array in boot.jl:479\n", - "\n", - "* in adjtrans.jl:439\n", - "\n", - "broadcast in broadcast.jl:811\n", - "\n", - "materialize in broadcast.jl:873\n", - "\n", - "copy in broadcast.jl:898\n", - "\n", - "copyto! in broadcast.jl:926\n", - "\n", - "copyto! in broadcast.jl:973\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:974\n", - "\n", - "getindex in broadcast.jl:610\n", - "\n", - "_broadcast_getindex in broadcast.jl:655\n", - "\n", - "_getindex in broadcast.jl:679\n", - "\n", - "_broadcast_getindex in broadcast.jl:649\n", - "\n", - "getindex in multidimensional.jl:668\n", - "\n", - "getindex in essentials.jl:13\n", - "\n", - "setindex! in multidimensional.jl:670\n", - "\n", - "setindex! in array.jl:971\n", - "\n", - "macro expansion in simdloop.jl:78\n", - "\n", - "+ in int.jl:87\n", - "\n", - "similar in broadcast.jl:211\n", - "\n", - "similar in broadcast.jl:212\n", - "\n", - "similar in abstractarray.jl:883\n", - "\n", - "similar in abstractarray.jl:884\n", - "\n", - "Array in boot.jl:494\n", - "\n", - "Array in boot.jl:487\n", - "\n", - "Array in boot.jl:479\n", + "\n", + "#15 in task.jl:514\n", + "\n", + "eventloop in eventloop.jl:8\n", + "\n", + "invokelatest in essentials.jl:816\n", + "\n", + "#invokelatest#2 in essentials.jl:819\n", + "\n", + "execute_request in execute_request.jl:67\n", + "\n", + "softscope_include_string in SoftGlobalScope.jl:65\n", + "\n", + "include_string in loading.jl:1903\n", + "\n", + "eval in boot.jl:370\n", + "\n", + "\\ in thinQR.jl:108\n", + "\n", + "qyhoust in thinQR.jl:57\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in multidimensional.jl:861\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "- in arraymath.jl:8\n", + "\n", + "broadcast_preserving_zero_d in broadcast.jl:862\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "qrhous! in thinQR.jl:22\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in multidimensional.jl:861\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "qrhous! in thinQR.jl:31\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in multidimensional.jl:861\n", + "\n", + "_unsafe_getindex in multidimensional.jl:873\n", + "\n", + "similar in abstractarray.jl:838\n", + "\n", + "similar in array.jl:374\n", + "\n", + "Array in boot.jl:487\n", + "\n", + "Array in boot.jl:479\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:887\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "setindex! in abstractarray.jl:1399\n", + "\n", + "_setindex! in multidimensional.jl:916\n", + "\n", + "_unsafe_setindex! in multidimensional.jl:927\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:930\n", + "\n", + "macro expansion in multidimensional.jl:932\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "macro expansion in multidimensional.jl:933\n", + "\n", + "iterate in array.jl:893\n", + "\n", + "getindex in essentials.jl:13\n", + "\n", + "- in int.jl:1042\n", + "\n", + "- in int.jl:86\n", + "\n", + "&lt; in int.jl:494\n", + "\n", + "&lt; in int.jl:487\n", + "\n", + "macro expansion in cartesian.jl:66\n", + "\n", + "iterate in range.jl:891\n", + "\n", + "== in promotion.jl:499\n", + "\n", + "- in arraymath.jl:8\n", + "\n", + "broadcast_preserving_zero_d in broadcast.jl:862\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in multidimensional.jl:668\n", + "\n", + "getindex in essentials.jl:14\n", + "\n", + "setindex! in multidimensional.jl:670\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "macro expansion in simdloop.jl:78\n", + "\n", + "+ in int.jl:87\n", + "\n", + "similar in broadcast.jl:211\n", + "\n", + "similar in broadcast.jl:212\n", + "\n", + "similar in abstractarray.jl:883\n", + "\n", + "similar in abstractarray.jl:884\n", + "\n", + "Array in boot.jl:494\n", + "\n", + "Array in boot.jl:487\n", + "\n", + "Array in boot.jl:479\n", + "\n", + "* in adjtrans.jl:439\n", + "\n", + "broadcast in broadcast.jl:811\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in multidimensional.jl:668\n", + "\n", + "getindex in essentials.jl:13\n", + "\n", + "setindex! in multidimensional.jl:670\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "macro expansion in simdloop.jl:78\n", + "\n", + "+ in int.jl:87\n", "\n", "\n", "\n" @@ -901,283 +863,281 @@ "\n", "\n", "\n", + " xmlns=\"http://www.w3.org/2000/svg\" id=\"fig-2137dd413381499ba382abc181804a16\">\n", "\n", - " \n", + " \n", " \n", " \n", "\n", "\n", - "\n", - "\n", - "Profile results\n", - "\n", - "\n", + "\n", + "\n", + "Profile results\n", + "\n", + "\n", " in :-1\n", - "\n", - "#15 in task.jl:514\n", - "\n", - "eventloop in eventloop.jl:8\n", - "\n", - "invokelatest in essentials.jl:816\n", - "\n", - "#invokelatest#2 in essentials.jl:819\n", - "\n", - "execute_request in execute_request.jl:67\n", - "\n", - "softscope_include_string in SoftGlobalScope.jl:65\n", - "\n", - "include_string in loading.jl:1903\n", - "\n", - "eval in boot.jl:370\n", - "\n", - "\\ in thinQR.jl:109\n", - "\n", - "qyhoust in thinQR.jl:58\n", - "\n", - "getindex in abstractarray.jl:1296\n", - "\n", - "_getindex in multidimensional.jl:861\n", - "\n", - "_unsafe_getindex in multidimensional.jl:873\n", - "\n", - "similar in abstractarray.jl:838\n", - "\n", - "similar in array.jl:374\n", - "\n", - "Array in boot.jl:486\n", - "\n", - "Array in boot.jl:477\n", - "\n", - "_unsafe_getindex in multidimensional.jl:875\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:884\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:889\n", - "\n", - "setindex! in array.jl:969\n", - "\n", - "- in arraymath.jl:8\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:862\n", - "\n", - "materialize in broadcast.jl:873\n", - "\n", - "copy in broadcast.jl:898\n", - "\n", - "copyto! in broadcast.jl:926\n", - "\n", - "copyto! in broadcast.jl:973\n", - "\n", - "macro expansion in simdloop.jl:78\n", - "\n", - "+ in int.jl:87\n", - "\n", - "qrhous! in thinQR.jl:32\n", - "\n", - "getindex in abstractarray.jl:1296\n", - "\n", - "_getindex in multidimensional.jl:861\n", - "\n", - "_unsafe_getindex in multidimensional.jl:873\n", - "\n", - "similar in abstractarray.jl:838\n", - "\n", - "similar in array.jl:374\n", - "\n", - "Array in boot.jl:487\n", - "\n", - "Array in boot.jl:479\n", - "\n", - "_unsafe_getindex in multidimensional.jl:875\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:884\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:887\n", - "\n", - "macro expansion in multidimensional.jl:889\n", - "\n", - "setindex! in array.jl:969\n", - "\n", - "_unsafe_getindex in multidimensional.jl:875\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:884\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:887\n", - "\n", - "macro expansion in multidimensional.jl:889\n", - "\n", - "setindex! in array.jl:969\n", - "\n", - "setindex! in abstractarray.jl:1399\n", - "\n", - "_setindex! in multidimensional.jl:916\n", - "\n", - "_unsafe_setindex! in multidimensional.jl:927\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:930\n", - "\n", - "macro expansion in multidimensional.jl:932\n", - "\n", - "setindex! in array.jl:971\n", - "\n", - "macro expansion in multidimensional.jl:933\n", - "\n", - "iterate in array.jl:893\n", - "\n", - "- in int.jl:1042\n", - "\n", - "- in int.jl:86\n", - "\n", - "macro expansion in cartesian.jl:66\n", - "\n", - "iterate in range.jl:891\n", - "\n", - "== in promotion.jl:499\n", - "\n", - "- in arraymath.jl:8\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:862\n", - "\n", - "materialize in broadcast.jl:873\n", - "\n", - "copy in broadcast.jl:898\n", - "\n", - "copyto! in broadcast.jl:926\n", - "\n", - "copyto! in broadcast.jl:973\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:974\n", - "\n", - "getindex in broadcast.jl:610\n", - "\n", - "_broadcast_getindex in broadcast.jl:655\n", - "\n", - "_getindex in broadcast.jl:679\n", - "\n", - "_broadcast_getindex in broadcast.jl:649\n", - "\n", - "getindex in multidimensional.jl:668\n", - "\n", - "getindex in essentials.jl:14\n", - "\n", - "setindex! in multidimensional.jl:670\n", - "\n", - "setindex! in array.jl:971\n", - "\n", - "macro expansion in simdloop.jl:78\n", - "\n", - "+ in int.jl:87\n", - "\n", - "similar in broadcast.jl:211\n", - "\n", - "similar in broadcast.jl:212\n", - "\n", - "similar in abstractarray.jl:883\n", - "\n", - "similar in abstractarray.jl:884\n", - "\n", - "Array in boot.jl:494\n", - "\n", - "Array in boot.jl:487\n", - "\n", - "Array in boot.jl:479\n", - "\n", - "* in adjtrans.jl:439\n", - "\n", - "broadcast in broadcast.jl:811\n", - "\n", - "materialize in broadcast.jl:873\n", - "\n", - "copy in broadcast.jl:898\n", - "\n", - "copyto! in broadcast.jl:926\n", - "\n", - "copyto! in broadcast.jl:973\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:974\n", - "\n", - "getindex in broadcast.jl:610\n", - "\n", - "_broadcast_getindex in broadcast.jl:655\n", - "\n", - "_getindex in broadcast.jl:679\n", - "\n", - "_broadcast_getindex in broadcast.jl:649\n", - "\n", - "getindex in multidimensional.jl:668\n", - "\n", - "getindex in essentials.jl:13\n", - "\n", - "setindex! in multidimensional.jl:670\n", - "\n", - "setindex! in array.jl:971\n", - "\n", - "macro expansion in simdloop.jl:78\n", - "\n", - "+ in int.jl:87\n", - "\n", - "similar in broadcast.jl:211\n", - "\n", - "similar in broadcast.jl:212\n", - "\n", - "similar in abstractarray.jl:883\n", - "\n", - "similar in abstractarray.jl:884\n", - "\n", - "Array in boot.jl:494\n", - "\n", - "Array in boot.jl:487\n", - "\n", - "Array in boot.jl:479\n", + "\n", + "#15 in task.jl:514\n", + "\n", + "eventloop in eventloop.jl:8\n", + "\n", + "invokelatest in essentials.jl:816\n", + "\n", + "#invokelatest#2 in essentials.jl:819\n", + "\n", + "execute_request in execute_request.jl:67\n", + "\n", + "softscope_include_string in SoftGlobalScope.jl:65\n", + "\n", + "include_string in loading.jl:1903\n", + "\n", + "eval in boot.jl:370\n", + "\n", + "\\ in thinQR.jl:108\n", + "\n", + "qyhoust in thinQR.jl:57\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in multidimensional.jl:861\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "- in arraymath.jl:8\n", + "\n", + "broadcast_preserving_zero_d in broadcast.jl:862\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "qrhous! in thinQR.jl:22\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in multidimensional.jl:861\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "qrhous! in thinQR.jl:31\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in multidimensional.jl:861\n", + "\n", + "_unsafe_getindex in multidimensional.jl:873\n", + "\n", + "similar in abstractarray.jl:838\n", + "\n", + "similar in array.jl:374\n", + "\n", + "Array in boot.jl:487\n", + "\n", + "Array in boot.jl:479\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:887\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "setindex! in abstractarray.jl:1399\n", + "\n", + "_setindex! in multidimensional.jl:916\n", + "\n", + "_unsafe_setindex! in multidimensional.jl:927\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:930\n", + "\n", + "macro expansion in multidimensional.jl:932\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "macro expansion in multidimensional.jl:933\n", + "\n", + "iterate in array.jl:893\n", + "\n", + "getindex in essentials.jl:13\n", + "\n", + "- in int.jl:1042\n", + "\n", + "- in int.jl:86\n", + "\n", + "&lt; in int.jl:494\n", + "\n", + "&lt; in int.jl:487\n", + "\n", + "macro expansion in cartesian.jl:66\n", + "\n", + "iterate in range.jl:891\n", + "\n", + "== in promotion.jl:499\n", + "\n", + "- in arraymath.jl:8\n", + "\n", + "broadcast_preserving_zero_d in broadcast.jl:862\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in multidimensional.jl:668\n", + "\n", + "getindex in essentials.jl:14\n", + "\n", + "setindex! in multidimensional.jl:670\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "macro expansion in simdloop.jl:78\n", + "\n", + "+ in int.jl:87\n", + "\n", + "similar in broadcast.jl:211\n", + "\n", + "similar in broadcast.jl:212\n", + "\n", + "similar in abstractarray.jl:883\n", + "\n", + "similar in abstractarray.jl:884\n", + "\n", + "Array in boot.jl:494\n", + "\n", + "Array in boot.jl:487\n", + "\n", + "Array in boot.jl:479\n", + "\n", + "* in adjtrans.jl:439\n", + "\n", + "broadcast in broadcast.jl:811\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in multidimensional.jl:668\n", + "\n", + "getindex in essentials.jl:13\n", + "\n", + "setindex! in multidimensional.jl:670\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "macro expansion in simdloop.jl:78\n", + "\n", + "+ in int.jl:87\n", "\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", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "Profile results\n", + "\n", + "\n", + " in :-1\n", + "\n", + "#15 in task.jl:514\n", + "\n", + "eventloop in eventloop.jl:8\n", + "\n", + "invokelatest in essentials.jl:816\n", + "\n", + "#invokelatest#2 in essentials.jl:819\n", + "\n", + "execute_request in execute_request.jl:67\n", + "\n", + "softscope_include_string in SoftGlobalScope.jl:65\n", + "\n", + "include_string in loading.jl:1903\n", + "\n", + "eval in boot.jl:370\n", + "\n", + "\\ in housQR.jl:114\n", + "\n", + "qyhoust in housQR.jl:62\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in multidimensional.jl:861\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "- in arraymath.jl:8\n", + "\n", + "broadcast_preserving_zero_d in broadcast.jl:862\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in essentials.jl:13\n", + "\n", + "qrfact in housQR.jl:40\n", + "\n", + "setindex! in abstractarray.jl:1399\n", + "\n", + "_setindex! in multidimensional.jl:916\n", + "\n", + "_unsafe_setindex! in multidimensional.jl:927\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:930\n", + "\n", + "macro expansion in multidimensional.jl:932\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "macro expansion in multidimensional.jl:933\n", + "\n", + "iterate in array.jl:893\n", + "\n", + "macro expansion in cartesian.jl:66\n", + "\n", + "iterate in range.jl:891\n", + "\n", + "== in promotion.jl:499\n", + "\n", + "- in arraymath.jl:8\n", + "\n", + "broadcast_preserving_zero_d in broadcast.jl:862\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in abstractarray.jl:1346\n", + "\n", + "getindex in subarray.jl:286\n", + "\n", + "getindex in essentials.jl:14\n", + "\n", + "setindex! in multidimensional.jl:670\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "similar in broadcast.jl:211\n", + "\n", + "similar in broadcast.jl:212\n", + "\n", + "similar in abstractarray.jl:883\n", + "\n", + "similar in abstractarray.jl:884\n", + "\n", + "Array in boot.jl:494\n", + "\n", + "Array in boot.jl:487\n", + "\n", + "Array in boot.jl:479\n", + "\n", + "* in matmul.jl:1162\n", + "\n", + "broadcast in broadcast.jl:811\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in multidimensional.jl:668\n", + "\n", + "getindex in essentials.jl:13\n", + "\n", + "setindex! in multidimensional.jl:670\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "similar in broadcast.jl:211\n", + "\n", + "similar in broadcast.jl:212\n", + "\n", + "similar in abstractarray.jl:883\n", + "\n", + "similar in abstractarray.jl:884\n", + "\n", + "Array in boot.jl:494\n", + "\n", + "Array in boot.jl:487\n", + "\n", + "Array in boot.jl:479\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "Profile results\n", + "\n", + "\n", + " in :-1\n", + "\n", + "#15 in task.jl:514\n", + "\n", + "eventloop in eventloop.jl:8\n", + "\n", + "invokelatest in essentials.jl:816\n", + "\n", + "#invokelatest#2 in essentials.jl:819\n", + "\n", + "execute_request in execute_request.jl:67\n", + "\n", + "softscope_include_string in SoftGlobalScope.jl:65\n", + "\n", + "include_string in loading.jl:1903\n", + "\n", + "eval in boot.jl:370\n", + "\n", + "\\ in housQR.jl:114\n", + "\n", + "qyhoust in housQR.jl:62\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in multidimensional.jl:861\n", + "\n", + "_unsafe_getindex in multidimensional.jl:875\n", + "\n", + "_unsafe_getindex! in multidimensional.jl:884\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:889\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "- in arraymath.jl:8\n", + "\n", + "broadcast_preserving_zero_d in broadcast.jl:862\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "setindex! in array.jl:969\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in essentials.jl:13\n", + "\n", + "qrfact in housQR.jl:40\n", + "\n", + "setindex! in abstractarray.jl:1399\n", + "\n", + "_setindex! in multidimensional.jl:916\n", + "\n", + "_unsafe_setindex! in multidimensional.jl:927\n", + "\n", + "macro expansion in cartesian.jl:64\n", + "\n", + "macro expansion in multidimensional.jl:930\n", + "\n", + "macro expansion in multidimensional.jl:932\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "macro expansion in multidimensional.jl:933\n", + "\n", + "iterate in array.jl:893\n", + "\n", + "macro expansion in cartesian.jl:66\n", + "\n", + "iterate in range.jl:891\n", + "\n", + "== in promotion.jl:499\n", + "\n", + "- in arraymath.jl:8\n", + "\n", + "broadcast_preserving_zero_d in broadcast.jl:862\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in abstractarray.jl:1296\n", + "\n", + "_getindex in abstractarray.jl:1346\n", + "\n", + "getindex in subarray.jl:286\n", + "\n", + "getindex in essentials.jl:14\n", + "\n", + "setindex! in multidimensional.jl:670\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "similar in broadcast.jl:211\n", + "\n", + "similar in broadcast.jl:212\n", + "\n", + "similar in abstractarray.jl:883\n", + "\n", + "similar in abstractarray.jl:884\n", + "\n", + "Array in boot.jl:494\n", + "\n", + "Array in boot.jl:487\n", + "\n", + "Array in boot.jl:479\n", + "\n", + "* in matmul.jl:1162\n", + "\n", + "broadcast in broadcast.jl:811\n", + "\n", + "materialize in broadcast.jl:873\n", + "\n", + "copy in broadcast.jl:898\n", + "\n", + "copyto! in broadcast.jl:926\n", + "\n", + "copyto! in broadcast.jl:973\n", + "\n", + "macro expansion in simdloop.jl:77\n", + "\n", + "macro expansion in broadcast.jl:974\n", + "\n", + "getindex in broadcast.jl:610\n", + "\n", + "_broadcast_getindex in broadcast.jl:655\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_getindex in broadcast.jl:679\n", + "\n", + "_broadcast_getindex in broadcast.jl:649\n", + "\n", + "getindex in multidimensional.jl:668\n", + "\n", + "getindex in essentials.jl:13\n", + "\n", + "setindex! in multidimensional.jl:670\n", + "\n", + "setindex! in array.jl:971\n", + "\n", + "similar in broadcast.jl:211\n", + "\n", + "similar in broadcast.jl:212\n", + "\n", + "similar in abstractarray.jl:883\n", + "\n", + "similar in abstractarray.jl:884\n", + "\n", + "Array in boot.jl:494\n", + "\n", + "Array in boot.jl:487\n", + "\n", + "Array in boot.jl:479\n", + "\n", + "\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": {