146 use,
intrinsic :: iso_fortran_env, only : int32, real64
147 use ferror,
only : errors
196 public :: create_empty_csr_matrix
197 public :: create_empty_msr_matrix
199 public :: dense_to_csr
200 public :: diag_to_csr
201 public :: banded_to_csr
202 public :: csr_to_dense
205 public :: dense_to_msr
206 public :: msr_to_dense
207 public :: create_csr_matrix
209 public ::
operator(+)
210 public ::
operator(-)
211 public ::
operator(*)
212 public ::
operator(/)
213 public ::
assignment(=)
217 public :: la_no_operation
218 public :: la_transpose
219 public :: la_hermitian_transpose
220 public :: la_no_error
221 public :: la_invalid_input_error
222 public :: la_array_size_error
223 public :: la_singular_matrix_error
224 public :: la_matrix_format_error
225 public :: la_out_of_memory_error
226 public :: la_convergence_error
227 public :: la_invalid_operation_error
236 integer(int32),
allocatable,
dimension(:) :: row_indices
239 integer(int32),
allocatable,
dimension(:) :: column_indices
242 real(real64),
allocatable,
dimension(:) :: values
244 integer(int32),
private :: n = 0
247 procedure,
public :: get => csr_get_element
255 integer(int32),
allocatable,
dimension(:) :: indices
258 real(real64),
allocatable,
dimension(:) :: values
260 integer(int32),
private :: m = 0
262 integer(int32),
private :: n = 0
264 integer(int32),
private :: nnz = 0
271 integer(int32),
parameter :: la_no_operation = 0
273 integer(int32),
parameter :: la_transpose = 1
275 integer(int32),
parameter :: la_hermitian_transpose = 2
281 integer(int32),
parameter :: la_no_error = 0
283 integer(int32),
parameter :: la_invalid_input_error = 101
285 integer(int32),
parameter :: la_array_size_error = 102
287 integer(int32),
parameter :: la_singular_matrix_error = 103
289 integer(int32),
parameter :: la_matrix_format_error = 104
291 integer(int32),
parameter :: la_out_of_memory_error = 105
293 integer(int32),
parameter :: la_convergence_error = 106
295 integer(int32),
parameter :: la_invalid_operation_error = 107
362 module procedure :: mtx_mult_mtx
363 module procedure :: mtx_mult_vec
364 module procedure :: cmtx_mult_mtx
365 module procedure :: cmtx_mult_vec
397 module procedure :: rank1_update_dbl
398 module procedure :: rank1_update_cmplx
554 module procedure :: diag_mtx_mult_mtx
555 module procedure :: diag_mtx_mult_mtx2
556 module procedure :: diag_mtx_mult_mtx3
557 module procedure :: diag_mtx_mult_mtx4
558 module procedure :: diag_mtx_mult_mtx_cmplx
559 module procedure :: diag_mtx_mult_mtx2_cmplx
560 module procedure :: diag_mtx_mult_mtx_mix
561 module procedure :: diag_mtx_mult_mtx2_mix
562 module procedure :: diag_mtx_sparse_mult
579 module procedure :: trace_dbl
580 module procedure :: trace_cmplx
627 module procedure :: mtx_rank_dbl
628 module procedure :: mtx_rank_cmplx
660 module procedure :: det_dbl
661 module procedure :: det_cmplx
682 module procedure :: swap_dbl
683 module procedure :: swap_cmplx
701 module procedure :: recip_mult_array_dbl
735 module procedure :: tri_mtx_mult_dbl
736 module procedure :: tri_mtx_mult_cmplx
845 module procedure :: lu_factor_dbl
846 module procedure :: lu_factor_cmplx
847 module procedure :: csr_lu_factor
968 module procedure :: form_lu_all
969 module procedure :: form_lu_all_cmplx
970 module procedure :: form_lu_only
971 module procedure :: form_lu_only_cmplx
1122 module procedure :: qr_factor_no_pivot
1123 module procedure :: qr_factor_no_pivot_cmplx
1124 module procedure :: qr_factor_pivot
1125 module procedure :: qr_factor_pivot_cmplx
1282 module procedure :: form_qr_no_pivot
1283 module procedure :: form_qr_no_pivot_cmplx
1284 module procedure :: form_qr_pivot
1285 module procedure :: form_qr_pivot_cmplx
1439 module procedure :: mult_qr_mtx
1440 module procedure :: mult_qr_mtx_cmplx
1441 module procedure :: mult_qr_vec
1442 module procedure :: mult_qr_vec_cmplx
1589 module procedure :: qr_rank1_update_dbl
1590 module procedure :: qr_rank1_update_cmplx
1688 module procedure :: cholesky_factor_dbl
1689 module procedure :: cholesky_factor_cmplx
1787 module procedure :: cholesky_rank1_update_dbl
1788 module procedure :: cholesky_rank1_update_cmplx
1894 module procedure :: cholesky_rank1_downdate_dbl
1895 module procedure :: cholesky_rank1_downdate_cmplx
1967 module procedure :: rz_factor_dbl
1968 module procedure :: rz_factor_cmplx
2058 module procedure :: mult_rz_mtx
2059 module procedure :: mult_rz_mtx_cmplx
2060 module procedure :: mult_rz_vec
2061 module procedure :: mult_rz_vec_cmplx
2183 module procedure :: svd_dbl
2184 module procedure :: svd_cmplx
2317 module procedure :: solve_tri_mtx
2318 module procedure :: solve_tri_mtx_cmplx
2319 module procedure :: solve_tri_vec
2320 module procedure :: solve_tri_vec_cmplx
2422 module procedure :: solve_lu_mtx
2423 module procedure :: solve_lu_mtx_cmplx
2424 module procedure :: solve_lu_vec
2425 module procedure :: solve_lu_vec_cmplx
2426 module procedure :: csr_lu_solve
2558 module procedure :: solve_qr_no_pivot_mtx
2559 module procedure :: solve_qr_no_pivot_mtx_cmplx
2560 module procedure :: solve_qr_no_pivot_vec
2561 module procedure :: solve_qr_no_pivot_vec_cmplx
2562 module procedure :: solve_qr_pivot_mtx
2563 module procedure :: solve_qr_pivot_mtx_cmplx
2564 module procedure :: solve_qr_pivot_vec
2565 module procedure :: solve_qr_pivot_vec_cmplx
2664 module procedure :: solve_cholesky_mtx
2665 module procedure :: solve_cholesky_mtx_cmplx
2666 module procedure :: solve_cholesky_vec
2667 module procedure :: solve_cholesky_vec_cmplx
2754 module procedure :: solve_least_squares_mtx
2755 module procedure :: solve_least_squares_mtx_cmplx
2756 module procedure :: solve_least_squares_vec
2757 module procedure :: solve_least_squares_vec_cmplx
2855 module procedure :: solve_least_squares_mtx_pvt
2856 module procedure :: solve_least_squares_mtx_pvt_cmplx
2857 module procedure :: solve_least_squares_vec_pvt
2858 module procedure :: solve_least_squares_vec_pvt_cmplx
2957 module procedure :: solve_least_squares_mtx_svd
2958 module procedure :: solve_least_squares_vec_svd
3052 module procedure :: mtx_inverse_dbl
3053 module procedure :: mtx_inverse_cmplx
3158 module procedure :: mtx_pinverse_dbl
3159 module procedure :: mtx_pinverse_cmplx
3372 module procedure :: eigen_symm
3373 module procedure :: eigen_asymm
3374 module procedure :: eigen_gen
3375 module procedure :: eigen_cmplx
3455 module procedure :: sort_dbl_array
3456 module procedure :: sort_dbl_array_ind
3457 module procedure :: sort_cmplx_array
3458 module procedure :: sort_cmplx_array_ind
3459 module procedure :: sort_eigen_cmplx
3460 module procedure :: sort_eigen_dbl
3461 module procedure :: sort_int32_array
3462 module procedure :: sort_int32_array_ind
3571 module procedure :: lq_factor_no_pivot
3572 module procedure :: lq_factor_no_pivot_cmplx
3685 module procedure :: form_lq_no_pivot
3686 module procedure :: form_lq_no_pivot_cmplx
3834 module procedure :: mult_lq_mtx
3835 module procedure :: mult_lq_mtx_cmplx
3836 module procedure :: mult_lq_vec
3837 module procedure :: mult_lq_vec_cmplx
3929 module procedure :: solve_lq_mtx
3930 module procedure :: solve_lq_mtx_cmplx
3931 module procedure :: solve_lq_vec
3932 module procedure :: solve_lq_vec_cmplx
4031 module procedure :: band_mtx_vec_mult_dbl
4032 module procedure :: band_mtx_vec_mult_cmplx
4073 module procedure :: band_to_full_mtx_dbl
4074 module procedure :: band_to_full_mtx_cmplx
4136 module procedure :: band_diag_mtx_mult_dbl
4137 module procedure :: band_diag_mtx_mult_cmplx
4164 module procedure :: banded_to_dense_dbl
4165 module procedure :: banded_to_dense_cmplx
4189 module procedure :: dense_to_banded_dbl
4190 module procedure :: dense_to_banded_cmplx
4211 module procedure :: extract_diagonal_dbl
4212 module procedure :: extract_diagonal_cmplx
4213 module procedure :: extract_diagonal_csr
4220 module subroutine mtx_mult_mtx(transa, transb, alpha, a, b, beta, c, err)
4221 logical,
intent(in) :: transa, transb
4222 real(real64),
intent(in) :: alpha, beta
4223 real(real64),
intent(in),
dimension(:,:) :: a, b
4224 real(real64),
intent(inout),
dimension(:,:) :: c
4225 class(errors),
intent(inout),
optional,
target :: err
4228 module subroutine mtx_mult_vec(trans, alpha, a, b, beta, c, err)
4229 logical,
intent(in) :: trans
4230 real(real64),
intent(in) :: alpha, beta
4231 real(real64),
intent(in),
dimension(:,:) :: a
4232 real(real64),
intent(in),
dimension(:) :: b
4233 real(real64),
intent(inout),
dimension(:) :: c
4234 class(errors),
intent(inout),
optional,
target :: err
4237 module subroutine cmtx_mult_mtx(opa, opb, alpha, a, b, beta, c, err)
4238 integer(int32),
intent(in) :: opa, opb
4239 complex(real64),
intent(in) :: alpha, beta
4240 complex(real64),
intent(in),
dimension(:,:) :: a, b
4241 complex(real64),
intent(inout),
dimension(:,:) :: c
4242 class(errors),
intent(inout),
optional,
target :: err
4245 module subroutine cmtx_mult_vec(opa, alpha, a, b, beta, c, err)
4246 integer(int32),
intent(in) :: opa
4247 complex(real64),
intent(in) :: alpha, beta
4248 complex(real64),
intent(in),
dimension(:,:) :: a
4249 complex(real64),
intent(in),
dimension(:) :: b
4250 complex(real64),
intent(inout),
dimension(:) :: c
4251 class(errors),
intent(inout),
optional,
target :: err
4254 module subroutine rank1_update_dbl(alpha, x, y, a, err)
4255 real(real64),
intent(in) :: alpha
4256 real(real64),
intent(in),
dimension(:) :: x, y
4257 real(real64),
intent(inout),
dimension(:,:) :: a
4258 class(errors),
intent(inout),
optional,
target :: err
4261 module subroutine rank1_update_cmplx(alpha, x, y, a, err)
4262 complex(real64),
intent(in) :: alpha
4263 complex(real64),
intent(in),
dimension(:) :: x, y
4264 complex(real64),
intent(inout),
dimension(:,:) :: a
4265 class(errors),
intent(inout),
optional,
target :: err
4268 module subroutine diag_mtx_mult_mtx(lside, trans, alpha, a, b, beta, c, err)
4269 logical,
intent(in) :: lside, trans
4270 real(real64) :: alpha, beta
4271 real(real64),
intent(in),
dimension(:) :: a
4272 real(real64),
intent(in),
dimension(:,:) :: b
4273 real(real64),
intent(inout),
dimension(:,:) :: c
4274 class(errors),
intent(inout),
optional,
target :: err
4277 module subroutine diag_mtx_mult_mtx2(lside, alpha, a, b, err)
4278 logical,
intent(in) :: lside
4279 real(real64),
intent(in) :: alpha
4280 real(real64),
intent(in),
dimension(:) :: a
4281 real(real64),
intent(inout),
dimension(:,:) :: b
4282 class(errors),
intent(inout),
optional,
target :: err
4285 module subroutine diag_mtx_mult_mtx3(lside, trans, alpha, a, b, beta, c, err)
4286 logical,
intent(in) :: lside, trans
4287 real(real64) :: alpha, beta
4288 complex(real64),
intent(in),
dimension(:) :: a
4289 real(real64),
intent(in),
dimension(:,:) :: b
4290 complex(real64),
intent(inout),
dimension(:,:) :: c
4291 class(errors),
intent(inout),
optional,
target :: err
4294 module subroutine diag_mtx_mult_mtx4(lside, opb, alpha, a, b, beta, c, err)
4295 logical,
intent(in) :: lside
4296 integer(int32),
intent(in) :: opb
4297 real(real64) :: alpha, beta
4298 complex(real64),
intent(in),
dimension(:) :: a
4299 complex(real64),
intent(in),
dimension(:,:) :: b
4300 complex(real64),
intent(inout),
dimension(:,:) :: c
4301 class(errors),
intent(inout),
optional,
target :: err
4304 module subroutine diag_mtx_mult_mtx_cmplx(lside, opb, alpha, a, b, beta, c, err)
4305 logical,
intent(in) :: lside
4306 integer(int32),
intent(in) :: opb
4307 complex(real64) :: alpha, beta
4308 complex(real64),
intent(in),
dimension(:) :: a
4309 complex(real64),
intent(in),
dimension(:,:) :: b
4310 complex(real64),
intent(inout),
dimension(:,:) :: c
4311 class(errors),
intent(inout),
optional,
target :: err
4314 module subroutine diag_mtx_mult_mtx2_cmplx(lside, alpha, a, b, err)
4315 logical,
intent(in) :: lside
4316 complex(real64),
intent(in) :: alpha
4317 complex(real64),
intent(in),
dimension(:) :: a
4318 complex(real64),
intent(inout),
dimension(:,:) :: b
4319 class(errors),
intent(inout),
optional,
target :: err
4322 module subroutine diag_mtx_mult_mtx_mix(lside, opb, alpha, a, b, beta, c, err)
4323 logical,
intent(in) :: lside
4324 integer(int32),
intent(in) :: opb
4325 complex(real64) :: alpha, beta
4326 real(real64),
intent(in),
dimension(:) :: a
4327 complex(real64),
intent(in),
dimension(:,:) :: b
4328 complex(real64),
intent(inout),
dimension(:,:) :: c
4329 class(errors),
intent(inout),
optional,
target :: err
4332 module subroutine diag_mtx_mult_mtx2_mix(lside, alpha, a, b, err)
4333 logical,
intent(in) :: lside
4334 complex(real64),
intent(in) :: alpha
4335 real(real64),
intent(in),
dimension(:) :: a
4336 complex(real64),
intent(inout),
dimension(:,:) :: b
4337 class(errors),
intent(inout),
optional,
target :: err
4340 module subroutine diag_mtx_sparse_mult(lside, alpha, a, b, err)
4341 logical,
intent(in) :: lside
4342 real(real64),
intent(in) :: alpha
4343 real(real64),
intent(in),
dimension(:) :: a
4344 type(csr_matrix),
intent(inout) :: b
4345 class(errors),
intent(inout),
optional,
target :: err
4348 pure module function trace_dbl(x) result(y)
4349 real(real64),
intent(in),
dimension(:,:) :: x
4353 pure module function trace_cmplx(x) result(y)
4354 complex(real64),
intent(in),
dimension(:,:) :: x
4355 complex(real64) :: y
4358 module function mtx_rank_dbl(a, tol, work, olwork, err) result(rnk)
4359 real(real64),
intent(inout),
dimension(:,:) :: a
4360 real(real64),
intent(in),
optional :: tol
4361 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4362 integer(int32),
intent(out),
optional :: olwork
4363 class(errors),
intent(inout),
optional,
target :: err
4364 integer(int32) :: rnk
4367 module function mtx_rank_cmplx(a, tol, work, olwork, rwork, err) result(rnk)
4368 complex(real64),
intent(inout),
dimension(:,:) :: a
4369 real(real64),
intent(in),
optional :: tol
4370 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4371 integer(int32),
intent(out),
optional :: olwork
4372 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
4373 class(errors),
intent(inout),
optional,
target :: err
4374 integer(int32) :: rnk
4377 module function det_dbl(a, iwork, err) result(x)
4378 real(real64),
intent(inout),
dimension(:,:) :: a
4379 integer(int32),
intent(out),
target,
optional,
dimension(:) :: iwork
4380 class(errors),
intent(inout),
optional,
target :: err
4384 module function det_cmplx(a, iwork, err) result(x)
4385 complex(real64),
intent(inout),
dimension(:,:) :: a
4386 integer(int32),
intent(out),
target,
optional,
dimension(:) :: iwork
4387 class(errors),
intent(inout),
optional,
target :: err
4388 complex(real64) :: x
4391 module subroutine swap_dbl(x, y, err)
4392 real(real64),
intent(inout),
dimension(:) :: x, y
4393 class(errors),
intent(inout),
optional,
target :: err
4396 module subroutine swap_cmplx(x, y, err)
4397 complex(real64),
intent(inout),
dimension(:) :: x, y
4398 class(errors),
intent(inout),
optional,
target :: err
4401 module subroutine recip_mult_array_dbl(a, x)
4402 real(real64),
intent(in) :: a
4403 real(real64),
intent(inout),
dimension(:) :: x
4406 module subroutine tri_mtx_mult_dbl(upper, alpha, a, beta, b, err)
4407 logical,
intent(in) :: upper
4408 real(real64),
intent(in) :: alpha, beta
4409 real(real64),
intent(in),
dimension(:,:) :: a
4410 real(real64),
intent(inout),
dimension(:,:) :: b
4411 class(errors),
intent(inout),
optional,
target :: err
4414 module subroutine tri_mtx_mult_cmplx(upper, alpha, a, beta, b, err)
4415 logical,
intent(in) :: upper
4416 complex(real64),
intent(in) :: alpha, beta
4417 complex(real64),
intent(in),
dimension(:,:) :: a
4418 complex(real64),
intent(inout),
dimension(:,:) :: b
4419 class(errors),
intent(inout),
optional,
target :: err
4422 module subroutine band_mtx_vec_mult_dbl(trans, kl, ku, alpha, a, x, beta, &
4424 logical,
intent(in) :: trans
4425 integer(int32),
intent(in) :: kl, ku
4426 real(real64),
intent(in) :: alpha, beta
4427 real(real64),
intent(in),
dimension(:,:) :: a
4428 real(real64),
intent(in),
dimension(:) :: x
4429 real(real64),
intent(inout),
dimension(:) :: y
4430 class(errors),
intent(inout),
optional,
target :: err
4433 module subroutine band_mtx_vec_mult_cmplx(trans, kl, ku, alpha, a, x, &
4435 integer(int32),
intent(in) :: trans
4436 integer(int32),
intent(in) :: kl, ku
4437 complex(real64),
intent(in) :: alpha, beta
4438 complex(real64),
intent(in),
dimension(:,:) :: a
4439 complex(real64),
intent(in),
dimension(:) :: x
4440 complex(real64),
intent(inout),
dimension(:) :: y
4441 class(errors),
intent(inout),
optional,
target :: err
4444 module subroutine band_to_full_mtx_dbl(kl, ku, b, f, err)
4445 integer(int32),
intent(in) :: kl, ku
4446 real(real64),
intent(in),
dimension(:,:) :: b
4447 real(real64),
intent(out),
dimension(:,:) :: f
4448 class(errors),
intent(inout),
optional,
target :: err
4451 module subroutine band_to_full_mtx_cmplx(kl, ku, b, f, err)
4452 integer(int32),
intent(in) :: kl, ku
4453 complex(real64),
intent(in),
dimension(:,:) :: b
4454 complex(real64),
intent(out),
dimension(:,:) :: f
4455 class(errors),
intent(inout),
optional,
target :: err
4458 module subroutine band_diag_mtx_mult_dbl(left, m, kl, ku, alpha, a, b, err)
4459 logical,
intent(in) :: left
4460 integer(int32),
intent(in) :: m, kl, ku
4461 real(real64),
intent(in) :: alpha
4462 real(real64),
intent(inout),
dimension(:,:) :: a
4463 real(real64),
intent(in),
dimension(:) :: b
4464 class(errors),
intent(inout),
optional,
target :: err
4467 module subroutine band_diag_mtx_mult_cmplx(left, m, kl, ku, alpha, a, b, err)
4468 logical,
intent(in) :: left
4469 integer(int32),
intent(in) :: m, kl, ku
4470 complex(real64),
intent(in) :: alpha
4471 complex(real64),
intent(inout),
dimension(:,:) :: a
4472 complex(real64),
intent(in),
dimension(:) :: b
4473 class(errors),
intent(inout),
optional,
target :: err
4476 module subroutine banded_to_dense_dbl(m, kl, ku, a, x, err)
4477 integer(int32),
intent(in) :: m, kl, ku
4478 real(real64),
intent(in),
dimension(:,:) :: a
4479 real(real64),
intent(out),
dimension(:,:) :: x
4480 class(errors),
intent(inout),
optional,
target :: err
4483 module subroutine banded_to_dense_cmplx(m, kl, ku, a, x, err)
4484 integer(int32),
intent(in) :: m, kl, ku
4485 complex(real64),
intent(in),
dimension(:,:) :: a
4486 complex(real64),
intent(out),
dimension(:,:) :: x
4487 class(errors),
intent(inout),
optional,
target :: err
4490 module subroutine dense_to_banded_dbl(a, kl, ku, x, err)
4491 real(real64),
intent(in),
dimension(:,:) :: a
4492 integer(int32),
intent(in) :: kl, ku
4493 real(real64),
intent(out),
dimension(:,:) :: x
4494 class(errors),
intent(inout),
optional,
target :: err
4497 module subroutine dense_to_banded_cmplx(a, kl, ku, x, err)
4498 complex(real64),
intent(in),
dimension(:,:) :: a
4499 integer(int32),
intent(in) :: kl, ku
4500 complex(real64),
intent(out),
dimension(:,:) :: x
4501 class(errors),
intent(inout),
optional,
target :: err
4504 module subroutine extract_diagonal_dbl(a, diag, err)
4506 real(real64),
intent(in),
dimension(:,:) :: a
4507 real(real64),
intent(out),
dimension(:) :: diag
4508 class(errors),
intent(inout),
optional,
target :: err
4511 module subroutine extract_diagonal_cmplx(a, diag, err)
4513 complex(real64),
intent(in),
dimension(:,:) :: a
4514 complex(real64),
intent(out),
dimension(:) :: diag
4515 class(errors),
intent(inout),
optional,
target :: err
4523 module subroutine lu_factor_dbl(a, ipvt, err)
4524 real(real64),
intent(inout),
dimension(:,:) :: a
4525 integer(int32),
intent(out),
dimension(:) :: ipvt
4526 class(errors),
intent(inout),
optional,
target :: err
4529 module subroutine lu_factor_cmplx(a, ipvt, err)
4530 complex(real64),
intent(inout),
dimension(:,:) :: a
4531 integer(int32),
intent(out),
dimension(:) :: ipvt
4532 class(errors),
intent(inout),
optional,
target :: err
4535 module subroutine form_lu_all(lu, ipvt, u, p, err)
4536 real(real64),
intent(inout),
dimension(:,:) :: lu
4537 integer(int32),
intent(in),
dimension(:) :: ipvt
4538 real(real64),
intent(out),
dimension(:,:) :: u, p
4539 class(errors),
intent(inout),
optional,
target :: err
4542 module subroutine form_lu_all_cmplx(lu, ipvt, u, p, err)
4543 complex(real64),
intent(inout),
dimension(:,:) :: lu
4544 integer(int32),
intent(in),
dimension(:) :: ipvt
4545 complex(real64),
intent(out),
dimension(:,:) :: u
4546 real(real64),
intent(out),
dimension(:,:) :: p
4547 class(errors),
intent(inout),
optional,
target :: err
4550 module subroutine form_lu_only(lu, u, err)
4551 real(real64),
intent(inout),
dimension(:,:) :: lu
4552 real(real64),
intent(out),
dimension(:,:) :: u
4553 class(errors),
intent(inout),
optional,
target :: err
4556 module subroutine form_lu_only_cmplx(lu, u, err)
4557 complex(real64),
intent(inout),
dimension(:,:) :: lu
4558 complex(real64),
intent(out),
dimension(:,:) :: u
4559 class(errors),
intent(inout),
optional,
target :: err
4562 module subroutine qr_factor_no_pivot(a, tau, work, olwork, err)
4563 real(real64),
intent(inout),
dimension(:,:) :: a
4564 real(real64),
intent(out),
dimension(:) :: tau
4565 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4566 integer(int32),
intent(out),
optional :: olwork
4567 class(errors),
intent(inout),
optional,
target :: err
4570 module subroutine qr_factor_no_pivot_cmplx(a, tau, work, olwork, err)
4571 complex(real64),
intent(inout),
dimension(:,:) :: a
4572 complex(real64),
intent(out),
dimension(:) :: tau
4573 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4574 integer(int32),
intent(out),
optional :: olwork
4575 class(errors),
intent(inout),
optional,
target :: err
4578 module subroutine qr_factor_pivot(a, tau, jpvt, work, olwork, err)
4579 real(real64),
intent(inout),
dimension(:,:) :: a
4580 real(real64),
intent(out),
dimension(:) :: tau
4581 integer(int32),
intent(inout),
dimension(:) :: jpvt
4582 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4583 integer(int32),
intent(out),
optional :: olwork
4584 class(errors),
intent(inout),
optional,
target :: err
4587 module subroutine qr_factor_pivot_cmplx(a, tau, jpvt, work, olwork, rwork, &
4589 complex(real64),
intent(inout),
dimension(:,:) :: a
4590 complex(real64),
intent(out),
dimension(:) :: tau
4591 integer(int32),
intent(inout),
dimension(:) :: jpvt
4592 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4593 integer(int32),
intent(out),
optional :: olwork
4594 real(real64),
intent(out),
target,
dimension(:),
optional :: rwork
4595 class(errors),
intent(inout),
optional,
target :: err
4598 module subroutine form_qr_no_pivot(r, tau, q, work, olwork, err)
4599 real(real64),
intent(inout),
dimension(:,:) :: r
4600 real(real64),
intent(in),
dimension(:) :: tau
4601 real(real64),
intent(out),
dimension(:,:) :: q
4602 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4603 integer(int32),
intent(out),
optional :: olwork
4604 class(errors),
intent(inout),
optional,
target :: err
4607 module subroutine form_qr_no_pivot_cmplx(r, tau, q, work, olwork, err)
4608 complex(real64),
intent(inout),
dimension(:,:) :: r
4609 complex(real64),
intent(in),
dimension(:) :: tau
4610 complex(real64),
intent(out),
dimension(:,:) :: q
4611 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4612 integer(int32),
intent(out),
optional :: olwork
4613 class(errors),
intent(inout),
optional,
target :: err
4616 module subroutine form_qr_pivot(r, tau, pvt, q, p, work, olwork, err)
4617 real(real64),
intent(inout),
dimension(:,:) :: r
4618 real(real64),
intent(in),
dimension(:) :: tau
4619 integer(int32),
intent(in),
dimension(:) :: pvt
4620 real(real64),
intent(out),
dimension(:,:) :: q, p
4621 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4622 integer(int32),
intent(out),
optional :: olwork
4623 class(errors),
intent(inout),
optional,
target :: err
4626 module subroutine form_qr_pivot_cmplx(r, tau, pvt, q, p, work, olwork, err)
4627 complex(real64),
intent(inout),
dimension(:,:) :: r
4628 complex(real64),
intent(in),
dimension(:) :: tau
4629 integer(int32),
intent(in),
dimension(:) :: pvt
4630 complex(real64),
intent(out),
dimension(:,:) :: q, p
4631 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4632 integer(int32),
intent(out),
optional :: olwork
4633 class(errors),
intent(inout),
optional,
target :: err
4636 module subroutine mult_qr_mtx(lside, trans, a, tau, c, work, olwork, err)
4637 logical,
intent(in) :: lside, trans
4638 real(real64),
intent(in),
dimension(:) :: tau
4639 real(real64),
intent(inout),
dimension(:,:) :: a, c
4640 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4641 integer(int32),
intent(out),
optional :: olwork
4642 class(errors),
intent(inout),
optional,
target :: err
4645 module subroutine mult_qr_mtx_cmplx(lside, trans, a, tau, c, work, olwork, err)
4646 logical,
intent(in) :: lside, trans
4647 complex(real64),
intent(in),
dimension(:) :: tau
4648 complex(real64),
intent(inout),
dimension(:,:) :: a, c
4649 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4650 integer(int32),
intent(out),
optional :: olwork
4651 class(errors),
intent(inout),
optional,
target :: err
4654 module subroutine mult_qr_vec(trans, a, tau, c, work, olwork, err)
4655 logical,
intent(in) :: trans
4656 real(real64),
intent(inout),
dimension(:,:) :: a
4657 real(real64),
intent(in),
dimension(:) :: tau
4658 real(real64),
intent(inout),
dimension(:) :: c
4659 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4660 integer(int32),
intent(out),
optional :: olwork
4661 class(errors),
intent(inout),
optional,
target :: err
4664 module subroutine mult_qr_vec_cmplx(trans, a, tau, c, work, olwork, err)
4665 logical,
intent(in) :: trans
4666 complex(real64),
intent(inout),
dimension(:,:) :: a
4667 complex(real64),
intent(in),
dimension(:) :: tau
4668 complex(real64),
intent(inout),
dimension(:) :: c
4669 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4670 integer(int32),
intent(out),
optional :: olwork
4671 class(errors),
intent(inout),
optional,
target :: err
4674 module subroutine qr_rank1_update_dbl(q, r, u, v, work, err)
4675 real(real64),
intent(inout),
dimension(:,:) :: q, r
4676 real(real64),
intent(inout),
dimension(:) :: u, v
4677 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4678 class(errors),
intent(inout),
optional,
target :: err
4681 module subroutine qr_rank1_update_cmplx(q, r, u, v, work, rwork, err)
4682 complex(real64),
intent(inout),
dimension(:,:) :: q, r
4683 complex(real64),
intent(inout),
dimension(:) :: u, v
4684 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4685 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
4686 class(errors),
intent(inout),
optional,
target :: err
4689 module subroutine cholesky_factor_dbl(a, upper, err)
4690 real(real64),
intent(inout),
dimension(:,:) :: a
4691 logical,
intent(in),
optional :: upper
4692 class(errors),
intent(inout),
optional,
target :: err
4695 module subroutine cholesky_factor_cmplx(a, upper, err)
4696 complex(real64),
intent(inout),
dimension(:,:) :: a
4697 logical,
intent(in),
optional :: upper
4698 class(errors),
intent(inout),
optional,
target :: err
4701 module subroutine cholesky_rank1_update_dbl(r, u, work, err)
4702 real(real64),
intent(inout),
dimension(:,:) :: r
4703 real(real64),
intent(inout),
dimension(:) :: u
4704 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4705 class(errors),
intent(inout),
optional,
target :: err
4708 module subroutine cholesky_rank1_update_cmplx(r, u, work, err)
4709 complex(real64),
intent(inout),
dimension(:,:) :: r
4710 complex(real64),
intent(inout),
dimension(:) :: u
4711 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4712 class(errors),
intent(inout),
optional,
target :: err
4715 module subroutine cholesky_rank1_downdate_dbl(r, u, work, err)
4716 real(real64),
intent(inout),
dimension(:,:) :: r
4717 real(real64),
intent(inout),
dimension(:) :: u
4718 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4719 class(errors),
intent(inout),
optional,
target :: err
4722 module subroutine cholesky_rank1_downdate_cmplx(r, u, work, err)
4723 complex(real64),
intent(inout),
dimension(:,:) :: r
4724 complex(real64),
intent(inout),
dimension(:) :: u
4725 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4726 class(errors),
intent(inout),
optional,
target :: err
4729 module subroutine rz_factor_dbl(a, tau, work, olwork, err)
4730 real(real64),
intent(inout),
dimension(:,:) :: a
4731 real(real64),
intent(out),
dimension(:) :: tau
4732 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4733 integer(int32),
intent(out),
optional :: olwork
4734 class(errors),
intent(inout),
optional,
target :: err
4737 module subroutine rz_factor_cmplx(a, tau, work, olwork, err)
4738 complex(real64),
intent(inout),
dimension(:,:) :: a
4739 complex(real64),
intent(out),
dimension(:) :: tau
4740 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4741 integer(int32),
intent(out),
optional :: olwork
4742 class(errors),
intent(inout),
optional,
target :: err
4745 module subroutine mult_rz_mtx(lside, trans, l, a, tau, c, work, olwork, err)
4746 logical,
intent(in) :: lside, trans
4747 integer(int32),
intent(in) :: l
4748 real(real64),
intent(inout),
dimension(:,:) :: a, c
4749 real(real64),
intent(in),
dimension(:) :: tau
4750 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4751 integer(int32),
intent(out),
optional :: olwork
4752 class(errors),
intent(inout),
optional,
target :: err
4755 module subroutine mult_rz_mtx_cmplx(lside, trans, l, a, tau, c, work, olwork, err)
4756 logical,
intent(in) :: lside, trans
4757 integer(int32),
intent(in) :: l
4758 complex(real64),
intent(inout),
dimension(:,:) :: a, c
4759 complex(real64),
intent(in),
dimension(:) :: tau
4760 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4761 integer(int32),
intent(out),
optional :: olwork
4762 class(errors),
intent(inout),
optional,
target :: err
4765 module subroutine mult_rz_vec(trans, l, a, tau, c, work, olwork, err)
4766 logical,
intent(in) :: trans
4767 integer(int32),
intent(in) :: l
4768 real(real64),
intent(inout),
dimension(:,:) :: a
4769 real(real64),
intent(in),
dimension(:) :: tau
4770 real(real64),
intent(inout),
dimension(:) :: c
4771 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4772 integer(int32),
intent(out),
optional :: olwork
4773 class(errors),
intent(inout),
optional,
target :: err
4776 module subroutine mult_rz_vec_cmplx(trans, l, a, tau, c, work, olwork, err)
4777 logical,
intent(in) :: trans
4778 integer(int32),
intent(in) :: l
4779 complex(real64),
intent(inout),
dimension(:,:) :: a
4780 complex(real64),
intent(in),
dimension(:) :: tau
4781 complex(real64),
intent(inout),
dimension(:) :: c
4782 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4783 integer(int32),
intent(out),
optional :: olwork
4784 class(errors),
intent(inout),
optional,
target :: err
4787 module subroutine svd_dbl(a, s, u, vt, work, olwork, err)
4788 real(real64),
intent(inout),
dimension(:,:) :: a
4789 real(real64),
intent(out),
dimension(:) :: s
4790 real(real64),
intent(out),
optional,
dimension(:,:) :: u, vt
4791 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4792 integer(int32),
intent(out),
optional :: olwork
4793 class(errors),
intent(inout),
optional,
target :: err
4796 module subroutine svd_cmplx(a, s, u, vt, work, olwork, rwork, err)
4797 complex(real64),
intent(inout),
dimension(:,:) :: a
4798 real(real64),
intent(out),
dimension(:) :: s
4799 complex(real64),
intent(out),
optional,
dimension(:,:) :: u, vt
4800 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4801 integer(int32),
intent(out),
optional :: olwork
4802 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
4803 class(errors),
intent(inout),
optional,
target :: err
4806 module subroutine lq_factor_no_pivot(a, tau, work, olwork, err)
4807 real(real64),
intent(inout),
dimension(:,:) :: a
4808 real(real64),
intent(out),
dimension(:) :: tau
4809 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4810 integer(int32),
intent(out),
optional :: olwork
4811 class(errors),
intent(inout),
optional,
target :: err
4814 module subroutine lq_factor_no_pivot_cmplx(a, tau, work, olwork, err)
4815 complex(real64),
intent(inout),
dimension(:,:) :: a
4816 complex(real64),
intent(out),
dimension(:) :: tau
4817 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4818 integer(int32),
intent(out),
optional :: olwork
4819 class(errors),
intent(inout),
optional,
target :: err
4822 module subroutine form_lq_no_pivot(l, tau, q, work, olwork, err)
4823 real(real64),
intent(inout),
dimension(:,:) :: l
4824 real(real64),
intent(in),
dimension(:) :: tau
4825 real(real64),
intent(out),
dimension(:,:) :: q
4826 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4827 integer(int32),
intent(out),
optional :: olwork
4828 class(errors),
intent(inout),
optional,
target :: err
4831 module subroutine form_lq_no_pivot_cmplx(l, tau, q, work, olwork, err)
4832 complex(real64),
intent(inout),
dimension(:,:) :: l
4833 complex(real64),
intent(in),
dimension(:) :: tau
4834 complex(real64),
intent(out),
dimension(:,:) :: q
4835 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4836 integer(int32),
intent(out),
optional :: olwork
4837 class(errors),
intent(inout),
optional,
target :: err
4840 module subroutine mult_lq_mtx(lside, trans, a, tau, c, work, olwork, err)
4841 logical,
intent(in) :: lside, trans
4842 real(real64),
intent(in),
dimension(:,:) :: a
4843 real(real64),
intent(in),
dimension(:) :: tau
4844 real(real64),
intent(inout),
dimension(:,:) :: c
4845 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4846 integer(int32),
intent(out),
optional :: olwork
4847 class(errors),
intent(inout),
optional,
target :: err
4850 module subroutine mult_lq_mtx_cmplx(lside, trans, a, tau, c, work, olwork, err)
4851 logical,
intent(in) :: lside, trans
4852 complex(real64),
intent(in),
dimension(:,:) :: a
4853 complex(real64),
intent(in),
dimension(:) :: tau
4854 complex(real64),
intent(inout),
dimension(:,:) :: c
4855 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4856 integer(int32),
intent(out),
optional :: olwork
4857 class(errors),
intent(inout),
optional,
target :: err
4860 module subroutine mult_lq_vec(trans, a, tau, c, work, olwork, err)
4861 logical,
intent(in) :: trans
4862 real(real64),
intent(in),
dimension(:,:) :: a
4863 real(real64),
intent(in),
dimension(:) :: tau
4864 real(real64),
intent(inout),
dimension(:) :: c
4865 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4866 integer(int32),
intent(out),
optional :: olwork
4867 class(errors),
intent(inout),
optional,
target :: err
4870 module subroutine mult_lq_vec_cmplx(trans, a, tau, c, work, olwork, err)
4871 logical,
intent(in) :: trans
4872 complex(real64),
intent(in),
dimension(:,:) :: a
4873 complex(real64),
intent(in),
dimension(:) :: tau
4874 complex(real64),
intent(inout),
dimension(:) :: c
4875 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4876 integer(int32),
intent(out),
optional :: olwork
4877 class(errors),
intent(inout),
optional,
target :: err
4885 module subroutine solve_tri_mtx(lside, upper, trans, nounit, alpha, a, b, err)
4886 logical,
intent(in) :: lside, upper, trans, nounit
4887 real(real64),
intent(in) :: alpha
4888 real(real64),
intent(in),
dimension(:,:) :: a
4889 real(real64),
intent(inout),
dimension(:,:) :: b
4890 class(errors),
intent(inout),
optional,
target :: err
4893 module subroutine solve_tri_mtx_cmplx(lside, upper, trans, nounit, alpha, a, b, err)
4894 logical,
intent(in) :: lside, upper, trans, nounit
4895 complex(real64),
intent(in) :: alpha
4896 complex(real64),
intent(in),
dimension(:,:) :: a
4897 complex(real64),
intent(inout),
dimension(:,:) :: b
4898 class(errors),
intent(inout),
optional,
target :: err
4901 module subroutine solve_tri_vec(upper, trans, nounit, a, x, err)
4902 logical,
intent(in) :: upper, trans, nounit
4903 real(real64),
intent(in),
dimension(:,:) :: a
4904 real(real64),
intent(inout),
dimension(:) :: x
4905 class(errors),
intent(inout),
optional,
target :: err
4908 module subroutine solve_tri_vec_cmplx(upper, trans, nounit, a, x, err)
4909 logical,
intent(in) :: upper, trans, nounit
4910 complex(real64),
intent(in),
dimension(:,:) :: a
4911 complex(real64),
intent(inout),
dimension(:) :: x
4912 class(errors),
intent(inout),
optional,
target :: err
4915 module subroutine solve_lu_mtx(a, ipvt, b, err)
4916 real(real64),
intent(in),
dimension(:,:) :: a
4917 integer(int32),
intent(in),
dimension(:) :: ipvt
4918 real(real64),
intent(inout),
dimension(:,:) :: b
4919 class(errors),
intent(inout),
optional,
target :: err
4922 module subroutine solve_lu_mtx_cmplx(a, ipvt, b, err)
4923 complex(real64),
intent(in),
dimension(:,:) :: a
4924 integer(int32),
intent(in),
dimension(:) :: ipvt
4925 complex(real64),
intent(inout),
dimension(:,:) :: b
4926 class(errors),
intent(inout),
optional,
target :: err
4929 module subroutine solve_lu_vec(a, ipvt, b, err)
4930 real(real64),
intent(in),
dimension(:,:) :: a
4931 integer(int32),
intent(in),
dimension(:) :: ipvt
4932 real(real64),
intent(inout),
dimension(:) :: b
4933 class(errors),
intent(inout),
optional,
target :: err
4936 module subroutine solve_lu_vec_cmplx(a, ipvt, b, err)
4937 complex(real64),
intent(in),
dimension(:,:) :: a
4938 integer(int32),
intent(in),
dimension(:) :: ipvt
4939 complex(real64),
intent(inout),
dimension(:) :: b
4940 class(errors),
intent(inout),
optional,
target :: err
4943 module subroutine solve_qr_no_pivot_mtx(a, tau, b, work, olwork, err)
4944 real(real64),
intent(inout),
dimension(:,:) :: a, b
4945 real(real64),
intent(in),
dimension(:) :: tau
4946 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4947 integer(int32),
intent(out),
optional :: olwork
4948 class(errors),
intent(inout),
optional,
target :: err
4951 module subroutine solve_qr_no_pivot_mtx_cmplx(a, tau, b, work, olwork, err)
4952 complex(real64),
intent(inout),
dimension(:,:) :: a, b
4953 complex(real64),
intent(in),
dimension(:) :: tau
4954 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4955 integer(int32),
intent(out),
optional :: olwork
4956 class(errors),
intent(inout),
optional,
target :: err
4959 module subroutine solve_qr_no_pivot_vec(a, tau, b, work, olwork, err)
4960 real(real64),
intent(inout),
dimension(:,:) :: a
4961 real(real64),
intent(in),
dimension(:) :: tau
4962 real(real64),
intent(inout),
dimension(:) :: b
4963 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4964 integer(int32),
intent(out),
optional :: olwork
4965 class(errors),
intent(inout),
optional,
target :: err
4968 module subroutine solve_qr_no_pivot_vec_cmplx(a, tau, b, work, olwork, err)
4969 complex(real64),
intent(inout),
dimension(:,:) :: a
4970 complex(real64),
intent(in),
dimension(:) :: tau
4971 complex(real64),
intent(inout),
dimension(:) :: b
4972 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4973 integer(int32),
intent(out),
optional :: olwork
4974 class(errors),
intent(inout),
optional,
target :: err
4977 module subroutine solve_qr_pivot_mtx(a, tau, jpvt, b, work, olwork, err)
4978 real(real64),
intent(inout),
dimension(:,:) :: a
4979 real(real64),
intent(in),
dimension(:) :: tau
4980 integer(int32),
intent(in),
dimension(:) :: jpvt
4981 real(real64),
intent(inout),
dimension(:,:) :: b
4982 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4983 integer(int32),
intent(out),
optional :: olwork
4984 class(errors),
intent(inout),
optional,
target :: err
4987 module subroutine solve_qr_pivot_mtx_cmplx(a, tau, jpvt, b, work, olwork, err)
4988 complex(real64),
intent(inout),
dimension(:,:) :: a
4989 complex(real64),
intent(in),
dimension(:) :: tau
4990 integer(int32),
intent(in),
dimension(:) :: jpvt
4991 complex(real64),
intent(inout),
dimension(:,:) :: b
4992 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4993 integer(int32),
intent(out),
optional :: olwork
4994 class(errors),
intent(inout),
optional,
target :: err
4997 module subroutine solve_qr_pivot_vec(a, tau, jpvt, b, work, olwork, err)
4998 real(real64),
intent(inout),
dimension(:,:) :: a
4999 real(real64),
intent(in),
dimension(:) :: tau
5000 integer(int32),
intent(in),
dimension(:) :: jpvt
5001 real(real64),
intent(inout),
dimension(:) :: b
5002 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
5003 integer(int32),
intent(out),
optional :: olwork
5004 class(errors),
intent(inout),
optional,
target :: err
5007 module subroutine solve_qr_pivot_vec_cmplx(a, tau, jpvt, b, work, olwork, err)
5008 complex(real64),
intent(inout),
dimension(:,:) :: a
5009 complex(real64),
intent(in),
dimension(:) :: tau
5010 integer(int32),
intent(in),
dimension(:) :: jpvt
5011 complex(real64),
intent(inout),
dimension(:) :: b
5012 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5013 integer(int32),
intent(out),
optional :: olwork
5014 class(errors),
intent(inout),
optional,
target :: err
5017 module subroutine solve_cholesky_mtx(upper, a, b, err)
5018 logical,
intent(in) :: upper
5019 real(real64),
intent(in),
dimension(:,:) :: a
5020 real(real64),
intent(inout),
dimension(:,:) :: b
5021 class(errors),
intent(inout),
optional,
target :: err
5024 module subroutine solve_cholesky_mtx_cmplx(upper, a, b, err)
5025 logical,
intent(in) :: upper
5026 complex(real64),
intent(in),
dimension(:,:) :: a
5027 complex(real64),
intent(inout),
dimension(:,:) :: b
5028 class(errors),
intent(inout),
optional,
target :: err
5031 module subroutine solve_cholesky_vec(upper, a, b, err)
5032 logical,
intent(in) :: upper
5033 real(real64),
intent(in),
dimension(:,:) :: a
5034 real(real64),
intent(inout),
dimension(:) :: b
5035 class(errors),
intent(inout),
optional,
target :: err
5038 module subroutine solve_cholesky_vec_cmplx(upper, a, b, err)
5039 logical,
intent(in) :: upper
5040 complex(real64),
intent(in),
dimension(:,:) :: a
5041 complex(real64),
intent(inout),
dimension(:) :: b
5042 class(errors),
intent(inout),
optional,
target :: err
5045 module subroutine solve_least_squares_mtx(a, b, work, olwork, err)
5046 real(real64),
intent(inout),
dimension(:,:) :: a, b
5047 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
5048 integer(int32),
intent(out),
optional :: olwork
5049 class(errors),
intent(inout),
optional,
target :: err
5052 module subroutine solve_least_squares_mtx_cmplx(a, b, work, olwork, err)
5053 complex(real64),
intent(inout),
dimension(:,:) :: a, b
5054 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5055 integer(int32),
intent(out),
optional :: olwork
5056 class(errors),
intent(inout),
optional,
target :: err
5059 module subroutine solve_least_squares_vec(a, b, work, olwork, err)
5060 real(real64),
intent(inout),
dimension(:,:) :: a
5061 real(real64),
intent(inout),
dimension(:) :: b
5062 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
5063 integer(int32),
intent(out),
optional :: olwork
5064 class(errors),
intent(inout),
optional,
target :: err
5067 module subroutine solve_least_squares_vec_cmplx(a, b, work, olwork, err)
5068 complex(real64),
intent(inout),
dimension(:,:) :: a
5069 complex(real64),
intent(inout),
dimension(:) :: b
5070 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5071 integer(int32),
intent(out),
optional :: olwork
5072 class(errors),
intent(inout),
optional,
target :: err
5075 module subroutine solve_least_squares_mtx_pvt(a, b, ipvt, arnk, work, olwork, err)
5076 real(real64),
intent(inout),
dimension(:,:) :: a, b
5077 integer(int32),
intent(inout),
target,
optional,
dimension(:) :: ipvt
5078 integer(int32),
intent(out),
optional :: arnk
5079 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
5080 integer(int32),
intent(out),
optional :: olwork
5081 class(errors),
intent(inout),
optional,
target :: err
5084 module subroutine solve_least_squares_mtx_pvt_cmplx(a, b, ipvt, arnk, &
5085 work, olwork, rwork, err)
5086 complex(real64),
intent(inout),
dimension(:,:) :: a, b
5087 integer(int32),
intent(inout),
target,
optional,
dimension(:) :: ipvt
5088 integer(int32),
intent(out),
optional :: arnk
5089 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5090 integer(int32),
intent(out),
optional :: olwork
5091 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
5092 class(errors),
intent(inout),
optional,
target :: err
5095 module subroutine solve_least_squares_vec_pvt(a, b, ipvt, arnk, work, olwork, err)
5096 real(real64),
intent(inout),
dimension(:,:) :: a
5097 real(real64),
intent(inout),
dimension(:) :: b
5098 integer(int32),
intent(inout),
target,
optional,
dimension(:) :: ipvt
5099 integer(int32),
intent(out),
optional :: arnk
5100 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
5101 integer(int32),
intent(out),
optional :: olwork
5102 class(errors),
intent(inout),
optional,
target :: err
5105 module subroutine solve_least_squares_vec_pvt_cmplx(a, b, ipvt, arnk, &
5106 work, olwork, rwork, err)
5107 complex(real64),
intent(inout),
dimension(:,:) :: a
5108 complex(real64),
intent(inout),
dimension(:) :: b
5109 integer(int32),
intent(inout),
target,
optional,
dimension(:) :: ipvt
5110 integer(int32),
intent(out),
optional :: arnk
5111 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5112 integer(int32),
intent(out),
optional :: olwork
5113 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
5114 class(errors),
intent(inout),
optional,
target :: err
5117 module subroutine solve_least_squares_mtx_svd(a, b, s, arnk, work, olwork, err)
5118 real(real64),
intent(inout),
dimension(:,:) :: a, b
5119 integer(int32),
intent(out),
optional :: arnk
5120 real(real64),
intent(out),
target,
optional,
dimension(:) :: work, s
5121 integer(int32),
intent(out),
optional :: olwork
5122 class(errors),
intent(inout),
optional,
target :: err
5125 module subroutine solve_least_squares_mtx_svd_cmplx(a, b, s, arnk, work, &
5127 complex(real64),
intent(inout),
dimension(:,:) :: a, b
5128 integer(int32),
intent(out),
optional :: arnk
5129 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5130 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork, s
5131 integer(int32),
intent(out),
optional :: olwork
5132 class(errors),
intent(inout),
optional,
target :: err
5135 module subroutine solve_least_squares_vec_svd(a, b, s, arnk, work, olwork, err)
5136 real(real64),
intent(inout),
dimension(:,:) :: a
5137 real(real64),
intent(inout),
dimension(:) :: b
5138 integer(int32),
intent(out),
optional :: arnk
5139 real(real64),
intent(out),
target,
optional,
dimension(:) :: work, s
5140 integer(int32),
intent(out),
optional :: olwork
5141 class(errors),
intent(inout),
optional,
target :: err
5144 module subroutine solve_least_squares_vec_svd_cmplx(a, b, s, arnk, work, &
5146 complex(real64),
intent(inout),
dimension(:,:) :: a
5147 complex(real64),
intent(inout),
dimension(:) :: b
5148 integer(int32),
intent(out),
optional :: arnk
5149 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5150 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork, s
5151 integer(int32),
intent(out),
optional :: olwork
5152 class(errors),
intent(inout),
optional,
target :: err
5155 module subroutine mtx_inverse_dbl(a, iwork, work, olwork, err)
5156 real(real64),
intent(inout),
dimension(:,:) :: a
5157 integer(int32),
intent(out),
target,
optional,
dimension(:) :: iwork
5158 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
5159 integer(int32),
intent(out),
optional :: olwork
5160 class(errors),
intent(inout),
optional,
target :: err
5163 module subroutine mtx_inverse_cmplx(a, iwork, work, olwork, err)
5164 complex(real64),
intent(inout),
dimension(:,:) :: a
5165 integer(int32),
intent(out),
target,
optional,
dimension(:) :: iwork
5166 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5167 integer(int32),
intent(out),
optional :: olwork
5168 class(errors),
intent(inout),
optional,
target :: err
5171 module subroutine mtx_pinverse_dbl(a, ainv, tol, work, olwork, err)
5172 real(real64),
intent(inout),
dimension(:,:) :: a
5173 real(real64),
intent(out),
dimension(:,:) :: ainv
5174 real(real64),
intent(in),
optional :: tol
5175 real(real64),
intent(out),
target,
dimension(:),
optional :: work
5176 integer(int32),
intent(out),
optional :: olwork
5177 class(errors),
intent(inout),
optional,
target :: err
5180 module subroutine mtx_pinverse_cmplx(a, ainv, tol, work, olwork, rwork, err)
5181 complex(real64),
intent(inout),
dimension(:,:) :: a
5182 complex(real64),
intent(out),
dimension(:,:) :: ainv
5183 real(real64),
intent(in),
optional :: tol
5184 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
5185 integer(int32),
intent(out),
optional :: olwork
5186 real(real64),
intent(out),
target,
dimension(:),
optional :: rwork
5187 class(errors),
intent(inout),
optional,
target :: err
5190 module subroutine solve_lq_mtx(a, tau, b, work, olwork, err)
5191 real(real64),
intent(in),
dimension(:,:) :: a
5192 real(real64),
intent(in),
dimension(:) :: tau
5193 real(real64),
intent(inout),
dimension(:,:) :: b
5194 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
5195 integer(int32),
intent(out),
optional :: olwork
5196 class(errors),
intent(inout),
optional,
target :: err
5199 module subroutine solve_lq_mtx_cmplx(a, tau, b, work, olwork, err)
5200 complex(real64),
intent(in),
dimension(:,:) :: a
5201 complex(real64),
intent(in),
dimension(:) :: tau
5202 complex(real64),
intent(inout),
dimension(:,:) :: b
5203 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5204 integer(int32),
intent(out),
optional :: olwork
5205 class(errors),
intent(inout),
optional,
target :: err
5208 module subroutine solve_lq_vec(a, tau, b, work, olwork, err)
5209 real(real64),
intent(in),
dimension(:,:) :: a
5210 real(real64),
intent(in),
dimension(:) :: tau
5211 real(real64),
intent(inout),
dimension(:) :: b
5212 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
5213 integer(int32),
intent(out),
optional :: olwork
5214 class(errors),
intent(inout),
optional,
target :: err
5217 module subroutine solve_lq_vec_cmplx(a, tau, b, work, olwork, err)
5218 complex(real64),
intent(in),
dimension(:,:) :: a
5219 complex(real64),
intent(in),
dimension(:) :: tau
5220 complex(real64),
intent(inout),
dimension(:) :: b
5221 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5222 integer(int32),
intent(out),
optional :: olwork
5223 class(errors),
intent(inout),
optional,
target :: err
5231 module subroutine eigen_symm(vecs, a, vals, work, olwork, err)
5232 logical,
intent(in) :: vecs
5233 real(real64),
intent(inout),
dimension(:,:) :: a
5234 real(real64),
intent(out),
dimension(:) :: vals
5235 real(real64),
intent(out),
pointer,
optional,
dimension(:) :: work
5236 integer(int32),
intent(out),
optional :: olwork
5237 class(errors),
intent(inout),
optional,
target :: err
5240 module subroutine eigen_asymm(a, vals, vecs, work, olwork, err)
5241 real(real64),
intent(inout),
dimension(:,:) :: a
5242 complex(real64),
intent(out),
dimension(:) :: vals
5243 complex(real64),
intent(out),
optional,
dimension(:,:) :: vecs
5244 real(real64),
intent(out),
pointer,
optional,
dimension(:) :: work
5245 integer(int32),
intent(out),
optional :: olwork
5246 class(errors),
intent(inout),
optional,
target :: err
5249 module subroutine eigen_gen(a, b, alpha, beta, vecs, work, olwork, err)
5250 real(real64),
intent(inout),
dimension(:,:) :: a, b
5251 complex(real64),
intent(out),
dimension(:) :: alpha
5252 real(real64),
intent(out),
optional,
dimension(:) :: beta
5253 complex(real64),
intent(out),
optional,
dimension(:,:) :: vecs
5254 real(real64),
intent(out),
optional,
pointer,
dimension(:) :: work
5255 integer(int32),
intent(out),
optional :: olwork
5256 class(errors),
intent(inout),
optional,
target :: err
5259 module subroutine eigen_cmplx(a, vals, vecs, work, olwork, rwork, err)
5260 complex(real64),
intent(inout),
dimension(:,:) :: a
5261 complex(real64),
intent(out),
dimension(:) :: vals
5262 complex(real64),
intent(out),
optional,
dimension(:,:) :: vecs
5263 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
5264 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
5265 integer(int32),
intent(out),
optional :: olwork
5266 class(errors),
intent(inout),
optional,
target :: err
5274 module subroutine sort_dbl_array(x, ascend)
5275 real(real64),
intent(inout),
dimension(:) :: x
5276 logical,
intent(in),
optional :: ascend
5279 module subroutine sort_dbl_array_ind(x, ind, ascend, err)
5280 real(real64),
intent(inout),
dimension(:) :: x
5281 integer(int32),
intent(inout),
dimension(:) :: ind
5282 logical,
intent(in),
optional :: ascend
5283 class(errors),
intent(inout),
optional,
target :: err
5286 module subroutine sort_cmplx_array(x, ascend)
5287 complex(real64),
intent(inout),
dimension(:) :: x
5288 logical,
intent(in),
optional :: ascend
5291 module subroutine sort_cmplx_array_ind(x, ind, ascend, err)
5292 complex(real64),
intent(inout),
dimension(:) :: x
5293 integer(int32),
intent(inout),
dimension(:) :: ind
5294 logical,
intent(in),
optional :: ascend
5295 class(errors),
intent(inout),
optional,
target :: err
5298 module subroutine sort_eigen_cmplx(vals, vecs, ascend, err)
5299 complex(real64),
intent(inout),
dimension(:) :: vals
5300 complex(real64),
intent(inout),
dimension(:,:) :: vecs
5301 logical,
intent(in),
optional :: ascend
5302 class(errors),
intent(inout),
optional,
target :: err
5305 module subroutine sort_eigen_dbl(vals, vecs, ascend, err)
5306 real(real64),
intent(inout),
dimension(:) :: vals
5307 real(real64),
intent(inout),
dimension(:,:) :: vecs
5308 logical,
intent(in),
optional :: ascend
5309 class(errors),
intent(inout),
optional,
target :: err
5312 module subroutine sort_int32_array(x, ascend)
5313 integer(int32),
intent(inout),
dimension(:) :: x
5314 logical,
intent(in),
optional :: ascend
5317 module subroutine sort_int32_array_ind(x, ind, ascend, err)
5318 integer(int32),
intent(inout),
dimension(:) :: x
5319 integer(int32),
intent(inout),
dimension(:) :: ind
5320 logical,
intent(in),
optional :: ascend
5321 class(errors),
intent(inout),
optional,
target :: err
5338 interface nonzero_count
5339 module procedure :: nonzero_count_csr
5340 module procedure :: nonzero_count_msr
5357 module procedure :: csr_size
5358 module procedure :: msr_size
5383 module procedure :: csr_mtx_mtx_mult
5384 module procedure :: csr_mtx_vec_mult
5398 interface operator(+)
5399 module procedure :: csr_mtx_add
5413 interface operator(-)
5414 module procedure :: csr_mtx_sub
5429 interface operator(*)
5430 module procedure :: csr_mtx_mult_scalar_1
5431 module procedure :: csr_mtx_mult_scalar_2
5445 interface operator(/)
5446 module procedure :: csr_mtx_divide_scalar_1
5450 interface assignment(=)
5451 module procedure :: csr_assign_to_dense
5452 module procedure :: dense_assign_to_csr
5453 module procedure :: msr_assign_to_dense
5454 module procedure :: dense_assign_to_msr
5455 module procedure :: csr_assign_to_msr
5456 module procedure :: msr_assign_to_csr
5469 module procedure :: csr_transpose
5496 interface sparse_direct_solve
5497 module procedure :: csr_solve_sparse_direct
5546 interface pgmres_solver
5547 module procedure :: csr_pgmres_solver
5551 module function csr_get_element(this, i, j) result(rst)
5552 class(csr_matrix),
intent(in) :: this
5553 integer(int32),
intent(in) :: i, j
5556 pure module function csr_size(x, dim) result(rst)
5557 class(csr_matrix),
intent(in) :: x
5558 integer(int32),
intent(in) :: dim
5559 integer(int32) :: rst
5562 module function create_empty_csr_matrix(m, n, nnz, err) result(rst)
5563 integer(int32),
intent(in) :: m, n, nnz
5564 class(errors),
intent(inout),
optional,
target :: err
5565 type(csr_matrix) :: rst
5568 pure module function nonzero_count_csr(x) result(rst)
5569 class(csr_matrix),
intent(in) :: x
5570 integer(int32) :: rst
5573 module function dense_to_csr(a, err) result(rst)
5574 real(real64),
intent(in),
dimension(:,:) :: a
5575 class(errors),
intent(inout),
optional,
target :: err
5576 type(csr_matrix) :: rst
5579 module subroutine csr_to_dense(a, x, err)
5580 class(csr_matrix),
intent(in) :: a
5581 real(real64),
intent(out),
dimension(:,:) :: x
5582 class(errors),
intent(inout),
optional,
target :: err
5585 module function csr_mtx_mtx_mult(a, b) result(rst)
5586 class(csr_matrix),
intent(in) :: a, b
5587 type(csr_matrix) :: rst
5590 module function csr_mtx_vec_mult(a, b) result(rst)
5591 class(csr_matrix),
intent(in) :: a
5592 real(real64),
intent(in),
dimension(:) :: b
5593 real(real64),
allocatable,
dimension(:) :: rst
5596 module function csr_mtx_add(a, b) result(rst)
5597 class(csr_matrix),
intent(in) :: a, b
5598 type(csr_matrix) :: rst
5601 module function csr_mtx_sub(a, b) result(rst)
5602 class(csr_matrix),
intent(in) :: a, b
5603 type(csr_matrix) :: rst
5606 module function csr_mtx_mult_scalar_1(a, b) result(rst)
5607 class(csr_matrix),
intent(in) :: a
5608 real(real64),
intent(in) :: b
5609 type(csr_matrix) :: rst
5612 module function csr_mtx_mult_scalar_2(a, b) result(rst)
5613 real(real64),
intent(in) :: a
5614 class(csr_matrix),
intent(in) :: b
5615 type(csr_matrix) :: rst
5618 module function csr_mtx_divide_scalar_1(a, b) result(rst)
5619 class(csr_matrix),
intent(in) :: a
5620 real(real64),
intent(in) :: b
5621 type(csr_matrix) :: rst
5624 module function csr_transpose(a) result(rst)
5625 class(csr_matrix),
intent(in) :: a
5626 type(csr_matrix) :: rst
5629 module subroutine extract_diagonal_csr(a, diag, err)
5630 class(csr_matrix),
intent(in) :: a
5631 real(real64),
intent(out),
dimension(:) :: diag
5632 class(errors),
intent(inout),
optional,
target :: err
5635 module subroutine csr_solve_sparse_direct(a, b, x, droptol, err)
5636 class(csr_matrix),
intent(in) :: a
5637 real(real64),
intent(in),
dimension(:) :: b
5638 real(real64),
intent(out),
dimension(:) :: x
5639 real(real64),
intent(in),
optional :: droptol
5640 class(errors),
intent(inout),
optional,
target :: err
5643 module function diag_to_csr(a, err) result(rst)
5644 real(real64),
intent(in),
dimension(:) :: a
5645 class(errors),
intent(inout),
optional,
target :: err
5646 type(csr_matrix) :: rst
5649 module function banded_to_csr(m, ml, mu, a, err) result(rst)
5650 integer(int32),
intent(in) :: m, ml, mu
5651 real(real64),
intent(in),
dimension(:,:) :: a
5652 class(errors),
intent(inout),
optional,
target :: err
5653 type(csr_matrix) :: rst
5656 module subroutine csr_assign_to_dense(dense, sparse)
5657 real(real64),
intent(out),
dimension(:,:) :: dense
5658 class(csr_matrix),
intent(in) :: sparse
5661 module subroutine dense_assign_to_csr(sparse, dense)
5662 type(csr_matrix),
intent(out) :: sparse
5663 real(real64),
intent(in),
dimension(:,:) :: dense
5666 pure module function msr_size(x, dim) result(rst)
5667 class(msr_matrix),
intent(in) :: x
5668 integer(int32),
intent(in) :: dim
5669 integer(int32) :: rst
5672 pure module function nonzero_count_msr(x) result(rst)
5673 class(msr_matrix),
intent(in) :: x
5674 integer(int32) :: rst
5677 module function create_empty_msr_matrix(m, n, nnz, err) result(rst)
5678 integer(int32),
intent(in) :: m, n, nnz
5679 class(errors),
intent(inout),
optional,
target :: err
5680 type(msr_matrix) :: rst
5683 module function csr_to_msr(a, err) result(rst)
5684 class(csr_matrix),
intent(in) :: a
5685 class(errors),
intent(inout),
optional,
target :: err
5686 type(msr_matrix) :: rst
5689 module function msr_to_csr(a, err) result(rst)
5690 class(msr_matrix),
intent(in) :: a
5691 class(errors),
intent(inout),
optional,
target :: err
5692 type(csr_matrix) :: rst
5695 module function dense_to_msr(a, err) result(rst)
5696 real(real64),
intent(in),
dimension(:,:) :: a
5697 class(errors),
intent(inout),
optional,
target :: err
5698 type(msr_matrix) :: rst
5701 module subroutine msr_to_dense(a, x, err)
5703 class(msr_matrix),
intent(in) :: a
5704 real(real64),
intent(out),
dimension(:,:) :: x
5705 class(errors),
intent(inout),
optional,
target :: err
5708 module subroutine msr_assign_to_dense(dense, msr)
5709 real(real64),
intent(out),
dimension(:,:) :: dense
5710 class(msr_matrix),
intent(in) :: msr
5713 module subroutine dense_assign_to_msr(msr, dense)
5714 type(msr_matrix),
intent(out) :: msr
5715 real(real64),
intent(in),
dimension(:,:) :: dense
5718 module subroutine csr_assign_to_msr(msr, csr)
5719 type(msr_matrix),
intent(out) :: msr
5720 class(csr_matrix),
intent(in) :: csr
5723 module subroutine msr_assign_to_csr(csr, msr)
5724 type(csr_matrix),
intent(out) :: csr
5725 class(msr_matrix),
intent(in) :: msr
5728 module subroutine csr_lu_factor(a, lu, ju, droptol, err)
5729 class(csr_matrix),
intent(in) :: a
5730 type(msr_matrix),
intent(out) :: lu
5731 integer(int32),
intent(out),
dimension(:) :: ju
5732 real(real64),
intent(in),
optional :: droptol
5733 class(errors),
intent(inout),
optional,
target :: err
5736 module subroutine csr_lu_solve(lu, ju, b, x, err)
5737 class(msr_matrix),
intent(in) :: lu
5738 integer(int32),
intent(in),
dimension(:) :: ju
5739 real(real64),
intent(in),
dimension(:) :: b
5740 real(real64),
intent(out),
dimension(:) :: x
5741 class(errors),
intent(inout),
optional,
target :: err
5744 module subroutine csr_pgmres_solver(a, lu, ju, b, x, im, tol, maxits, &
5746 class(csr_matrix),
intent(in) :: a
5747 class(msr_matrix),
intent(in) :: lu
5748 integer(int32),
intent(in),
dimension(:) :: ju
5749 real(real64),
intent(inout),
dimension(:) :: b
5750 real(real64),
intent(out),
dimension(:) :: x
5751 integer(int32),
intent(in),
optional :: im, maxits, iout
5752 real(real64),
intent(in),
optional :: tol
5753 class(errors),
intent(inout),
optional,
target :: err
5756 module function create_csr_matrix(m, n, rows, cols, vals, err) &
5758 integer(int32),
intent(in) :: m, n
5759 integer(int32),
intent(in),
dimension(:) :: rows, cols
5760 real(real64),
intent(in),
dimension(:) :: vals
5761 class(errors),
intent(inout),
optional,
target :: err
5762 type(csr_matrix) :: rst
Multiplies a banded matrix, A, with a diagonal matrix, B, such that A = alpha * A * B,...
Multiplies a banded matrix, A, by a vector x such that alpha * op(A) * x + beta * y = y.
Converts a banded matrix stored in dense form to a full matrix.
Converts a banded matrix to a dense matrix.
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Computes the rank 1 downdate to a Cholesky factored matrix (upper triangular).
Computes the rank 1 update to a Cholesky factored matrix (upper triangular).
Converts a dense matrix to a banded matrix.
Computes the determinant of a square matrix.
Multiplies a diagonal matrix with another matrix or array.
Computes the eigenvalues, and optionally the eigenvectors, of a matrix.
Computes the LQ factorization of an M-by-N matrix.
Computes the LU factorization of an M-by-N matrix.
Performs sparse matrix multiplication C = A * B.
Computes the inverse of a square matrix.
Performs the matrix operation: .
Computes the Moore-Penrose pseudo-inverse of a M-by-N matrix using the singular value decomposition o...
Computes the rank of a matrix.
Multiplies a general matrix by the orthogonal matrix Q from a LQ factorization.
Multiplies a general matrix by the orthogonal matrix Q from a QR factorization.
Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization.
Determines the number of nonzero entries in a sparse matrix.
A preconditioned GMRES solver.
Computes the QR factorization of an M-by-N matrix.
Computes the rank 1 update to an M-by-N QR factored matrix A (M >= N) where , and such that ....
Performs the rank-1 update to matrix A such that: , where is an M-by-N matrix, is a scalar,...
Multiplies a vector by the reciprocal of a real scalar.
Factors an upper trapezoidal matrix by means of orthogonal transformations such that ....
Solves a system of Cholesky factored equations.
Solves the overdetermined or underdetermined system of M equations of N unknowns,...
Solves the overdetermined or underdetermined system of M equations of N unknowns using a singular va...
Solves the overdetermined or underdetermined system of M equations of N unknowns....
Solves a system of M LQ-factored equations of N unknowns. N must be greater than or equal to M.
Solves a system of LU-factored equations.
Solves a system of M QR-factored equations of N unknowns.
Solves a triangular system of equations.
Provides a direct solution to a square, sparse system.
Computes the singular value decomposition of a matrix A. The SVD is defined as: , where is an M-by-M...
Swaps the contents of two arrays.
Computes the trace of a matrix (the sum of the main diagonal elements).
Provides the transpose of a sparse matrix.
Computes the triangular matrix operation: , or , where A is a triangular matrix.
Provides a set of common linear algebra routines.
A sparse matrix stored in compressed sparse row (CSR) format.
A sparse matrix stored in modified sparse row format. This format is convenient for situations where ...