|
Текст подпрограммы и версий am05r_c.zip , am05d_c.zip , am05c_c.zip |
Тексты тестовых примеров tam05r_c.zip , tam05d_c.zip , tam06c_c.zip |
Умножение прямоугольной матрицы на вектор.
Вычисляется произведение С = А В прямоугольной матрицы А размера N * М и вектора B длины М. Результатом этого произведения является вектор длины N.
int am05r_c (real *a, real *b, real *c, integer *n, integer *m)
Параметры
| a - | двумерный массив размера n * m, в котором задается исходная матрица A (тип: вещественный); |
| b - | одномерный массив длины m, в котором задается исходный вектор B - правый сомножитель произведения (тип: вещественный); |
| c - | одномерный массив длины n, в котором запоминается результат произведения (тип: вещественный); |
| n, m - | число строк и столбцов матрицы A (тип: целый). |
Версии
| am05d_c - | умножение прямоугольной матрицы на вектор с повышенной точностью; |
| am05c_c - | умножение комплексной прямоугольной матрицы на комплексный вектор; |
Вызываемые подпрограммы: нет.
Замечания по использованию
| 1. |
В подпрограмме am05d_c пapaмeтpы a, b, c имeют тип double. | |
| 2. | В подпрограмме am05c_c пapaмeтpы a, b, c имeют тип complex. |
int main(void)
{
/* Initialized data */
static float a[12] /* was [4][3] */ = { 1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,
9.f,10.f,11.f,12.f };
static float b[3] = { 1.f,0.f,1.f };
/* Local variables */
extern int am05r_c(float *, float *, float *, int *, int *);
static float c__[4];
static int m, n, i__;
n = 4;
m = 3;
am05r_c(a, b, c__, &n, &m);
for (i__ = 1; i__ <= 4; ++i__) {
printf("\n %10.4f \n", c__[i__-1]);
}
return 0;
} /* main */
Результат: c__ = ( 10., 12., 14., 16. )