Текст подпрограммы и версий
amm5r_c.zip , amm5d_c.zip
Тексты тестовых примеров
tamm5r_c.zip , tamm5d_c.zip

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

Назначение

Умножение симметричных матриц, заданных в компактной форме.

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

amm5r_c вычисляет произведение симметричных матриц А и B порядка N, заданных в компактной форме. Результатом этого произведения является квадратная матрица C порядка N.

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

    int amm5r_c (real *a, real *b, integer *n, real *c)

Параметры

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

Версии

amm5d_c - умножение с повышенной точностью симметричных матриц, заданных в компактной форме.

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

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

  В подпрограмме amm5r_c параметры a, b и c должны иметь тип double.

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

int main(void)
{
    /* Initialized data */
    static float a[15] = { 1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,
                           1.f,1.f,1.f };
    static float b[15] = { 2.f,2.f,2.f,2.f,2.f,2.f,2.f,2.f,2.f,2.f,2.f,2.f,
                           2.f,2.f,2.f };
    /* Local variables */
    extern int amm5r_c(float *, float *, int *, float *);
    static float c__[25] /* was [5][5] */;
    static int n, i__;

    n = 5;
    amm5r_c(a, b, &n, c__);

    for (i__ = 1; i__ <= 25; ++i__) {
         printf("\n  %20.12e \n", c__[i__-1]);
    }
    return 0;
} /* main */


Результаты:

                    |  10   10   10   10   10  |
                    |  10   10   10   10   10  |
      c__  =    |  10   10   10   10   10  |
                    |  10   10   10   10   10  |
                    |  10   10   10   10   10  |