Текст подпрограммы и версий
am05r_c.zip , am05d_c.zip , am05c_c.zip
Тексты тестовых примеров
tam05r_c.zip , tam05d_c.zip , tam06c_c.zip

Подпрограмма:  am05r_c

Назначение

Умножение прямоугольной матрицы на вектор.

Математическое описание

Вычисляется произведение С = А В прямоугольной матрицы  А размера 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. )