1
1
function LinearAlgebra. norm2 (A:: DArray{T,2} ) where T
2
2
Ac = A. chunks
3
3
norms = [Dagger. @spawn mapreduce (LinearAlgebra. norm_sqr, + , chunk) for chunk in Ac]:: Matrix{DTask}
4
- return sqrt (sum (map (norm-> fetch (norm):: real (T), norms)))
4
+ zeroRT = zero (real (T))
5
+ return sqrt (sum (map (norm-> fetch (norm):: real (T), norms); init= zeroRT))
5
6
end
6
7
function LinearAlgebra. norm2 (A:: UpperTriangular{T,<:DArray{T,2}} ) where T
7
8
Ac = parent (A). chunks
@@ -12,7 +13,10 @@ function LinearAlgebra.norm2(A::UpperTriangular{T,<:DArray{T,2}}) where T
12
13
upper_norms = [Dagger. @spawn mapreduce (LinearAlgebra. norm_sqr, + , chunk) for chunk in Ac_upper]
13
14
Ac_diag = [Dagger. spawn (UpperTriangular, Ac[i,i]) for i in 1 : size (Ac, 1 )]
14
15
diag_norms = [Dagger. @spawn mapreduce (LinearAlgebra. norm_sqr, + , chunk) for chunk in Ac_diag]
15
- return sqrt (sum (map (fetch, upper_norms)) + sum (map (fetch, diag_norms)))
16
+ upper_norms_values = map (fetch, upper_norms)
17
+ diag_norms_values = map (fetch, diag_norms)
18
+ zeroRT = zero (real (T))
19
+ return sqrt (sum (upper_norms_values; init= zeroRT) + sum (diag_norms_values; init= zeroRT))
16
20
end
17
21
function LinearAlgebra. norm2 (A:: LowerTriangular{T,<:DArray{T,2}} ) where T
18
22
Ac = parent (A). chunks
@@ -23,7 +27,10 @@ function LinearAlgebra.norm2(A::LowerTriangular{T,<:DArray{T,2}}) where T
23
27
lower_norms = [Dagger. @spawn mapreduce (LinearAlgebra. norm_sqr, + , chunk) for chunk in Ac_lower]
24
28
Ac_diag = [Dagger. spawn (LowerTriangular, Ac[i,i]) for i in 1 : size (Ac, 1 )]
25
29
diag_norms = [Dagger. @spawn mapreduce (LinearAlgebra. norm_sqr, + , chunk) for chunk in Ac_diag]
26
- return sqrt (sum (map (fetch, lower_norms)) + sum (map (fetch, diag_norms)))
30
+ lower_norms_values = map (fetch, lower_norms)
31
+ diag_norms_values = map (fetch, diag_norms)
32
+ zeroRT = zero (real (T))
33
+ return sqrt (sum (lower_norms_values; init= zeroRT) + sum (diag_norms_values; init= zeroRT))
27
34
end
28
35
29
36
is_cross_symmetric (A1, A2) = A1 == A2'
0 commit comments