Текст подпрограммы и версий
am11r_c.zip , am11d_c.zip , am11c_c.zip
Тексты тестовых примеров
tam11r_c.zip , tam11d_c.zip , tam11c_c.zip

Подпрограмма:  am11r_c

Назначение

Умножение квадратных матриц.

Математическое описание

Вычисляется произведение квадратных матриц  А и  B размера N * N. Результат произведения - квадратная матрица размера N * N, запоминающаяся на месте матрицы  В.

Использование

    int am11r_c (real *a, real *b, real *s, integer *n)

Параметры

a, b - двумерные массивы размера n * n, в которых задаются, соответственно левая и правая матрицы произведения; на выходе из подпрограммы вычисленное произведение запоминается на месте матрицы  B (тип: вещественный);
s - рабочий вектор длины  n (тип: вещественный);
n - заданное число строк и столбцов матриц  A и  B (тип: целый).

Версии

am11d_c - умножение кавдратных матриц с повышенной точностью;
am11c_c - умножение комплексных квадратных матриц;

Вызываемые подпрограммы: нет.

Замечания по использованию

  1. 

В подпрограмме am11d_c пapaмeтpы a, b и s имeют тип double.

  2.  В подпрограмме am11c_c пapaмeтpы a, b и s имeют тип complex.

Пример использования

int main(void)
{
    /* Initialized data */
    static float a[16] /* was [4][4] */ = { 1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,
                                  9.f,10.f,11.f,12.f,13.f,14.f,15.f,16.f };
    static float b[16] /* was [4][4] */ = { 1.f,0.f,1.f,0.f,0.f,1.f,0.f,1.f,
                                            1.f,1.f,0.f,0.f,1.f,0.f,0.f,1.f };
    /* Local variables */
    extern int am11r_c(float *, float *, float *, int *);
    static int n, i__;
    static float s[4];

    n = 4;
    am11r_c(a, b, s, &n);

    for (i__ = 1; i__ <= 16; ++i__) {
         printf("\n  %10.4f \n", b[i__-1]);
    }
    return 0;
} /* main */


Результат:

                  |  10.   18.    6.   14.  |
                  |  12.   20.    8.   16.  |
        b  =   |  14.   22.   10.   18.  |
                  |  16.   24.   12.   20.  |