- FactorizationQR
- FactorizationQRNonNeg
- FactorizationQRPivot
- FactorizationQRTallSkinny
- FactorizationLQ
- FactorizationLQShortWide
- FactorizationQL
- FactorizationRQ
- FactorizationRZ
- FactorizationQR2
- FactorizationRQ2
FactorizationQRTallSkinny
Вычисляет блочное QR-разложение высокой узкой матрицы размера m на n (m>n): A = Q * R. Функция LAPACK LATSQR.
Вычисления для типа matrix<double>
bool matrix::FactorizationQRTallSkinny(
|
Вычисления для типа matrix<float>
bool matrix::FactorizationQRTallSkinny(
|
Вычисления для типа matrix<complex>
bool matrix::FactorizationQRTallSkinny(
|
Вычисления для типа matrix<complexf>
bool matrix::FactorizationQRTallSkinny(
|
Параметры
mb
[in,out] Размер блока строк для блочного QR-разложения. MB > N. Если в параметре передано значение 0, оптимальное значение MB будет вычислено функцией ILAENV и возвращено.
nb
[in,out] Размер блока столбцов для блочного QR-разложения. N >= NB >= 1. Если в параметре передано значение 0, оптимальное значение NB будет вычислено функцией ILAENV и возвращено.
Q
[out] Ортогональная или унитарная матрица Q.
R
[out] Верхнетреугольная матрица R.
Возвращаемое значение
Возвращает true в случае успеха, иначе false в случае ошибки.
Примечание
Несмотря на то, что LAPACK-функция ILAENV рассчитывает оптимальные значения MB и NB, можно самостоятельно подобрать эти параметры с учётом размера кеша процессора. Это даст значительный прирост производительности. Хорошее правило:
NB = min(N, 32 или 64)
MB = max(2*N, cache_target_rows)
MB = min(M-1, MB)
где cache_target_rows выбирается так, чтобы блок MB x N помещался в кеш L2/L3: MB ≈ cache_bytes / (8 * N) для типа double.