Linear Algebra

  1. DocTestSetup = :(using LinearAlgebra, SparseArrays, SuiteSparse)

除了(且作为一部分)对多维数组的支持,Julia 还提供了许多常见和实用的线性代数运算的本地实现,可通过 using LinearAlgebra 加载。 基本的运算,比如 trdetinv 都是支持的:

  1. julia> A = [1 2 3; 4 1 6; 7 8 1]
  2. 3×3 Matrix{Int64}:
  3. 1 2 3
  4. 4 1 6
  5. 7 8 1
  6. julia> tr(A)
  7. 3
  8. julia> det(A)
  9. 104.0
  10. julia> inv(A)
  11. 3×3 Matrix{Float64}:
  12. -0.451923 0.211538 0.0865385
  13. 0.365385 -0.192308 0.0576923
  14. 0.240385 0.0576923 -0.0673077

还有其它实用的运算,比如寻找特征值或特征向量:

  1. julia> A = [-4. -17.; 2. 2.]
  2. 2×2 Matrix{Float64}:
  3. -4.0 -17.0
  4. 2.0 2.0
  5. julia> eigvals(A)
  6. 2-element Vector{ComplexF64}:
  7. -1.0 - 5.0im
  8. -1.0 + 5.0im
  9. julia> eigvecs(A)
  10. 2×2 Matrix{ComplexF64}:
  11. 0.945905-0.0im 0.945905+0.0im
  12. -0.166924+0.278207im -0.166924-0.278207im

此外,Julia 提供了多种矩阵分解,通过将矩阵预先分解成更适合问题的形式(出于性能或内存上的原因),它们可用于加快问题的求解,如线性求解或矩阵求幂。更多有关信息请参阅文档 factorize。举个例子:

  1. julia> A = [1.5 2 -4; 3 -1 -6; -10 2.3 4]
  2. 3×3 Matrix{Float64}:
  3. 1.5 2.0 -4.0
  4. 3.0 -1.0 -6.0
  5. -10.0 2.3 4.0
  6. julia> factorize(A)
  7. LU{Float64, Matrix{Float64}}
  8. L factor:
  9. 3×3 Matrix{Float64}:
  10. 1.0 0.0 0.0
  11. -0.15 1.0 0.0
  12. -0.3 -0.132196 1.0
  13. U factor:
  14. 3×3 Matrix{Float64}:
  15. -10.0 2.3 4.0
  16. 0.0 2.345 -3.4
  17. 0.0 0.0 -5.24947

因为 A 不是埃尔米特、对称、三角、三对角或双对角矩阵,LU 分解也许是我们能做的最好分解。与之相比:

  1. julia> B = [1.5 2 -4; 2 -1 -3; -4 -3 5]
  2. 3×3 Matrix{Float64}:
  3. 1.5 2.0 -4.0
  4. 2.0 -1.0 -3.0
  5. -4.0 -3.0 5.0
  6. julia> factorize(B)
  7. BunchKaufman{Float64, Matrix{Float64}}
  8. D factor:
  9. 3×3 Tridiagonal{Float64, Vector{Float64}}:
  10. -1.64286 0.0
  11. 0.0 -2.8 0.0
  12. 0.0 5.0
  13. U factor:
  14. 3×3 UnitUpperTriangular{Float64, Matrix{Float64}}:
  15. 1.0 0.142857 -0.8
  16. 1.0 -0.6
  17. 1.0
  18. permutation:
  19. 3-element Vector{Int64}:
  20. 1
  21. 2
  22. 3

在这里,Julia 能够发现 B 确实是对称矩阵,并且使用一种更适当的分解。针对一个具有某些属性的矩阵,比如一个对称或三对角矩阵,往往有可能写出更高效的代码。Julia 提供了一些特殊的类型好让你可以根据矩阵所具有的属性「标记」它们。例如:

  1. julia> B = [1.5 2 -4; 2 -1 -3; -4 -3 5]
  2. 3×3 Matrix{Float64}:
  3. 1.5 2.0 -4.0
  4. 2.0 -1.0 -3.0
  5. -4.0 -3.0 5.0
  6. julia> sB = Symmetric(B)
  7. 3×3 Symmetric{Float64, Matrix{Float64}}:
  8. 1.5 2.0 -4.0
  9. 2.0 -1.0 -3.0
  10. -4.0 -3.0 5.0

