|
Текст подпрограммы и версий amz0r_c.zip , amz0d_c.zip , amz0c_c.zip |
Тексты тестовых примеров tamz0r_c.zip , tamz0d_c.zip , tamz0c_c.zip |
Преобразование полной симметричной матрицы в компактную форму представления.
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 )