BLAS Level 3

Раздел "BLAS Level 3" в MQL5 содержит набор высокопроизводительных функций для выполнения матрично-матричных операций — основного класса задач линейной алгебры, оптимизированных с использованием стандартов BLAS (Basic Linear Algebra Subprograms) уровня 3.

Функции этого раздела реализуют различные типы умножения и обновления матриц, включая общие, симметричные, эрмитовы и треугольные случаи. Они поддерживают вычисления с типами float, double, complex, complexf и обеспечивают удобный объектно-ориентированный интерфейс для классов matrix, matrixf, matrixc, matrixcf.

Эти методы полностью соответствуют стандартным подпрограммам BLAS L3 (GEMM, SYMM, HEMM, SYRK, HERK, SYR2K, HER2K, TRMM), обеспечивая эффективное использование современных процессорных инструкций и многопоточности. Таким образом, раздел BLAS Level 3 предназначен для решения задач линейной алгебры, требующих высокоточной и быстрой работы с большими матрицами, и представляет собой основу для реализации численных алгоритмов и анализа данных в MQL5.

Function

Action

BlasL3GeMM

Computes a matrix-matrix product with general matrices. C = alpha * op(A) * op(B) + beta * C, where C is m-by-n matrix, op(A) is m-by-k matrix, op(B) is k-by-n matrix. BLAS function GEMM.

BlasL3SyMM

Computes a matrix-matrix product where the input matrix A is symmetric. C = alpha*A*B + beta*C  or C = alpha*B*A + beta*C, where A is a symmetric matrix of m-by-m size if side='L', or n-by-n size otherwise; B and C are m-by-n matrices. BLAS function SYMM.

BlasL3HeMM

Computes a matrix-matrix product where the input matrix A is Hermitian. C = alpha*A*B + beta*C  or C = alpha*B*A + beta*C, where A is a Hermitian matrix of m-by-m size if side='L', or n-by-n size otherwise; B and C are m-by-n matrices. BLAS function HEMM.

BlasL3TrMM

Computes a matrix-matrix product where the input matrix A is triangular. C = alpha*op(A)  or C = alpha*B*op(A), where A is a triangular matrix of m-by-m size if side='L', or n-by-n size otherwise; B and C are m-by-n matrices. BLAS function TRMM.

BlasL3SyRK

Performs a symmetric rank-k update. CU = alpha * A * A**T + beta*C  or CU = alpha * A**T * A + beta*C. BLAS function SYRK.

BlasL3HeRK

Performs a Hermitian rank-k update. CU = alpha * A * A**H + beta*C  or CU = alpha * A**H * A + beta*C. BLAS function HERK.

BlasL3SyR2K

Performs a symmetric rank-2k update. CU = alpha * A * B**T + alpha * B * A**T + beta*C  or CU = alpha * A**T * B + alpha * B**T * A + beta*C. BLAS function SYR2K.

BlasL3HeR2K

Performs a Hermitian rank-2k update. CU = alpha * A * B**H + alpha * B * A**H + beta*C  or CU = alpha * A**H * B + alpha * B**H * A + beta*C. BLAS function HER2K.