sB 已经被标记成(实)对称矩阵,所以对于之后可能在它上面执行的操作,例如特征因子化或矩阵-向量乘积,只引用矩阵的一半可以提高效率。举个例子:

  1. julia> B = [1.5 2 -4; 2 -1 -3; -4 -3 5]
  2. 3×3 Matrix{Float64}:
  3. 1.5 2.0 -4.0
  4. 2.0 -1.0 -3.0
  5. -4.0 -3.0 5.0
  6. julia> sB = Symmetric(B)
  7. 3×3 Symmetric{Float64, Matrix{Float64}}:
  8. 1.5 2.0 -4.0
  9. 2.0 -1.0 -3.0
  10. -4.0 -3.0 5.0
  11. julia> x = [1; 2; 3]
  12. 3-element Vector{Int64}:
  13. 1
  14. 2
  15. 3
  16. julia> sB\x
  17. 3-element Vector{Float64}:
  18. -1.7391304347826084
  19. -1.1086956521739126
  20. -1.4565217391304346

\ 运算在这里执行线性求解。左除运算符相当强大,很容易写出紧凑、可读的代码,它足够灵活,可以求解各种线性方程组。

特殊矩阵

具有特殊对称性和结构的矩阵经常在线性代数中出现并且与各种矩阵分解相关。 Julia 具有丰富的特殊矩阵类型,可以快速计算专门为特定矩阵类型开发的专用例程。

下表总结了在 Julia 中已经实现的特殊矩阵类型,以及为它们提供各种优化方法的钩子在 LAPACK 中是否可用。

类型 描述
Symmetric Symmetric matrix
Hermitian Hermitian matrix
UpperTriangular 三角矩阵
UnitUpperTriangular 单位上三角矩阵 with unit diagonal
LowerTriangular 三角矩阵
UnitLowerTriangular 单位下三角矩阵
UpperHessenberg Upper Hessenberg matrix
Tridiagonal Tridiagonal matrix
SymTridiagonal 对称三对角矩阵
Bidiagonal 上/下双对角矩阵
Diagonal Diagonal matrix
UniformScaling Uniform scaling operator

基本运算

矩阵类型 + - * \ 具有优化方法的其它函数
Symmetric MV inv, sqrt, exp
Hermitian MV inv, sqrt, exp
UpperTriangular MV MV inv, det
UnitUpperTriangular MV MV inv, det
LowerTriangular MV MV inv, det
UnitLowerTriangular MV MV inv, det
UpperHessenberg MM inv, det
SymTridiagonal M M MS MV eigmax, eigmin
Tridiagonal M M MS MV
Bidiagonal M M MS MV
Diagonal M M MV MV inv, det, logdet, /
UniformScaling M M MVS MVS /

Legend:

Key 说明
M(矩阵) 针对矩阵与矩阵运算的优化方法可用
V(向量) 针对矩阵与向量运算的优化方法可用
S(标量) 针对矩阵与标量运算的优化方法可用

矩阵分解

矩阵类型 LAPACK eigen eigvals eigvecs svd svdvals
Symmetric SY ARI
Hermitian HE ARI
UpperTriangular TR A A A
UnitUpperTriangular TR A A A
LowerTriangular TR A A A
UnitLowerTriangular TR A A A
SymTridiagonal ST A ARI AV
Tridiagonal GT
Bidiagonal BD A A
Diagonal DI A

图例:

键名 说明 例子
A (all) 找到所有特征值和/或特征向量的优化方法可用 e.g. eigvals(M)
R (range) 通过第 ih 个特征值寻找第 il 个特征值的优化方法可用 eigvals(M, il, ih)
I (interval) 寻找在区间 [vl, vh] 内的特征值的优化方法可用 eigvals(M, vl, vh)
V (vectors) 寻找对应于特征值 x=[x1, x2,...] 的特征向量的优化方法可用 eigvecs(M, x)

均匀缩放运算符

