|
Текст подпрограммы и версий amm5r_c.zip , amm5d_c.zip |
Тексты тестовых примеров tamm5r_c.zip , tamm5d_c.zip |
Умножение симметричных матриц, заданных в компактной форме.
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 |