|
Текст подпрограммы и версий am16r_c.zip , am16d_c.zip , am16c_c.zip |
Тексты тестовых примеров tam16r_c.zip , tam16d_c.zip , tam16c_c.zip |
Умножение симметричной матрицы, заданной в компактной форме, на вектор.
Для симметричной матрицы А размера N * N, заданной в компактной форме, и вектора B длины N вычисляется вектор C длины N, C = A B .
int am16r_c (real *a, real *b, real *c, integer *n)
Параметры
| a - | вещественный вектор длины n * (n + 1)/2, содержащий симметричную матрицу A, заданную в компактной форме; |
| b - | вещественный одномерный массив длины n, содержащий заданный вектор - сомножитель; |
| c - | вещественный вектор длины n, в котором запоминается результат произведения; |
| n - | заданный порядок исходной матрицы A (тип: целый). |
Версии
| am16d_c - | умножение с повышенной точностью вещественной симметричной матрицы, заданной в компактной форме, на вектор; |
| am16c_c - | умножение эрмитовой матрицы, заданной в компактной форме, на комплексный вектор. |
Вызываемые подпрограммы: нет.
Замечания по использованию
| 1. |
В подпрограмме am16d_c пapaмeтpы a, b, c имeют тип double. | |
| 2. | В подпрограмме am16c_c пapaмeтpы a, b, c имeют тип complex. |
int main(void)
{
/* Local variables */
extern int am16r_c(float *, float *, float *, int *);
static float a[10], b[4], c__[4];
static int k, n, i__;
static float r__;
n = 4;
for (k = 1; k <= 10; ++k) {
r__ = (float) k;
/* L1: */
a[k - 1] = r__;
}
for (k = 1; k <= 4; ++k) {
r__ = 5.f - k;
/* L2: */
b[k - 1] = r__;
}
am16r_c(a, b, c__, &n);
for (i__ = 1; i__ <= 4; ++i__) {
printf("\n %16.7e \n", c__[i__-1]);
}
return 0;
} /* main */
Результат: c__ = ( 25., 35., 52., 80. )