UniformScaling 运算符代表一个标量乘以单位运算符,λ*I。 单位运算符 I 被定义为常量,是 UniformScaling 的实例。 这些运算符的大小是通用的,并且会在二元运算符 +-*\ 中与另一个矩阵相匹配。 对于 A+IA-I ,这意味着 A 必须是个方阵。 与单位运算符 I 相乘是一个空操作(除了检查比例因子是一),因此几乎没有开销。

来查看 UniformScaling 运算符的运行结果:

  1. julia> U = UniformScaling(2);
  2. julia> a = [1 2; 3 4]
  3. 2×2 Matrix{Int64}:
  4. 1 2
  5. 3 4
  6. julia> a + U
  7. 2×2 Matrix{Int64}:
  8. 3 2
  9. 3 6
  10. julia> a * U
  11. 2×2 Matrix{Int64}:
  12. 2 4
  13. 6 8
  14. julia> [a U]
  15. 2×4 Matrix{Int64}:
  16. 1 2 2 0
  17. 3 4 0 2
  18. julia> b = [1 2 3; 4 5 6]
  19. 2×3 Matrix{Int64}:
  20. 1 2 3
  21. 4 5 6
  22. julia> b - U
  23. ERROR: DimensionMismatch("matrix is not square: dimensions are (2, 3)")
  24. Stacktrace:
  25. [...]

If you need to solve many systems of the form (A+μI)x = b for the same A and different μ, it might be beneficial to first compute the Hessenberg factorization F of A via the hessenberg function. Given F, Julia employs an efficient algorithm for (F+μ*I) \ b (equivalent to (A+μ*I)x \ b) and related operations like determinants.

Matrix factorizations

Matrix factorizations (a.k.a. matrix decompositions) compute the factorization of a matrix into a product of matrices, and are one of the central concepts in linear algebra.

The following table summarizes the types of matrix factorizations that have been implemented in Julia. Details of their associated methods can be found in the Standard functions section of the Linear Algebra documentation.

Type Description
BunchKaufman Bunch-Kaufman factorization
Cholesky Cholesky factorization
CholeskyPivoted Pivoted Cholesky factorization
LDLt LDL(T) factorization
LU LU factorization
QR QR factorization
QRCompactWY Compact WY form of the QR factorization
QRPivoted Pivoted QR factorization
LQ QR factorization of transpose(A)
Hessenberg Hessenberg decomposition
Eigen Spectral decomposition
GeneralizedEigen Generalized spectral decomposition
SVD Singular value decomposition
GeneralizedSVD Generalized SVD
Schur Schur decomposition
GeneralizedSchur Generalized Schur decomposition

Standard functions

