Текст подпрограммы и версий 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 )