Текст подпрограммы и версий ( Фортран ) amtgr.zip , amtgd.zip , amtgc.zip |
Тексты тестовых примеров ( Фортран ) tamtgr.zip , tamtgd.zip , tamtgc.zip |
Текст подпрограммы и версий ( Си ) amtgr_c.zip , amtgd_c.zip , amtgc_c.zip |
Тексты тестовых примеров ( Си ) tamtgr_c.zip , tamtgd_c.zip , tamtgc_c.zip |
Текст подпрограммы и версий ( Паскаль ) amtgr_p.zip , amtge_p.zip , amtgc_p.zip |
Тексты тестовых примеров ( Паскаль ) tamtgr_p.zip , tamtge_p.zip , tamtgc_p.zip |
Транспонирование прямоугольной матрицы на месте
Транспонируемая прямоугольная матрица размеров М на N должна быть представлена в оперативной памяти по столбцам в виде вектора А длины МN = М * N. Подпрограмма находит такие циклы перестановок элементов, что в результате в векторе А будет получена транспонированная матрица размеров N на М, расположенная также по столбцам.
Версия подпрограммы АМТGR может быть использована также и для транспонирования прямоугольной матрицы, элементы которой имеют целый тип.
Сате Е.G., Тwigg D.W. Аnalysis of In - Situ Transposition. АCM Тransactions on Mathematical Software, Vol. 3, No. 1, 1977.
SUBROUTINE AMTGR (A, M, N, MOVE, IWRK, IERR)
Параметры
A - | вещественный вектор длины МN = М * N, в котором расположена транспонируемая прямоугольная матрица размеров М на N по столбцам; |
M - | число строк транспонируемой матрицы (тип: целый); |
N - | число столбцов транспонируемой матрицы (тип: целый); |
MOVE - | целый вектор длины IWRК, используемый как рабочий; |
IWRK - | длина вектора МОVЕ (тип: целый); |
IERR - | целая переменная, служащая для сообщения об ошибках в ходе работы подпрограммы; при этом: |
IЕRR= -1 - | если значение IWRК меньше 1; |
IЕRR= -2 - | если М или N меньше 1; |
IЕRR=К>0 - | если К - й цикл перестановок элементов был найден, но не выполнен. |
Версии
AMTGD - | транспонирование прямоугольной матрицы на месте, элементы которой заданы с удвоенной точностью. |
AMTGC - | транспонирование комплексной прямоугольной матрицы на месте. |
Вызываемые подпрограммы
UTAM12 - | подпрограмма выдачи диагностических сообщений. |
Замечания по использованию
1. |
После работы подпрограммы исходная матрица не сохраняется. | |
2. | Для ускорения работы подпрограммы рекомендуется брать значение IWRК равным (М + N) / 2. |
REAL A(3, 4) INTEGER MOVE(2) DATA M /3/, N /4/, IWRK /2/ DATA A /11., 21., 31., 12., 22., 32., 13., 23., 33., 14., 24., 34./ CALL AMTGR (A, M, N, MOVE, IWRK, IERR) Результаты: IERR = 0 A = (11., 12., 13., 14., 21., 22., 23., 24., 31., 32., 33., 34.)