Linear algebra functions in Julia are largely implemented by calling functions from LAPACK. Sparse matrix factorizations call functions from SuiteSparse. Other sparse solvers are available as Julia packages.

  1. Base.:*(::AbstractMatrix, ::AbstractMatrix)
  2. Base.:\(::AbstractMatrix, ::AbstractVecOrMat)
  3. LinearAlgebra.SingularException
  4. LinearAlgebra.PosDefException
  5. LinearAlgebra.ZeroPivotException
  6. LinearAlgebra.dot
  7. LinearAlgebra.dot(::Any, ::Any, ::Any)
  8. LinearAlgebra.cross
  9. LinearAlgebra.factorize
  10. LinearAlgebra.Diagonal
  11. LinearAlgebra.Bidiagonal
  12. LinearAlgebra.SymTridiagonal
  13. LinearAlgebra.Tridiagonal
  14. LinearAlgebra.Symmetric
  15. LinearAlgebra.Hermitian
  16. LinearAlgebra.LowerTriangular
  17. LinearAlgebra.UpperTriangular
  18. LinearAlgebra.UnitLowerTriangular
  19. LinearAlgebra.UnitUpperTriangular
  20. LinearAlgebra.UpperHessenberg
  21. LinearAlgebra.UniformScaling
  22. LinearAlgebra.I
  23. LinearAlgebra.UniformScaling(::Integer)
  24. LinearAlgebra.Factorization
  25. LinearAlgebra.LU
  26. LinearAlgebra.lu
  27. LinearAlgebra.lu!
  28. LinearAlgebra.Cholesky
  29. LinearAlgebra.CholeskyPivoted
  30. LinearAlgebra.cholesky
  31. LinearAlgebra.cholesky!
  32. LinearAlgebra.lowrankupdate
  33. LinearAlgebra.lowrankdowndate
  34. LinearAlgebra.lowrankupdate!
  35. LinearAlgebra.lowrankdowndate!
  36. LinearAlgebra.LDLt
  37. LinearAlgebra.ldlt
  38. LinearAlgebra.ldlt!
  39. LinearAlgebra.QR
  40. LinearAlgebra.QRCompactWY
  41. LinearAlgebra.QRPivoted
  42. LinearAlgebra.qr
  43. LinearAlgebra.qr!
  44. LinearAlgebra.LQ
  45. LinearAlgebra.lq
  46. LinearAlgebra.lq!
  47. LinearAlgebra.BunchKaufman
  48. LinearAlgebra.bunchkaufman
  49. LinearAlgebra.bunchkaufman!
  50. LinearAlgebra.Eigen
  51. LinearAlgebra.GeneralizedEigen
  52. LinearAlgebra.eigvals
  53. LinearAlgebra.eigvals!
  54. LinearAlgebra.eigmax
  55. LinearAlgebra.eigmin
  56. LinearAlgebra.eigvecs
  57. LinearAlgebra.eigen
  58. LinearAlgebra.eigen!
  59. LinearAlgebra.Hessenberg
  60. LinearAlgebra.hessenberg
  61. LinearAlgebra.hessenberg!
  62. LinearAlgebra.Schur
  63. LinearAlgebra.GeneralizedSchur
  64. LinearAlgebra.schur
  65. LinearAlgebra.schur!
  66. LinearAlgebra.ordschur
  67. LinearAlgebra.ordschur!
  68. LinearAlgebra.SVD
  69. LinearAlgebra.GeneralizedSVD
  70. LinearAlgebra.svd
  71. LinearAlgebra.svd!
  72. LinearAlgebra.svdvals
  73. LinearAlgebra.svdvals!
  74. LinearAlgebra.Givens
  75. LinearAlgebra.givens
  76. LinearAlgebra.triu
  77. LinearAlgebra.triu!
  78. LinearAlgebra.tril
  79. LinearAlgebra.tril!
  80. LinearAlgebra.diagind
  81. LinearAlgebra.diag
  82. LinearAlgebra.diagm
  83. LinearAlgebra.rank
  84. LinearAlgebra.norm
  85. LinearAlgebra.opnorm
  86. LinearAlgebra.normalize!
  87. LinearAlgebra.normalize
  88. LinearAlgebra.cond
  89. LinearAlgebra.condskeel
  90. LinearAlgebra.tr
  91. LinearAlgebra.det
  92. LinearAlgebra.logdet
  93. LinearAlgebra.logabsdet
  94. Base.inv(::AbstractMatrix)
  95. LinearAlgebra.pinv
  96. LinearAlgebra.nullspace
  97. Base.kron
  98. Base.kron!
  99. LinearAlgebra.exp(::StridedMatrix{<:LinearAlgebra.BlasFloat})
  100. Base.cis(::AbstractMatrix)
  101. Base.:^(::AbstractMatrix, ::Number)
  102. Base.:^(::Number, ::AbstractMatrix)
  103. LinearAlgebra.log(::StridedMatrix)
  104. LinearAlgebra.sqrt(::StridedMatrix{<:Real})
  105. LinearAlgebra.cos(::StridedMatrix{<:Real})
  106. LinearAlgebra.sin(::StridedMatrix{<:Real})
  107. LinearAlgebra.sincos(::StridedMatrix{<:Real})
  108. LinearAlgebra.tan(::StridedMatrix{<:Real})
  109. LinearAlgebra.sec(::StridedMatrix)
  110. LinearAlgebra.csc(::StridedMatrix)
  111. LinearAlgebra.cot(::StridedMatrix)
  112. LinearAlgebra.cosh(::StridedMatrix)
  113. LinearAlgebra.sinh(::StridedMatrix)
  114. LinearAlgebra.tanh(::StridedMatrix)
  115. LinearAlgebra.sech(::StridedMatrix)
  116. LinearAlgebra.csch(::StridedMatrix)
  117. LinearAlgebra.coth(::StridedMatrix)
  118. LinearAlgebra.acos(::StridedMatrix)
  119. LinearAlgebra.asin(::StridedMatrix)
  120. LinearAlgebra.atan(::StridedMatrix)
  121. LinearAlgebra.asec(::StridedMatrix)
  122. LinearAlgebra.acsc(::StridedMatrix)
  123. LinearAlgebra.acot(::StridedMatrix)
  124. LinearAlgebra.acosh(::StridedMatrix)
  125. LinearAlgebra.asinh(::StridedMatrix)
  126. LinearAlgebra.atanh(::StridedMatrix)
  127. LinearAlgebra.asech(::StridedMatrix)
  128. LinearAlgebra.acsch(::StridedMatrix)
  129. LinearAlgebra.acoth(::StridedMatrix)
  130. LinearAlgebra.lyap
  131. LinearAlgebra.sylvester
  132. LinearAlgebra.issuccess
  133. LinearAlgebra.issymmetric
  134. LinearAlgebra.isposdef
  135. LinearAlgebra.isposdef!
  136. LinearAlgebra.istril
  137. LinearAlgebra.istriu
  138. LinearAlgebra.isdiag
  139. LinearAlgebra.ishermitian
  140. Base.transpose
  141. LinearAlgebra.transpose!
  142. LinearAlgebra.Transpose
  143. Base.adjoint
  144. LinearAlgebra.adjoint!
  145. LinearAlgebra.Adjoint
  146. Base.copy(::Union{Transpose,Adjoint})
  147. LinearAlgebra.stride1
  148. LinearAlgebra.checksquare
  149. LinearAlgebra.peakflops

