Текст подпрограммы и версий
amz0r_c.zip , amz0d_c.zip , amz0c_c.zip
Тексты тестовых примеров
tamz0r_c.zip , tamz0d_c.zip , tamz0c_c.zip

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

Назначение

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

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

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

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

    int amz0r_c (real *a, integer *n, real *b)

Параметры

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

Версии

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

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

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

 

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

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

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

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

int main(void)
{
    /* Initialized data */
    static float a[9] /* was [3][3] */ = { 1.1f,2.1f,3.1f,2.1f,2.2f,3.2f,
                                           3.1f,3.2f,3.3f };
    /* Local variables */
    extern int amz0r_c(float *, int *, float *);
    static int n, i__;

    n = 3;
    amz0r_c(a, &n, a);

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


Результаты:    b  =  ( 1.1, 2.1, 2.2, 3.1, 3.2, 3.3 )