Текст подпрограммы и версий
amz5r_c.zip , amz5d_c.zip
Тексты тестовых примеров
tamz5r_c.zip , tamz5d_c.zip

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

Назначение

Преобразование симметричной ленточной матрицы, заданной в компактной форме, в полную форму представления.

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

Симметричная ленточная матрица  А порядка  N с NС ко - диагоналями, заданная в компактной форме, преобразуется в полную форму представления. Таким образом, amz5r_c выполняет действие, обратное по отношению к подпрограмме amz4r_c.

Использование

    int amz5r_c (real *a, integer *n, integer *nc, real *b)

Параметры

a - вещественный двумерный массив размера n на (nc + 1), в котором задается симметричная ленточная матрица в компактной форме;
n - заданный порядок матрицы (тип: целый);
nc - заданное число ко - диагоналей (тип: целый);
b - вещественный двумерный массив размера n на n, в котором запоминается исходная симметричная ленточная матрица в полной форме представления.

Версии

amz5d_c - преобразование симметричной ленточной матрицы, заданной в компактной форме с удвоенной точностью, в полную форму представления.

Вызываемые подпрограммы: нет.

Замечания по использованию

 

Массив  b может занимать то же место в памяти, что и массив  a (это означает, что первый элемент массива  b может совпадать с первым элементом массива  a).

В подпрограмме amz5d_c параметры  a и  b должны иметь тип double.

Пример использования

int main(void)
{
    /* Initialized data */
    static float a[8] /* was [4][2] */ = { 0.f,2.1f,3.2f,4.3f,1.1f,2.2f,
                                          3.3f,4.4f };
    /* Local variables */
    extern int amz5r_c(float *, int *, int *, float *);
    static float b[16] /* was [4][4] */;
    static int n, nc, i__;

    nc = 1;
    n = 4;
    amz5r_c(a, &n, &nc, b);

    for (i__ = 0; i__ <= 14; i__+= 2) {
         printf("\n  %16.7e %16.7e \n", b[i__], b[i__ + 1]);
    }
    return 0;
} /* main */


Результаты:

       a  =  ( 1.1, 2.1, 0., 0., 2.1, 2.2, 3.2, 0., 0., 3.2, 3.3, 4.3, 0., 0., 
                  4.3, 4.4 )