Low-level matrix operations

In many cases there are in-place versions of matrix operations that allow you to supply a pre-allocated output vector or matrix. This is useful when optimizing critical code in order to avoid the overhead of repeated allocations. These in-place operations are suffixed with ! below (e.g. mul!) according to the usual Julia convention.

  1. LinearAlgebra.mul!
  2. LinearAlgebra.lmul!
  3. LinearAlgebra.rmul!
  4. LinearAlgebra.ldiv!
  5. LinearAlgebra.rdiv!

BLAS functions

In Julia (as in much of scientific computation), dense linear-algebra operations are based on the LAPACK library, which in turn is built on top of basic linear-algebra building-blocks known as the BLAS. There are highly optimized implementations of BLAS available for every computer architecture, and sometimes in high-performance linear algebra routines it is useful to call the BLAS functions directly.

LinearAlgebra.BLAS provides wrappers for some of the BLAS functions. Those BLAS functions that overwrite one of the input arrays have names ending in '!'. Usually, a BLAS function has four methods defined, for Float64, Float32, ComplexF64, and ComplexF32 arrays.

BLAS character arguments

Many BLAS functions accept arguments that determine whether to transpose an argument (trans), which triangle of a matrix to reference (uplo or ul), whether the diagonal of a triangular matrix can be assumed to be all ones (dA) or which side of a matrix multiplication the input argument belongs on (side). The possibilities are:

Multiplication order

side Meaning
'L' The argument goes on the left side of a matrix-matrix operation.
'R' The argument goes on the right side of a matrix-matrix operation.

Triangle referencing

uplo/ul Meaning
'U' Only the upper triangle of the matrix will be used.
'L' Only the lower triangle of the matrix will be used.

Transposition operation

trans/tX Meaning
'N' The input matrix X is not transposed or conjugated.
'T' The input matrix X will be transposed.
'C' The input matrix X will be conjugated and transposed.

Unit diagonal

