Текст подпрограммы и версий
am06r_c.zip , am06d_c.zip , am06c_c.zip
Тексты тестовых примеров
tam06r_c.zip , tam06d_c.zip , tam06c_c.zip

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

Назначение

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

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

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