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