FactorizationLQShortWide

Вычисляет блочное LQ-разложение низкой широкой матрицы размера m на n (m<n): A = L * Q. Функция LAPACK LASWLQ.

Вычисления для типа matrix<double>

bool  matrix::FactorizationLQShortWide(
   bool            reduced,      // режим вычислений: укороченный или полный
   long&           mb,           // размер блока строк для блочного LQ-разложения
   long&           nb,           // размер блока столбцов для блочного LQ-разложения
   matrix&         L,            // нижнетреугольная матрица L
   matrix&         Q             // ортогональная матрица Q
   );

Вычисления для типа matrix<float>

bool  matrix::FactorizationLQShortWide(
   bool            reduced,      // режим вычислений: укороченный или полный
   long&           mb,           // размер блока строк для блочного LQ-разложения
   long&           nb,           // размер блока столбцов для блочного LQ-разложения
   matrixf&        L,            // нижнетреугольная матрица L
   matrixf&        Q             // ортогональная матрица Q
   );

Вычисления для типа matrix<complex>

bool  matrix::FactorizationLQShortWide(
   bool            reduced,      // режим вычислений: укороченный или полный
   long&           mb,           // размер блока строк для блочного LQ-разложения
   long&           nb,           // размер блока столбцов для блочного LQ-разложения
   matrixc&        L,            // нижнетреугольная матрица L
   matrixc&                    // унитарная матрица Q
   );

Вычисления для типа matrix<complexf>

bool  matrix::FactorizationLQShortWide(
   bool            reduced,      // режим вычислений: укороченный или полный
   long&           mb,           // размер блока строк для блочного LQ-разложения
   long&           nb,           // размер блока столбцов для блочного LQ-разложения
   matrixcf&       L,            // нижнетреугольная матрица L
   matrixcf&                   // унитарная матрица Q
   );

Параметры

reduced

[in]  Режим вычислений. Если параметр reduced установлен в значение true, матрицы L и Q вычисляются с укороченными размерностями (M,K), (K,N). Если параметр reduced установлен в значение false, выполняется полный расчет матриц L и Q с размерностями (M,N), (N,N).

mb

[in,out] Размер блока строк для блочного LQ-разложения. M >= MB >= 1. Если в параметре передано значение 0, оптимальное значение MB будет вычислено функцией ILAENV и возвращено.

nb

[in,out] Размер блока столбцов для блочного LQ-разложения. NB > M. Если в параметре передано значение 0, оптимальное значение NB будет вычислено функцией ILAENV и возвращено.

L

[out]  Нижнетреугольная матрица L.

Q

[out]  Ортогональная или унитарная матрица Q.

 

Возвращаемое значение

Возвращает true в случае успеха, иначе false в случае ошибки.

Примечание

Если reduced = true, матрица L имеет размер m на m, матрица Q — m на n.

Если reduced = false, матрица L имеет размер m на n, матрица Q — n на n.

Несмотря на то, что LAPACK-функция ILAENV рассчитывает оптимальные значения MB и NB, можно самостоятельно подобрать эти параметры с учётом размера кеша процессора. Это даст значительный прирост производительности. Хорошее правило:

MB = min(M, 32 или 64 или 128)

NB = max(2*M, cache_bytes / (sizeof(type)*M))

NB = max(NB, M + MB)

NB = min(NB, N-1)