diag/dX Meaning
'N' The diagonal values of the matrix X will be read.
'U' The diagonal of the matrix X is assumed to be all ones.
  1. LinearAlgebra.BLAS
  2. LinearAlgebra.BLAS.dot
  3. LinearAlgebra.BLAS.dotu
  4. LinearAlgebra.BLAS.dotc
  5. LinearAlgebra.BLAS.blascopy!
  6. LinearAlgebra.BLAS.nrm2
  7. LinearAlgebra.BLAS.asum
  8. LinearAlgebra.axpy!
  9. LinearAlgebra.axpby!
  10. LinearAlgebra.BLAS.scal!
  11. LinearAlgebra.BLAS.scal
  12. LinearAlgebra.BLAS.iamax
  13. LinearAlgebra.BLAS.ger!
  14. LinearAlgebra.BLAS.syr!
  15. LinearAlgebra.BLAS.syrk!
  16. LinearAlgebra.BLAS.syrk
  17. LinearAlgebra.BLAS.syr2k!
  18. LinearAlgebra.BLAS.syr2k
  19. LinearAlgebra.BLAS.her!
  20. LinearAlgebra.BLAS.herk!
  21. LinearAlgebra.BLAS.herk
  22. LinearAlgebra.BLAS.her2k!
  23. LinearAlgebra.BLAS.her2k
  24. LinearAlgebra.BLAS.gbmv!
  25. LinearAlgebra.BLAS.gbmv
  26. LinearAlgebra.BLAS.sbmv!
  27. LinearAlgebra.BLAS.sbmv(::Any, ::Any, ::Any, ::Any, ::Any)
  28. LinearAlgebra.BLAS.sbmv(::Any, ::Any, ::Any, ::Any)
  29. LinearAlgebra.BLAS.gemm!
  30. LinearAlgebra.BLAS.gemm(::Any, ::Any, ::Any, ::Any, ::Any)
  31. LinearAlgebra.BLAS.gemm(::Any, ::Any, ::Any, ::Any)
  32. LinearAlgebra.BLAS.gemv!
  33. LinearAlgebra.BLAS.gemv(::Any, ::Any, ::Any, ::Any)
  34. LinearAlgebra.BLAS.gemv(::Any, ::Any, ::Any)
  35. LinearAlgebra.BLAS.symm!
  36. LinearAlgebra.BLAS.symm(::Any, ::Any, ::Any, ::Any, ::Any)
  37. LinearAlgebra.BLAS.symm(::Any, ::Any, ::Any, ::Any)
  38. LinearAlgebra.BLAS.symv!
  39. LinearAlgebra.BLAS.symv(::Any, ::Any, ::Any, ::Any)
  40. LinearAlgebra.BLAS.symv(::Any, ::Any, ::Any)
  41. LinearAlgebra.BLAS.hemm!
  42. LinearAlgebra.BLAS.hemm(::Any, ::Any, ::Any, ::Any, ::Any)
  43. LinearAlgebra.BLAS.hemm(::Any, ::Any, ::Any, ::Any)
  44. LinearAlgebra.BLAS.hemv!
  45. LinearAlgebra.BLAS.hemv(::Any, ::Any, ::Any, ::Any)
  46. LinearAlgebra.BLAS.hemv(::Any, ::Any, ::Any)
  47. LinearAlgebra.BLAS.trmm!
  48. LinearAlgebra.BLAS.trmm
  49. LinearAlgebra.BLAS.trsm!
  50. LinearAlgebra.BLAS.trsm
  51. LinearAlgebra.BLAS.trmv!
  52. LinearAlgebra.BLAS.trmv
  53. LinearAlgebra.BLAS.trsv!
  54. LinearAlgebra.BLAS.trsv
  55. LinearAlgebra.BLAS.set_num_threads
  56. LinearAlgebra.BLAS.get_num_threads

LAPACK functions

LinearAlgebra.LAPACK provides wrappers for some of the LAPACK functions for linear algebra. Those functions that overwrite one of the input arrays have names ending in '!'.

Usually a function has 4 methods defined, one each for Float64, Float32, ComplexF64 and ComplexF32 arrays.

