146 use,
intrinsic :: iso_fortran_env, only : int32, real64
147 use ferror,
only : errors
187 public :: la_no_operation
188 public :: la_transpose
189 public :: la_hermitian_transpose
190 public :: la_no_error
191 public :: la_invalid_input_error
192 public :: la_array_size_error
193 public :: la_singular_matrix_error
194 public :: la_matrix_format_error
195 public :: la_out_of_memory_error
196 public :: la_convergence_error
197 public :: la_invalid_operation_error
203 integer(int32),
parameter :: la_no_operation = 0
205 integer(int32),
parameter :: la_transpose = 1
207 integer(int32),
parameter :: la_hermitian_transpose = 2
213 integer(int32),
parameter :: la_no_error = 0
215 integer(int32),
parameter :: la_invalid_input_error = 101
217 integer(int32),
parameter :: la_array_size_error = 102
219 integer(int32),
parameter :: la_singular_matrix_error = 103
221 integer(int32),
parameter :: la_matrix_format_error = 104
223 integer(int32),
parameter :: la_out_of_memory_error = 105
225 integer(int32),
parameter :: la_convergence_error = 106
227 integer(int32),
parameter :: la_invalid_operation_error = 107
294 module procedure :: mtx_mult_mtx
295 module procedure :: mtx_mult_vec
296 module procedure :: cmtx_mult_mtx
297 module procedure :: cmtx_mult_vec
329 module procedure :: rank1_update_dbl
330 module procedure :: rank1_update_cmplx
464 module procedure :: diag_mtx_mult_mtx
465 module procedure :: diag_mtx_mult_mtx2
466 module procedure :: diag_mtx_mult_mtx3
467 module procedure :: diag_mtx_mult_mtx4
468 module procedure :: diag_mtx_mult_mtx_cmplx
469 module procedure :: diag_mtx_mult_mtx2_cmplx
470 module procedure :: diag_mtx_mult_mtx_mix
471 module procedure :: diag_mtx_mult_mtx2_mix
488 module procedure :: trace_dbl
489 module procedure :: trace_cmplx
536 module procedure :: mtx_rank_dbl
537 module procedure :: mtx_rank_cmplx
569 module procedure :: det_dbl
570 module procedure :: det_cmplx
591 module procedure :: swap_dbl
592 module procedure :: swap_cmplx
610 module procedure :: recip_mult_array_dbl
644 module procedure :: tri_mtx_mult_dbl
645 module procedure :: tri_mtx_mult_cmplx
730 module procedure :: lu_factor_dbl
731 module procedure :: lu_factor_cmplx
852 module procedure :: form_lu_all
853 module procedure :: form_lu_all_cmplx
854 module procedure :: form_lu_only
855 module procedure :: form_lu_only_cmplx
1006 module procedure :: qr_factor_no_pivot
1007 module procedure :: qr_factor_no_pivot_cmplx
1008 module procedure :: qr_factor_pivot
1009 module procedure :: qr_factor_pivot_cmplx
1166 module procedure :: form_qr_no_pivot
1167 module procedure :: form_qr_no_pivot_cmplx
1168 module procedure :: form_qr_pivot
1169 module procedure :: form_qr_pivot_cmplx
1323 module procedure :: mult_qr_mtx
1324 module procedure :: mult_qr_mtx_cmplx
1325 module procedure :: mult_qr_vec
1326 module procedure :: mult_qr_vec_cmplx
1473 module procedure :: qr_rank1_update_dbl
1474 module procedure :: qr_rank1_update_cmplx
1572 module procedure :: cholesky_factor_dbl
1573 module procedure :: cholesky_factor_cmplx
1671 module procedure :: cholesky_rank1_update_dbl
1672 module procedure :: cholesky_rank1_update_cmplx
1778 module procedure :: cholesky_rank1_downdate_dbl
1779 module procedure :: cholesky_rank1_downdate_cmplx
1851 module procedure :: rz_factor_dbl
1852 module procedure :: rz_factor_cmplx
1942 module procedure :: mult_rz_mtx
1943 module procedure :: mult_rz_mtx_cmplx
1944 module procedure :: mult_rz_vec
1945 module procedure :: mult_rz_vec_cmplx
2067 module procedure :: svd_dbl
2068 module procedure :: svd_cmplx
2201 module procedure :: solve_tri_mtx
2202 module procedure :: solve_tri_mtx_cmplx
2203 module procedure :: solve_tri_vec
2204 module procedure :: solve_tri_vec_cmplx
2289 module procedure :: solve_lu_mtx
2290 module procedure :: solve_lu_mtx_cmplx
2291 module procedure :: solve_lu_vec
2292 module procedure :: solve_lu_vec_cmplx
2424 module procedure :: solve_qr_no_pivot_mtx
2425 module procedure :: solve_qr_no_pivot_mtx_cmplx
2426 module procedure :: solve_qr_no_pivot_vec
2427 module procedure :: solve_qr_no_pivot_vec_cmplx
2428 module procedure :: solve_qr_pivot_mtx
2429 module procedure :: solve_qr_pivot_mtx_cmplx
2430 module procedure :: solve_qr_pivot_vec
2431 module procedure :: solve_qr_pivot_vec_cmplx
2530 module procedure :: solve_cholesky_mtx
2531 module procedure :: solve_cholesky_mtx_cmplx
2532 module procedure :: solve_cholesky_vec
2533 module procedure :: solve_cholesky_vec_cmplx
2620 module procedure :: solve_least_squares_mtx
2621 module procedure :: solve_least_squares_mtx_cmplx
2622 module procedure :: solve_least_squares_vec
2623 module procedure :: solve_least_squares_vec_cmplx
2721 module procedure :: solve_least_squares_mtx_pvt
2722 module procedure :: solve_least_squares_mtx_pvt_cmplx
2723 module procedure :: solve_least_squares_vec_pvt
2724 module procedure :: solve_least_squares_vec_pvt_cmplx
2823 module procedure :: solve_least_squares_mtx_svd
2824 module procedure :: solve_least_squares_vec_svd
2918 module procedure :: mtx_inverse_dbl
2919 module procedure :: mtx_inverse_cmplx
3024 module procedure :: mtx_pinverse_dbl
3025 module procedure :: mtx_pinverse_cmplx
3238 module procedure :: eigen_symm
3239 module procedure :: eigen_asymm
3240 module procedure :: eigen_gen
3241 module procedure :: eigen_cmplx
3321 module procedure :: sort_dbl_array
3322 module procedure :: sort_dbl_array_ind
3323 module procedure :: sort_cmplx_array
3324 module procedure :: sort_cmplx_array_ind
3325 module procedure :: sort_eigen_cmplx
3326 module procedure :: sort_eigen_dbl
3435 module procedure :: lq_factor_no_pivot
3436 module procedure :: lq_factor_no_pivot_cmplx
3549 module procedure :: form_lq_no_pivot
3550 module procedure :: form_lq_no_pivot_cmplx
3698 module procedure :: mult_lq_mtx
3699 module procedure :: mult_lq_mtx_cmplx
3700 module procedure :: mult_lq_vec
3701 module procedure :: mult_lq_vec_cmplx
3793 module procedure :: solve_lq_mtx
3794 module procedure :: solve_lq_mtx_cmplx
3795 module procedure :: solve_lq_vec
3796 module procedure :: solve_lq_vec_cmplx
3803 module subroutine mtx_mult_mtx(transa, transb, alpha, a, b, beta, c, err)
3804 logical,
intent(in) :: transa, transb
3805 real(real64),
intent(in) :: alpha, beta
3806 real(real64),
intent(in),
dimension(:,:) :: a, b
3807 real(real64),
intent(inout),
dimension(:,:) :: c
3808 class(errors),
intent(inout),
optional,
target :: err
3811 module subroutine mtx_mult_vec(trans, alpha, a, b, beta, c, err)
3812 logical,
intent(in) :: trans
3813 real(real64),
intent(in) :: alpha, beta
3814 real(real64),
intent(in),
dimension(:,:) :: a
3815 real(real64),
intent(in),
dimension(:) :: b
3816 real(real64),
intent(inout),
dimension(:) :: c
3817 class(errors),
intent(inout),
optional,
target :: err
3820 module subroutine cmtx_mult_mtx(opa, opb, alpha, a, b, beta, c, err)
3821 integer(int32),
intent(in) :: opa, opb
3822 complex(real64),
intent(in) :: alpha, beta
3823 complex(real64),
intent(in),
dimension(:,:) :: a, b
3824 complex(real64),
intent(inout),
dimension(:,:) :: c
3825 class(errors),
intent(inout),
optional,
target :: err
3828 module subroutine cmtx_mult_vec(opa, alpha, a, b, beta, c, err)
3829 integer(int32),
intent(in) :: opa
3830 complex(real64),
intent(in) :: alpha, beta
3831 complex(real64),
intent(in),
dimension(:,:) :: a
3832 complex(real64),
intent(in),
dimension(:) :: b
3833 complex(real64),
intent(inout),
dimension(:) :: c
3834 class(errors),
intent(inout),
optional,
target :: err
3837 module subroutine rank1_update_dbl(alpha, x, y, a, err)
3838 real(real64),
intent(in) :: alpha
3839 real(real64),
intent(in),
dimension(:) :: x, y
3840 real(real64),
intent(inout),
dimension(:,:) :: a
3841 class(errors),
intent(inout),
optional,
target :: err
3844 module subroutine rank1_update_cmplx(alpha, x, y, a, err)
3845 complex(real64),
intent(in) :: alpha
3846 complex(real64),
intent(in),
dimension(:) :: x, y
3847 complex(real64),
intent(inout),
dimension(:,:) :: a
3848 class(errors),
intent(inout),
optional,
target :: err
3851 module subroutine diag_mtx_mult_mtx(lside, trans, alpha, a, b, beta, c, err)
3852 logical,
intent(in) :: lside, trans
3853 real(real64) :: alpha, beta
3854 real(real64),
intent(in),
dimension(:) :: a
3855 real(real64),
intent(in),
dimension(:,:) :: b
3856 real(real64),
intent(inout),
dimension(:,:) :: c
3857 class(errors),
intent(inout),
optional,
target :: err
3860 module subroutine diag_mtx_mult_mtx2(lside, alpha, a, b, err)
3861 logical,
intent(in) :: lside
3862 real(real64),
intent(in) :: alpha
3863 real(real64),
intent(in),
dimension(:) :: a
3864 real(real64),
intent(inout),
dimension(:,:) :: b
3865 class(errors),
intent(inout),
optional,
target :: err
3868 module subroutine diag_mtx_mult_mtx3(lside, trans, alpha, a, b, beta, c, err)
3869 logical,
intent(in) :: lside, trans
3870 real(real64) :: alpha, beta
3871 complex(real64),
intent(in),
dimension(:) :: a
3872 real(real64),
intent(in),
dimension(:,:) :: b
3873 complex(real64),
intent(inout),
dimension(:,:) :: c
3874 class(errors),
intent(inout),
optional,
target :: err
3877 module subroutine diag_mtx_mult_mtx4(lside, opb, alpha, a, b, beta, c, err)
3878 logical,
intent(in) :: lside
3879 integer(int32),
intent(in) :: opb
3880 real(real64) :: alpha, beta
3881 complex(real64),
intent(in),
dimension(:) :: a
3882 complex(real64),
intent(in),
dimension(:,:) :: b
3883 complex(real64),
intent(inout),
dimension(:,:) :: c
3884 class(errors),
intent(inout),
optional,
target :: err
3887 module subroutine diag_mtx_mult_mtx_cmplx(lside, opb, alpha, a, b, beta, c, err)
3888 logical,
intent(in) :: lside
3889 integer(int32),
intent(in) :: opb
3890 complex(real64) :: alpha, beta
3891 complex(real64),
intent(in),
dimension(:) :: a
3892 complex(real64),
intent(in),
dimension(:,:) :: b
3893 complex(real64),
intent(inout),
dimension(:,:) :: c
3894 class(errors),
intent(inout),
optional,
target :: err
3897 module subroutine diag_mtx_mult_mtx2_cmplx(lside, alpha, a, b, err)
3898 logical,
intent(in) :: lside
3899 complex(real64),
intent(in) :: alpha
3900 complex(real64),
intent(in),
dimension(:) :: a
3901 complex(real64),
intent(inout),
dimension(:,:) :: b
3902 class(errors),
intent(inout),
optional,
target :: err
3905 module subroutine diag_mtx_mult_mtx_mix(lside, opb, alpha, a, b, beta, c, err)
3906 logical,
intent(in) :: lside
3907 integer(int32),
intent(in) :: opb
3908 complex(real64) :: alpha, beta
3909 real(real64),
intent(in),
dimension(:) :: a
3910 complex(real64),
intent(in),
dimension(:,:) :: b
3911 complex(real64),
intent(inout),
dimension(:,:) :: c
3912 class(errors),
intent(inout),
optional,
target :: err
3915 module subroutine diag_mtx_mult_mtx2_mix(lside, alpha, a, b, err)
3916 logical,
intent(in) :: lside
3917 complex(real64),
intent(in) :: alpha
3918 real(real64),
intent(in),
dimension(:) :: a
3919 complex(real64),
intent(inout),
dimension(:,:) :: b
3920 class(errors),
intent(inout),
optional,
target :: err
3923 pure module function trace_dbl(x) result(y)
3924 real(real64),
intent(in),
dimension(:,:) :: x
3928 pure module function trace_cmplx(x) result(y)
3929 complex(real64),
intent(in),
dimension(:,:) :: x
3930 complex(real64) :: y
3933 module function mtx_rank_dbl(a, tol, work, olwork, err) result(rnk)
3934 real(real64),
intent(inout),
dimension(:,:) :: a
3935 real(real64),
intent(in),
optional :: tol
3936 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
3937 integer(int32),
intent(out),
optional :: olwork
3938 class(errors),
intent(inout),
optional,
target :: err
3939 integer(int32) :: rnk
3942 module function mtx_rank_cmplx(a, tol, work, olwork, rwork, err) result(rnk)
3943 complex(real64),
intent(inout),
dimension(:,:) :: a
3944 real(real64),
intent(in),
optional :: tol
3945 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
3946 integer(int32),
intent(out),
optional :: olwork
3947 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
3948 class(errors),
intent(inout),
optional,
target :: err
3949 integer(int32) :: rnk
3952 module function det_dbl(a, iwork, err) result(x)
3953 real(real64),
intent(inout),
dimension(:,:) :: a
3954 integer(int32),
intent(out),
target,
optional,
dimension(:) :: iwork
3955 class(errors),
intent(inout),
optional,
target :: err
3959 module function det_cmplx(a, iwork, err) result(x)
3960 complex(real64),
intent(inout),
dimension(:,:) :: a
3961 integer(int32),
intent(out),
target,
optional,
dimension(:) :: iwork
3962 class(errors),
intent(inout),
optional,
target :: err
3963 complex(real64) :: x
3966 module subroutine swap_dbl(x, y, err)
3967 real(real64),
intent(inout),
dimension(:) :: x, y
3968 class(errors),
intent(inout),
optional,
target :: err
3971 module subroutine swap_cmplx(x, y, err)
3972 complex(real64),
intent(inout),
dimension(:) :: x, y
3973 class(errors),
intent(inout),
optional,
target :: err
3976 module subroutine recip_mult_array_dbl(a, x)
3977 real(real64),
intent(in) :: a
3978 real(real64),
intent(inout),
dimension(:) :: x
3981 module subroutine tri_mtx_mult_dbl(upper, alpha, a, beta, b, err)
3982 logical,
intent(in) :: upper
3983 real(real64),
intent(in) :: alpha, beta
3984 real(real64),
intent(in),
dimension(:,:) :: a
3985 real(real64),
intent(inout),
dimension(:,:) :: b
3986 class(errors),
intent(inout),
optional,
target :: err
3989 module subroutine tri_mtx_mult_cmplx(upper, alpha, a, beta, b, err)
3990 logical,
intent(in) :: upper
3991 complex(real64),
intent(in) :: alpha, beta
3992 complex(real64),
intent(in),
dimension(:,:) :: a
3993 complex(real64),
intent(inout),
dimension(:,:) :: b
3994 class(errors),
intent(inout),
optional,
target :: err
4003 module subroutine lu_factor_dbl(a, ipvt, err)
4004 real(real64),
intent(inout),
dimension(:,:) :: a
4005 integer(int32),
intent(out),
dimension(:) :: ipvt
4006 class(errors),
intent(inout),
optional,
target :: err
4009 module subroutine lu_factor_cmplx(a, ipvt, err)
4010 complex(real64),
intent(inout),
dimension(:,:) :: a
4011 integer(int32),
intent(out),
dimension(:) :: ipvt
4012 class(errors),
intent(inout),
optional,
target :: err
4015 module subroutine form_lu_all(lu, ipvt, u, p, err)
4016 real(real64),
intent(inout),
dimension(:,:) :: lu
4017 integer(int32),
intent(in),
dimension(:) :: ipvt
4018 real(real64),
intent(out),
dimension(:,:) :: u, p
4019 class(errors),
intent(inout),
optional,
target :: err
4022 module subroutine form_lu_all_cmplx(lu, ipvt, u, p, err)
4023 complex(real64),
intent(inout),
dimension(:,:) :: lu
4024 integer(int32),
intent(in),
dimension(:) :: ipvt
4025 complex(real64),
intent(out),
dimension(:,:) :: u
4026 real(real64),
intent(out),
dimension(:,:) :: p
4027 class(errors),
intent(inout),
optional,
target :: err
4030 module subroutine form_lu_only(lu, u, err)
4031 real(real64),
intent(inout),
dimension(:,:) :: lu
4032 real(real64),
intent(out),
dimension(:,:) :: u
4033 class(errors),
intent(inout),
optional,
target :: err
4036 module subroutine form_lu_only_cmplx(lu, u, err)
4037 complex(real64),
intent(inout),
dimension(:,:) :: lu
4038 complex(real64),
intent(out),
dimension(:,:) :: u
4039 class(errors),
intent(inout),
optional,
target :: err
4042 module subroutine qr_factor_no_pivot(a, tau, work, olwork, err)
4043 real(real64),
intent(inout),
dimension(:,:) :: a
4044 real(real64),
intent(out),
dimension(:) :: tau
4045 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4046 integer(int32),
intent(out),
optional :: olwork
4047 class(errors),
intent(inout),
optional,
target :: err
4050 module subroutine qr_factor_no_pivot_cmplx(a, tau, work, olwork, err)
4051 complex(real64),
intent(inout),
dimension(:,:) :: a
4052 complex(real64),
intent(out),
dimension(:) :: tau
4053 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4054 integer(int32),
intent(out),
optional :: olwork
4055 class(errors),
intent(inout),
optional,
target :: err
4058 module subroutine qr_factor_pivot(a, tau, jpvt, work, olwork, err)
4059 real(real64),
intent(inout),
dimension(:,:) :: a
4060 real(real64),
intent(out),
dimension(:) :: tau
4061 integer(int32),
intent(inout),
dimension(:) :: jpvt
4062 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4063 integer(int32),
intent(out),
optional :: olwork
4064 class(errors),
intent(inout),
optional,
target :: err
4067 module subroutine qr_factor_pivot_cmplx(a, tau, jpvt, work, olwork, rwork, &
4069 complex(real64),
intent(inout),
dimension(:,:) :: a
4070 complex(real64),
intent(out),
dimension(:) :: tau
4071 integer(int32),
intent(inout),
dimension(:) :: jpvt
4072 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4073 integer(int32),
intent(out),
optional :: olwork
4074 real(real64),
intent(out),
target,
dimension(:),
optional :: rwork
4075 class(errors),
intent(inout),
optional,
target :: err
4078 module subroutine form_qr_no_pivot(r, tau, q, work, olwork, err)
4079 real(real64),
intent(inout),
dimension(:,:) :: r
4080 real(real64),
intent(in),
dimension(:) :: tau
4081 real(real64),
intent(out),
dimension(:,:) :: q
4082 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4083 integer(int32),
intent(out),
optional :: olwork
4084 class(errors),
intent(inout),
optional,
target :: err
4087 module subroutine form_qr_no_pivot_cmplx(r, tau, q, work, olwork, err)
4088 complex(real64),
intent(inout),
dimension(:,:) :: r
4089 complex(real64),
intent(in),
dimension(:) :: tau
4090 complex(real64),
intent(out),
dimension(:,:) :: q
4091 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4092 integer(int32),
intent(out),
optional :: olwork
4093 class(errors),
intent(inout),
optional,
target :: err
4096 module subroutine form_qr_pivot(r, tau, pvt, q, p, work, olwork, err)
4097 real(real64),
intent(inout),
dimension(:,:) :: r
4098 real(real64),
intent(in),
dimension(:) :: tau
4099 integer(int32),
intent(in),
dimension(:) :: pvt
4100 real(real64),
intent(out),
dimension(:,:) :: q, p
4101 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4102 integer(int32),
intent(out),
optional :: olwork
4103 class(errors),
intent(inout),
optional,
target :: err
4106 module subroutine form_qr_pivot_cmplx(r, tau, pvt, q, p, work, olwork, err)
4107 complex(real64),
intent(inout),
dimension(:,:) :: r
4108 complex(real64),
intent(in),
dimension(:) :: tau
4109 integer(int32),
intent(in),
dimension(:) :: pvt
4110 complex(real64),
intent(out),
dimension(:,:) :: q, p
4111 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4112 integer(int32),
intent(out),
optional :: olwork
4113 class(errors),
intent(inout),
optional,
target :: err
4116 module subroutine mult_qr_mtx(lside, trans, a, tau, c, work, olwork, err)
4117 logical,
intent(in) :: lside, trans
4118 real(real64),
intent(in),
dimension(:) :: tau
4119 real(real64),
intent(inout),
dimension(:,:) :: a, c
4120 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4121 integer(int32),
intent(out),
optional :: olwork
4122 class(errors),
intent(inout),
optional,
target :: err
4125 module subroutine mult_qr_mtx_cmplx(lside, trans, a, tau, c, work, olwork, err)
4126 logical,
intent(in) :: lside, trans
4127 complex(real64),
intent(in),
dimension(:) :: tau
4128 complex(real64),
intent(inout),
dimension(:,:) :: a, c
4129 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4130 integer(int32),
intent(out),
optional :: olwork
4131 class(errors),
intent(inout),
optional,
target :: err
4134 module subroutine mult_qr_vec(trans, a, tau, c, work, olwork, err)
4135 logical,
intent(in) :: trans
4136 real(real64),
intent(inout),
dimension(:,:) :: a
4137 real(real64),
intent(in),
dimension(:) :: tau
4138 real(real64),
intent(inout),
dimension(:) :: c
4139 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4140 integer(int32),
intent(out),
optional :: olwork
4141 class(errors),
intent(inout),
optional,
target :: err
4144 module subroutine mult_qr_vec_cmplx(trans, a, tau, c, work, olwork, err)
4145 logical,
intent(in) :: trans
4146 complex(real64),
intent(inout),
dimension(:,:) :: a
4147 complex(real64),
intent(in),
dimension(:) :: tau
4148 complex(real64),
intent(inout),
dimension(:) :: c
4149 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4150 integer(int32),
intent(out),
optional :: olwork
4151 class(errors),
intent(inout),
optional,
target :: err
4154 module subroutine qr_rank1_update_dbl(q, r, u, v, work, err)
4155 real(real64),
intent(inout),
dimension(:,:) :: q, r
4156 real(real64),
intent(inout),
dimension(:) :: u, v
4157 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4158 class(errors),
intent(inout),
optional,
target :: err
4161 module subroutine qr_rank1_update_cmplx(q, r, u, v, work, rwork, err)
4162 complex(real64),
intent(inout),
dimension(:,:) :: q, r
4163 complex(real64),
intent(inout),
dimension(:) :: u, v
4164 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4165 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
4166 class(errors),
intent(inout),
optional,
target :: err
4169 module subroutine cholesky_factor_dbl(a, upper, err)
4170 real(real64),
intent(inout),
dimension(:,:) :: a
4171 logical,
intent(in),
optional :: upper
4172 class(errors),
intent(inout),
optional,
target :: err
4175 module subroutine cholesky_factor_cmplx(a, upper, err)
4176 complex(real64),
intent(inout),
dimension(:,:) :: a
4177 logical,
intent(in),
optional :: upper
4178 class(errors),
intent(inout),
optional,
target :: err
4181 module subroutine cholesky_rank1_update_dbl(r, u, work, err)
4182 real(real64),
intent(inout),
dimension(:,:) :: r
4183 real(real64),
intent(inout),
dimension(:) :: u
4184 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4185 class(errors),
intent(inout),
optional,
target :: err
4188 module subroutine cholesky_rank1_update_cmplx(r, u, work, err)
4189 complex(real64),
intent(inout),
dimension(:,:) :: r
4190 complex(real64),
intent(inout),
dimension(:) :: u
4191 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4192 class(errors),
intent(inout),
optional,
target :: err
4195 module subroutine cholesky_rank1_downdate_dbl(r, u, work, err)
4196 real(real64),
intent(inout),
dimension(:,:) :: r
4197 real(real64),
intent(inout),
dimension(:) :: u
4198 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4199 class(errors),
intent(inout),
optional,
target :: err
4202 module subroutine cholesky_rank1_downdate_cmplx(r, u, work, err)
4203 complex(real64),
intent(inout),
dimension(:,:) :: r
4204 complex(real64),
intent(inout),
dimension(:) :: u
4205 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4206 class(errors),
intent(inout),
optional,
target :: err
4209 module subroutine rz_factor_dbl(a, tau, work, olwork, err)
4210 real(real64),
intent(inout),
dimension(:,:) :: a
4211 real(real64),
intent(out),
dimension(:) :: tau
4212 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4213 integer(int32),
intent(out),
optional :: olwork
4214 class(errors),
intent(inout),
optional,
target :: err
4217 module subroutine rz_factor_cmplx(a, tau, work, olwork, err)
4218 complex(real64),
intent(inout),
dimension(:,:) :: a
4219 complex(real64),
intent(out),
dimension(:) :: tau
4220 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4221 integer(int32),
intent(out),
optional :: olwork
4222 class(errors),
intent(inout),
optional,
target :: err
4225 module subroutine mult_rz_mtx(lside, trans, l, a, tau, c, work, olwork, err)
4226 logical,
intent(in) :: lside, trans
4227 integer(int32),
intent(in) :: l
4228 real(real64),
intent(inout),
dimension(:,:) :: a, c
4229 real(real64),
intent(in),
dimension(:) :: tau
4230 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4231 integer(int32),
intent(out),
optional :: olwork
4232 class(errors),
intent(inout),
optional,
target :: err
4235 module subroutine mult_rz_mtx_cmplx(lside, trans, l, a, tau, c, work, olwork, err)
4236 logical,
intent(in) :: lside, trans
4237 integer(int32),
intent(in) :: l
4238 complex(real64),
intent(inout),
dimension(:,:) :: a, c
4239 complex(real64),
intent(in),
dimension(:) :: tau
4240 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4241 integer(int32),
intent(out),
optional :: olwork
4242 class(errors),
intent(inout),
optional,
target :: err
4245 module subroutine mult_rz_vec(trans, l, a, tau, c, work, olwork, err)
4246 logical,
intent(in) :: trans
4247 integer(int32),
intent(in) :: l
4248 real(real64),
intent(inout),
dimension(:,:) :: a
4249 real(real64),
intent(in),
dimension(:) :: tau
4250 real(real64),
intent(inout),
dimension(:) :: c
4251 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4252 integer(int32),
intent(out),
optional :: olwork
4253 class(errors),
intent(inout),
optional,
target :: err
4256 module subroutine mult_rz_vec_cmplx(trans, l, a, tau, c, work, olwork, err)
4257 logical,
intent(in) :: trans
4258 integer(int32),
intent(in) :: l
4259 complex(real64),
intent(inout),
dimension(:,:) :: a
4260 complex(real64),
intent(in),
dimension(:) :: tau
4261 complex(real64),
intent(inout),
dimension(:) :: c
4262 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4263 integer(int32),
intent(out),
optional :: olwork
4264 class(errors),
intent(inout),
optional,
target :: err
4267 module subroutine svd_dbl(a, s, u, vt, work, olwork, err)
4268 real(real64),
intent(inout),
dimension(:,:) :: a
4269 real(real64),
intent(out),
dimension(:) :: s
4270 real(real64),
intent(out),
optional,
dimension(:,:) :: u, vt
4271 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4272 integer(int32),
intent(out),
optional :: olwork
4273 class(errors),
intent(inout),
optional,
target :: err
4276 module subroutine svd_cmplx(a, s, u, vt, work, olwork, rwork, err)
4277 complex(real64),
intent(inout),
dimension(:,:) :: a
4278 real(real64),
intent(out),
dimension(:) :: s
4279 complex(real64),
intent(out),
optional,
dimension(:,:) :: u, vt
4280 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4281 integer(int32),
intent(out),
optional :: olwork
4282 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
4283 class(errors),
intent(inout),
optional,
target :: err
4286 module subroutine lq_factor_no_pivot(a, tau, work, olwork, err)
4287 real(real64),
intent(inout),
dimension(:,:) :: a
4288 real(real64),
intent(out),
dimension(:) :: tau
4289 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4290 integer(int32),
intent(out),
optional :: olwork
4291 class(errors),
intent(inout),
optional,
target :: err
4294 module subroutine lq_factor_no_pivot_cmplx(a, tau, work, olwork, err)
4295 complex(real64),
intent(inout),
dimension(:,:) :: a
4296 complex(real64),
intent(out),
dimension(:) :: tau
4297 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4298 integer(int32),
intent(out),
optional :: olwork
4299 class(errors),
intent(inout),
optional,
target :: err
4302 module subroutine form_lq_no_pivot(l, tau, q, work, olwork, err)
4303 real(real64),
intent(inout),
dimension(:,:) :: l
4304 real(real64),
intent(in),
dimension(:) :: tau
4305 real(real64),
intent(out),
dimension(:,:) :: q
4306 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4307 integer(int32),
intent(out),
optional :: olwork
4308 class(errors),
intent(inout),
optional,
target :: err
4311 module subroutine form_lq_no_pivot_cmplx(l, tau, q, work, olwork, err)
4312 complex(real64),
intent(inout),
dimension(:,:) :: l
4313 complex(real64),
intent(in),
dimension(:) :: tau
4314 complex(real64),
intent(out),
dimension(:,:) :: q
4315 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4316 integer(int32),
intent(out),
optional :: olwork
4317 class(errors),
intent(inout),
optional,
target :: err
4320 module subroutine mult_lq_mtx(lside, trans, a, tau, c, work, olwork, err)
4321 logical,
intent(in) :: lside, trans
4322 real(real64),
intent(in),
dimension(:,:) :: a
4323 real(real64),
intent(in),
dimension(:) :: tau
4324 real(real64),
intent(inout),
dimension(:,:) :: c
4325 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4326 integer(int32),
intent(out),
optional :: olwork
4327 class(errors),
intent(inout),
optional,
target :: err
4330 module subroutine mult_lq_mtx_cmplx(lside, trans, a, tau, c, work, olwork, err)
4331 logical,
intent(in) :: lside, trans
4332 complex(real64),
intent(in),
dimension(:,:) :: a
4333 complex(real64),
intent(in),
dimension(:) :: tau
4334 complex(real64),
intent(inout),
dimension(:,:) :: c
4335 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4336 integer(int32),
intent(out),
optional :: olwork
4337 class(errors),
intent(inout),
optional,
target :: err
4340 module subroutine mult_lq_vec(trans, a, tau, c, work, olwork, err)
4341 logical,
intent(in) :: trans
4342 real(real64),
intent(in),
dimension(:,:) :: a
4343 real(real64),
intent(in),
dimension(:) :: tau
4344 real(real64),
intent(inout),
dimension(:) :: c
4345 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4346 integer(int32),
intent(out),
optional :: olwork
4347 class(errors),
intent(inout),
optional,
target :: err
4350 module subroutine mult_lq_vec_cmplx(trans, a, tau, c, work, olwork, err)
4351 logical,
intent(in) :: trans
4352 complex(real64),
intent(in),
dimension(:,:) :: a
4353 complex(real64),
intent(in),
dimension(:) :: tau
4354 complex(real64),
intent(inout),
dimension(:) :: c
4355 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4356 integer(int32),
intent(out),
optional :: olwork
4357 class(errors),
intent(inout),
optional,
target :: err
4365 module subroutine solve_tri_mtx(lside, upper, trans, nounit, alpha, a, b, err)
4366 logical,
intent(in) :: lside, upper, trans, nounit
4367 real(real64),
intent(in) :: alpha
4368 real(real64),
intent(in),
dimension(:,:) :: a
4369 real(real64),
intent(inout),
dimension(:,:) :: b
4370 class(errors),
intent(inout),
optional,
target :: err
4373 module subroutine solve_tri_mtx_cmplx(lside, upper, trans, nounit, alpha, a, b, err)
4374 logical,
intent(in) :: lside, upper, trans, nounit
4375 complex(real64),
intent(in) :: alpha
4376 complex(real64),
intent(in),
dimension(:,:) :: a
4377 complex(real64),
intent(inout),
dimension(:,:) :: b
4378 class(errors),
intent(inout),
optional,
target :: err
4381 module subroutine solve_tri_vec(upper, trans, nounit, a, x, err)
4382 logical,
intent(in) :: upper, trans, nounit
4383 real(real64),
intent(in),
dimension(:,:) :: a
4384 real(real64),
intent(inout),
dimension(:) :: x
4385 class(errors),
intent(inout),
optional,
target :: err
4388 module subroutine solve_tri_vec_cmplx(upper, trans, nounit, a, x, err)
4389 logical,
intent(in) :: upper, trans, nounit
4390 complex(real64),
intent(in),
dimension(:,:) :: a
4391 complex(real64),
intent(inout),
dimension(:) :: x
4392 class(errors),
intent(inout),
optional,
target :: err
4395 module subroutine solve_lu_mtx(a, ipvt, b, err)
4396 real(real64),
intent(in),
dimension(:,:) :: a
4397 integer(int32),
intent(in),
dimension(:) :: ipvt
4398 real(real64),
intent(inout),
dimension(:,:) :: b
4399 class(errors),
intent(inout),
optional,
target :: err
4402 module subroutine solve_lu_mtx_cmplx(a, ipvt, b, err)
4403 complex(real64),
intent(in),
dimension(:,:) :: a
4404 integer(int32),
intent(in),
dimension(:) :: ipvt
4405 complex(real64),
intent(inout),
dimension(:,:) :: b
4406 class(errors),
intent(inout),
optional,
target :: err
4409 module subroutine solve_lu_vec(a, ipvt, b, err)
4410 real(real64),
intent(in),
dimension(:,:) :: a
4411 integer(int32),
intent(in),
dimension(:) :: ipvt
4412 real(real64),
intent(inout),
dimension(:) :: b
4413 class(errors),
intent(inout),
optional,
target :: err
4416 module subroutine solve_lu_vec_cmplx(a, ipvt, b, err)
4417 complex(real64),
intent(in),
dimension(:,:) :: a
4418 integer(int32),
intent(in),
dimension(:) :: ipvt
4419 complex(real64),
intent(inout),
dimension(:) :: b
4420 class(errors),
intent(inout),
optional,
target :: err
4423 module subroutine solve_qr_no_pivot_mtx(a, tau, b, work, olwork, err)
4424 real(real64),
intent(inout),
dimension(:,:) :: a, b
4425 real(real64),
intent(in),
dimension(:) :: tau
4426 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4427 integer(int32),
intent(out),
optional :: olwork
4428 class(errors),
intent(inout),
optional,
target :: err
4431 module subroutine solve_qr_no_pivot_mtx_cmplx(a, tau, b, work, olwork, err)
4432 complex(real64),
intent(inout),
dimension(:,:) :: a, b
4433 complex(real64),
intent(in),
dimension(:) :: tau
4434 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4435 integer(int32),
intent(out),
optional :: olwork
4436 class(errors),
intent(inout),
optional,
target :: err
4439 module subroutine solve_qr_no_pivot_vec(a, tau, b, work, olwork, err)
4440 real(real64),
intent(inout),
dimension(:,:) :: a
4441 real(real64),
intent(in),
dimension(:) :: tau
4442 real(real64),
intent(inout),
dimension(:) :: b
4443 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4444 integer(int32),
intent(out),
optional :: olwork
4445 class(errors),
intent(inout),
optional,
target :: err
4448 module subroutine solve_qr_no_pivot_vec_cmplx(a, tau, b, work, olwork, err)
4449 complex(real64),
intent(inout),
dimension(:,:) :: a
4450 complex(real64),
intent(in),
dimension(:) :: tau
4451 complex(real64),
intent(inout),
dimension(:) :: b
4452 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4453 integer(int32),
intent(out),
optional :: olwork
4454 class(errors),
intent(inout),
optional,
target :: err
4457 module subroutine solve_qr_pivot_mtx(a, tau, jpvt, b, work, olwork, err)
4458 real(real64),
intent(inout),
dimension(:,:) :: a
4459 real(real64),
intent(in),
dimension(:) :: tau
4460 integer(int32),
intent(in),
dimension(:) :: jpvt
4461 real(real64),
intent(inout),
dimension(:,:) :: b
4462 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4463 integer(int32),
intent(out),
optional :: olwork
4464 class(errors),
intent(inout),
optional,
target :: err
4467 module subroutine solve_qr_pivot_mtx_cmplx(a, tau, jpvt, b, work, olwork, err)
4468 complex(real64),
intent(inout),
dimension(:,:) :: a
4469 complex(real64),
intent(in),
dimension(:) :: tau
4470 integer(int32),
intent(in),
dimension(:) :: jpvt
4471 complex(real64),
intent(inout),
dimension(:,:) :: b
4472 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4473 integer(int32),
intent(out),
optional :: olwork
4474 class(errors),
intent(inout),
optional,
target :: err
4477 module subroutine solve_qr_pivot_vec(a, tau, jpvt, b, work, olwork, err)
4478 real(real64),
intent(inout),
dimension(:,:) :: a
4479 real(real64),
intent(in),
dimension(:) :: tau
4480 integer(int32),
intent(in),
dimension(:) :: jpvt
4481 real(real64),
intent(inout),
dimension(:) :: b
4482 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4483 integer(int32),
intent(out),
optional :: olwork
4484 class(errors),
intent(inout),
optional,
target :: err
4487 module subroutine solve_qr_pivot_vec_cmplx(a, tau, jpvt, b, work, olwork, err)
4488 complex(real64),
intent(inout),
dimension(:,:) :: a
4489 complex(real64),
intent(in),
dimension(:) :: tau
4490 integer(int32),
intent(in),
dimension(:) :: jpvt
4491 complex(real64),
intent(inout),
dimension(:) :: b
4492 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4493 integer(int32),
intent(out),
optional :: olwork
4494 class(errors),
intent(inout),
optional,
target :: err
4497 module subroutine solve_cholesky_mtx(upper, a, b, err)
4498 logical,
intent(in) :: upper
4499 real(real64),
intent(in),
dimension(:,:) :: a
4500 real(real64),
intent(inout),
dimension(:,:) :: b
4501 class(errors),
intent(inout),
optional,
target :: err
4504 module subroutine solve_cholesky_mtx_cmplx(upper, a, b, err)
4505 logical,
intent(in) :: upper
4506 complex(real64),
intent(in),
dimension(:,:) :: a
4507 complex(real64),
intent(inout),
dimension(:,:) :: b
4508 class(errors),
intent(inout),
optional,
target :: err
4511 module subroutine solve_cholesky_vec(upper, a, b, err)
4512 logical,
intent(in) :: upper
4513 real(real64),
intent(in),
dimension(:,:) :: a
4514 real(real64),
intent(inout),
dimension(:) :: b
4515 class(errors),
intent(inout),
optional,
target :: err
4518 module subroutine solve_cholesky_vec_cmplx(upper, a, b, err)
4519 logical,
intent(in) :: upper
4520 complex(real64),
intent(in),
dimension(:,:) :: a
4521 complex(real64),
intent(inout),
dimension(:) :: b
4522 class(errors),
intent(inout),
optional,
target :: err
4525 module subroutine solve_least_squares_mtx(a, b, work, olwork, err)
4526 real(real64),
intent(inout),
dimension(:,:) :: a, b
4527 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4528 integer(int32),
intent(out),
optional :: olwork
4529 class(errors),
intent(inout),
optional,
target :: err
4532 module subroutine solve_least_squares_mtx_cmplx(a, b, work, olwork, err)
4533 complex(real64),
intent(inout),
dimension(:,:) :: a, b
4534 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4535 integer(int32),
intent(out),
optional :: olwork
4536 class(errors),
intent(inout),
optional,
target :: err
4539 module subroutine solve_least_squares_vec(a, b, work, olwork, err)
4540 real(real64),
intent(inout),
dimension(:,:) :: a
4541 real(real64),
intent(inout),
dimension(:) :: b
4542 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4543 integer(int32),
intent(out),
optional :: olwork
4544 class(errors),
intent(inout),
optional,
target :: err
4547 module subroutine solve_least_squares_vec_cmplx(a, b, work, olwork, err)
4548 complex(real64),
intent(inout),
dimension(:,:) :: a
4549 complex(real64),
intent(inout),
dimension(:) :: b
4550 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4551 integer(int32),
intent(out),
optional :: olwork
4552 class(errors),
intent(inout),
optional,
target :: err
4555 module subroutine solve_least_squares_mtx_pvt(a, b, ipvt, arnk, work, olwork, err)
4556 real(real64),
intent(inout),
dimension(:,:) :: a, b
4557 integer(int32),
intent(inout),
target,
optional,
dimension(:) :: ipvt
4558 integer(int32),
intent(out),
optional :: arnk
4559 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4560 integer(int32),
intent(out),
optional :: olwork
4561 class(errors),
intent(inout),
optional,
target :: err
4564 module subroutine solve_least_squares_mtx_pvt_cmplx(a, b, ipvt, arnk, &
4565 work, olwork, rwork, err)
4566 complex(real64),
intent(inout),
dimension(:,:) :: a, b
4567 integer(int32),
intent(inout),
target,
optional,
dimension(:) :: ipvt
4568 integer(int32),
intent(out),
optional :: arnk
4569 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4570 integer(int32),
intent(out),
optional :: olwork
4571 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
4572 class(errors),
intent(inout),
optional,
target :: err
4575 module subroutine solve_least_squares_vec_pvt(a, b, ipvt, arnk, work, olwork, err)
4576 real(real64),
intent(inout),
dimension(:,:) :: a
4577 real(real64),
intent(inout),
dimension(:) :: b
4578 integer(int32),
intent(inout),
target,
optional,
dimension(:) :: ipvt
4579 integer(int32),
intent(out),
optional :: arnk
4580 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4581 integer(int32),
intent(out),
optional :: olwork
4582 class(errors),
intent(inout),
optional,
target :: err
4585 module subroutine solve_least_squares_vec_pvt_cmplx(a, b, ipvt, arnk, &
4586 work, olwork, rwork, err)
4587 complex(real64),
intent(inout),
dimension(:,:) :: a
4588 complex(real64),
intent(inout),
dimension(:) :: b
4589 integer(int32),
intent(inout),
target,
optional,
dimension(:) :: ipvt
4590 integer(int32),
intent(out),
optional :: arnk
4591 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4592 integer(int32),
intent(out),
optional :: olwork
4593 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
4594 class(errors),
intent(inout),
optional,
target :: err
4597 module subroutine solve_least_squares_mtx_svd(a, b, s, arnk, work, olwork, err)
4598 real(real64),
intent(inout),
dimension(:,:) :: a, b
4599 integer(int32),
intent(out),
optional :: arnk
4600 real(real64),
intent(out),
target,
optional,
dimension(:) :: work, s
4601 integer(int32),
intent(out),
optional :: olwork
4602 class(errors),
intent(inout),
optional,
target :: err
4605 module subroutine solve_least_squares_mtx_svd_cmplx(a, b, s, arnk, work, &
4607 complex(real64),
intent(inout),
dimension(:,:) :: a, b
4608 integer(int32),
intent(out),
optional :: arnk
4609 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4610 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork, s
4611 integer(int32),
intent(out),
optional :: olwork
4612 class(errors),
intent(inout),
optional,
target :: err
4615 module subroutine solve_least_squares_vec_svd(a, b, s, arnk, work, olwork, err)
4616 real(real64),
intent(inout),
dimension(:,:) :: a
4617 real(real64),
intent(inout),
dimension(:) :: b
4618 integer(int32),
intent(out),
optional :: arnk
4619 real(real64),
intent(out),
target,
optional,
dimension(:) :: work, s
4620 integer(int32),
intent(out),
optional :: olwork
4621 class(errors),
intent(inout),
optional,
target :: err
4624 module subroutine solve_least_squares_vec_svd_cmplx(a, b, s, arnk, work, &
4626 complex(real64),
intent(inout),
dimension(:,:) :: a
4627 complex(real64),
intent(inout),
dimension(:) :: b
4628 integer(int32),
intent(out),
optional :: arnk
4629 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4630 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork, s
4631 integer(int32),
intent(out),
optional :: olwork
4632 class(errors),
intent(inout),
optional,
target :: err
4635 module subroutine mtx_inverse_dbl(a, iwork, work, olwork, err)
4636 real(real64),
intent(inout),
dimension(:,:) :: a
4637 integer(int32),
intent(out),
target,
optional,
dimension(:) :: iwork
4638 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4639 integer(int32),
intent(out),
optional :: olwork
4640 class(errors),
intent(inout),
optional,
target :: err
4643 module subroutine mtx_inverse_cmplx(a, iwork, work, olwork, err)
4644 complex(real64),
intent(inout),
dimension(:,:) :: a
4645 integer(int32),
intent(out),
target,
optional,
dimension(:) :: iwork
4646 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4647 integer(int32),
intent(out),
optional :: olwork
4648 class(errors),
intent(inout),
optional,
target :: err
4651 module subroutine mtx_pinverse_dbl(a, ainv, tol, work, olwork, err)
4652 real(real64),
intent(inout),
dimension(:,:) :: a
4653 real(real64),
intent(out),
dimension(:,:) :: ainv
4654 real(real64),
intent(in),
optional :: tol
4655 real(real64),
intent(out),
target,
dimension(:),
optional :: work
4656 integer(int32),
intent(out),
optional :: olwork
4657 class(errors),
intent(inout),
optional,
target :: err
4660 module subroutine mtx_pinverse_cmplx(a, ainv, tol, work, olwork, rwork, err)
4661 complex(real64),
intent(inout),
dimension(:,:) :: a
4662 complex(real64),
intent(out),
dimension(:,:) :: ainv
4663 real(real64),
intent(in),
optional :: tol
4664 complex(real64),
intent(out),
target,
dimension(:),
optional :: work
4665 integer(int32),
intent(out),
optional :: olwork
4666 real(real64),
intent(out),
target,
dimension(:),
optional :: rwork
4667 class(errors),
intent(inout),
optional,
target :: err
4670 module subroutine solve_lq_mtx(a, tau, b, work, olwork, err)
4671 real(real64),
intent(in),
dimension(:,:) :: a
4672 real(real64),
intent(in),
dimension(:) :: tau
4673 real(real64),
intent(inout),
dimension(:,:) :: b
4674 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4675 integer(int32),
intent(out),
optional :: olwork
4676 class(errors),
intent(inout),
optional,
target :: err
4679 module subroutine solve_lq_mtx_cmplx(a, tau, b, work, olwork, err)
4680 complex(real64),
intent(in),
dimension(:,:) :: a
4681 complex(real64),
intent(in),
dimension(:) :: tau
4682 complex(real64),
intent(inout),
dimension(:,:) :: b
4683 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4684 integer(int32),
intent(out),
optional :: olwork
4685 class(errors),
intent(inout),
optional,
target :: err
4688 module subroutine solve_lq_vec(a, tau, b, work, olwork, err)
4689 real(real64),
intent(in),
dimension(:,:) :: a
4690 real(real64),
intent(in),
dimension(:) :: tau
4691 real(real64),
intent(inout),
dimension(:) :: b
4692 real(real64),
intent(out),
target,
optional,
dimension(:) :: work
4693 integer(int32),
intent(out),
optional :: olwork
4694 class(errors),
intent(inout),
optional,
target :: err
4697 module subroutine solve_lq_vec_cmplx(a, tau, b, work, olwork, err)
4698 complex(real64),
intent(in),
dimension(:,:) :: a
4699 complex(real64),
intent(in),
dimension(:) :: tau
4700 complex(real64),
intent(inout),
dimension(:) :: b
4701 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4702 integer(int32),
intent(out),
optional :: olwork
4703 class(errors),
intent(inout),
optional,
target :: err
4711 module subroutine eigen_symm(vecs, a, vals, work, olwork, err)
4712 logical,
intent(in) :: vecs
4713 real(real64),
intent(inout),
dimension(:,:) :: a
4714 real(real64),
intent(out),
dimension(:) :: vals
4715 real(real64),
intent(out),
pointer,
optional,
dimension(:) :: work
4716 integer(int32),
intent(out),
optional :: olwork
4717 class(errors),
intent(inout),
optional,
target :: err
4720 module subroutine eigen_asymm(a, vals, vecs, work, olwork, err)
4721 real(real64),
intent(inout),
dimension(:,:) :: a
4722 complex(real64),
intent(out),
dimension(:) :: vals
4723 complex(real64),
intent(out),
optional,
dimension(:,:) :: vecs
4724 real(real64),
intent(out),
pointer,
optional,
dimension(:) :: work
4725 integer(int32),
intent(out),
optional :: olwork
4726 class(errors),
intent(inout),
optional,
target :: err
4729 module subroutine eigen_gen(a, b, alpha, beta, vecs, work, olwork, err)
4730 real(real64),
intent(inout),
dimension(:,:) :: a, b
4731 complex(real64),
intent(out),
dimension(:) :: alpha
4732 real(real64),
intent(out),
optional,
dimension(:) :: beta
4733 complex(real64),
intent(out),
optional,
dimension(:,:) :: vecs
4734 real(real64),
intent(out),
optional,
pointer,
dimension(:) :: work
4735 integer(int32),
intent(out),
optional :: olwork
4736 class(errors),
intent(inout),
optional,
target :: err
4739 module subroutine eigen_cmplx(a, vals, vecs, work, olwork, rwork, err)
4740 complex(real64),
intent(inout),
dimension(:,:) :: a
4741 complex(real64),
intent(out),
dimension(:) :: vals
4742 complex(real64),
intent(out),
optional,
dimension(:,:) :: vecs
4743 complex(real64),
intent(out),
target,
optional,
dimension(:) :: work
4744 real(real64),
intent(out),
target,
optional,
dimension(:) :: rwork
4745 integer(int32),
intent(out),
optional :: olwork
4746 class(errors),
intent(inout),
optional,
target :: err
4754 module subroutine sort_dbl_array(x, ascend)
4755 real(real64),
intent(inout),
dimension(:) :: x
4756 logical,
intent(in),
optional :: ascend
4759 module subroutine sort_dbl_array_ind(x, ind, ascend, err)
4760 real(real64),
intent(inout),
dimension(:) :: x
4761 integer(int32),
intent(inout),
dimension(:) :: ind
4762 logical,
intent(in),
optional :: ascend
4763 class(errors),
intent(inout),
optional,
target :: err
4766 module subroutine sort_cmplx_array(x, ascend)
4767 complex(real64),
intent(inout),
dimension(:) :: x
4768 logical,
intent(in),
optional :: ascend
4771 module subroutine sort_cmplx_array_ind(x, ind, ascend, err)
4772 complex(real64),
intent(inout),
dimension(:) :: x
4773 integer(int32),
intent(inout),
dimension(:) :: ind
4774 logical,
intent(in),
optional :: ascend
4775 class(errors),
intent(inout),
optional,
target :: err
4778 module subroutine sort_eigen_cmplx(vals, vecs, ascend, err)
4779 complex(real64),
intent(inout),
dimension(:) :: vals
4780 complex(real64),
intent(inout),
dimension(:,:) :: vecs
4781 logical,
intent(in),
optional :: ascend
4782 class(errors),
intent(inout),
optional,
target :: err
4785 module subroutine sort_eigen_dbl(vals, vecs, ascend, err)
4786 real(real64),
intent(inout),
dimension(:) :: vals
4787 real(real64),
intent(inout),
dimension(:,:) :: vecs
4788 logical,
intent(in),
optional :: ascend
4789 class(errors),
intent(inout),
optional,
target :: err
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).
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.
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.
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.
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).
Computes the triangular matrix operation: , or , where A is a triangular matrix.
Provides a set of common linear algebra routines.