|
Текст подпрограммы и версий am06r_c.zip , am06d_c.zip , am06c_c.zip |
Тексты тестовых примеров tam06r_c.zip , tam06d_c.zip , tam06c_c.zip |
Умножение вектора на прямоугольную матрицу.
Вычисляется призведение С = А В вектора А длины N и прямоугольной матрицы B размера N * М. Результатом этого произведения является вектор длины М.
int am06r_c (real *a, real *b, real *c, integer *n,
integer *m)
Параметры
| a - | одномерный массив длины n, в котором задается исходный вектор A (тип: вещественный); |
| b - | двумерный массив размера n * m, в котором задается исходная матрица B (тип: вещественный); |
| c - | одномерный массив длины m, в котором запоминается результат произведения (тип: вещественный); |
| n, m - | число строк и столбцов матрицы B (тип: целый). |
Версии
| am06d_c - | умножение вектора на прямоугольную матрицу с повышенной точностью; |
| am06c_c - | умножение комплексного вектора на комплексную прямоугольную матрицу; |
Вызываемые подпрограммы: нет.
Замечания по использованию
| 1. |
В подпрограмме am06d_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[3] = { 1.f,0.f,1.f };
static float b[12] /* was [3][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 };
/* Local variables */
extern int am06r_c(float *, float *, float *, int *, int *);
static float c__[4];
static int m, n, i__;
n = 3;
m = 4;
am06r_c(a, b, c__, &n, &m);
for (i__ = 1; i__ <= 4; ++i__) {
printf("\n %12.4f \n", c__[i__-1]);
}
return 0;
} /* main */
Результат: c__ = ( 4., 10., 16., 22. )