Текст подпрограммы и версий 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. )