Note that the LAPACK API provided by Julia can and will change in the future. Since this API is not user-facing, there is no commitment to support/deprecate this specific set of functions in future releases.

  1. LinearAlgebra.LAPACK
  2. LinearAlgebra.LAPACK.gbtrf!
  3. LinearAlgebra.LAPACK.gbtrs!
  4. LinearAlgebra.LAPACK.gebal!
  5. LinearAlgebra.LAPACK.gebak!
  6. LinearAlgebra.LAPACK.gebrd!
  7. LinearAlgebra.LAPACK.gelqf!
  8. LinearAlgebra.LAPACK.geqlf!
  9. LinearAlgebra.LAPACK.geqrf!
  10. LinearAlgebra.LAPACK.geqp3!
  11. LinearAlgebra.LAPACK.gerqf!
  12. LinearAlgebra.LAPACK.geqrt!
  13. LinearAlgebra.LAPACK.geqrt3!
  14. LinearAlgebra.LAPACK.getrf!
  15. LinearAlgebra.LAPACK.tzrzf!
  16. LinearAlgebra.LAPACK.ormrz!
  17. LinearAlgebra.LAPACK.gels!
  18. LinearAlgebra.LAPACK.gesv!
  19. LinearAlgebra.LAPACK.getrs!
  20. LinearAlgebra.LAPACK.getri!
  21. LinearAlgebra.LAPACK.gesvx!
  22. LinearAlgebra.LAPACK.gelsd!
  23. LinearAlgebra.LAPACK.gelsy!
  24. LinearAlgebra.LAPACK.gglse!
  25. LinearAlgebra.LAPACK.geev!
  26. LinearAlgebra.LAPACK.gesdd!
  27. LinearAlgebra.LAPACK.gesvd!
  28. LinearAlgebra.LAPACK.ggsvd!
  29. LinearAlgebra.LAPACK.ggsvd3!
  30. LinearAlgebra.LAPACK.geevx!
  31. LinearAlgebra.LAPACK.ggev!
  32. LinearAlgebra.LAPACK.gtsv!
  33. LinearAlgebra.LAPACK.gttrf!
  34. LinearAlgebra.LAPACK.gttrs!
  35. LinearAlgebra.LAPACK.orglq!
  36. LinearAlgebra.LAPACK.orgqr!
  37. LinearAlgebra.LAPACK.orgql!
  38. LinearAlgebra.LAPACK.orgrq!
  39. LinearAlgebra.LAPACK.ormlq!
  40. LinearAlgebra.LAPACK.ormqr!
  41. LinearAlgebra.LAPACK.ormql!
  42. LinearAlgebra.LAPACK.ormrq!
  43. LinearAlgebra.LAPACK.gemqrt!
  44. LinearAlgebra.LAPACK.posv!
  45. LinearAlgebra.LAPACK.potrf!
  46. LinearAlgebra.LAPACK.potri!
  47. LinearAlgebra.LAPACK.potrs!
  48. LinearAlgebra.LAPACK.pstrf!
  49. LinearAlgebra.LAPACK.ptsv!
  50. LinearAlgebra.LAPACK.pttrf!
  51. LinearAlgebra.LAPACK.pttrs!
  52. LinearAlgebra.LAPACK.trtri!
  53. LinearAlgebra.LAPACK.trtrs!
  54. LinearAlgebra.LAPACK.trcon!
  55. LinearAlgebra.LAPACK.trevc!
  56. LinearAlgebra.LAPACK.trrfs!
  57. LinearAlgebra.LAPACK.stev!
  58. LinearAlgebra.LAPACK.stebz!
  59. LinearAlgebra.LAPACK.stegr!
  60. LinearAlgebra.LAPACK.stein!
  61. LinearAlgebra.LAPACK.syconv!
  62. LinearAlgebra.LAPACK.sysv!
  63. LinearAlgebra.LAPACK.sytrf!
  64. LinearAlgebra.LAPACK.sytri!
  65. LinearAlgebra.LAPACK.sytrs!
  66. LinearAlgebra.LAPACK.hesv!
  67. LinearAlgebra.LAPACK.hetrf!
  68. LinearAlgebra.LAPACK.hetri!
  69. LinearAlgebra.LAPACK.hetrs!
  70. LinearAlgebra.LAPACK.syev!
  71. LinearAlgebra.LAPACK.syevr!
  72. LinearAlgebra.LAPACK.sygvd!
  73. LinearAlgebra.LAPACK.bdsqr!
  74. LinearAlgebra.LAPACK.bdsdc!
  75. LinearAlgebra.LAPACK.gecon!
  76. LinearAlgebra.LAPACK.gehrd!
  77. LinearAlgebra.LAPACK.orghr!
  78. LinearAlgebra.LAPACK.gees!
  79. LinearAlgebra.LAPACK.gges!
  80. LinearAlgebra.LAPACK.trexc!
  81. LinearAlgebra.LAPACK.trsen!
  82. LinearAlgebra.LAPACK.tgsen!
  83. LinearAlgebra.LAPACK.trsyl!
  1. DocTestSetup = nothing