8
8
! Vector norms
9
9
submodule(stdlib_linalg) stdlib_linalg_norms
10
10
use stdlib_linalg_constants
11
- use stdlib_linalg_blas
12
- use stdlib_linalg_lapack
11
+ use stdlib_linalg_blas, only: nrm2
12
+ use stdlib_linalg_lapack, only: lange
13
13
use stdlib_linalg_state, only: linalg_state_type, linalg_error_handling, LINALG_ERROR, &
14
14
LINALG_INTERNAL_ERROR, LINALG_VALUE_ERROR
15
15
use iso_c_binding, only: c_intptr_t,c_char,c_loc
@@ -459,7 +459,7 @@ ${loop_variables_end(rank-1," "*12)}$
459
459
460
460
type(linalg_state_type) :: err_
461
461
integer(ilp) :: j,m,n,lda,dims(2),norm_request
462
- integer(ilp), dimension(${rank}$) :: s,spack,perm
462
+ integer(ilp), dimension(${rank}$) :: s,spack,perm,iperm
463
463
integer(ilp), dimension(${rank}$), parameter :: dim_range = [(m,m=1_ilp,${rank}$_ilp)]
464
464
integer(ilp) :: ${loop_variables('j',rank-2,2)}$
465
465
logical :: contiguous_data
@@ -515,9 +515,10 @@ ${loop_variables_end(rank-1," "*12)}$
515
515
else
516
516
517
517
! Dimension permutations to map dims(1),dims(2) => 1:2
518
- perm = [dims,pack(dim_range, dim_range/=dims(1) .and. dim_range/=dims(2))]
518
+ perm = [dims,pack(dim_range, dim_range/=dims(1) .and. dim_range/=dims(2))]
519
+ iperm(perm) = dim_range
519
520
spack = s(perm)
520
- apack = reshape(a, shape=spack, order=perm)
521
+ apack = reshape(a, shape=spack, order=iperm)
521
522
522
523
endif
523
524
@@ -543,6 +544,8 @@ ${loop_variables_end(rank-2)}$
543
544
544
545
end function matrix_norm_${rank}$D_to_${rank-2}$D_${ii}$_${ri}$
545
546
547
+ #:endfor
548
+
546
549
#:endfor
547
550
#:endfor
548
551
0 commit comments