|
Текст подпрограммы и версий amz4r_c.zip , amz4d_c.zip |
Тексты тестовых примеров tamz4r_c.zip , tamz4d_c.zip |
Преобразование полной симметричной ленточной матрицы в компактную форму представления.
amz4r_c преобразует полную симметричную ленточную матрицу А порядка N с NС ко - диагоналями в компактную форму представления. Тем самым, минимизируется расход памяти, требуемой на хранение симметричной ленточной матрицы.
int amz4r_c (real *a, integer *n, integer *nc, real *b)
Параметры
| a - | вещественный двумерный массив размера n на n, в котором задается симметричная ленточная матрица в полной форме; |
| n - | заданный порядок матрицы (тип: целый); |
| nc - | заданное число ко - диагоналей (тип: целый); |
| b - | вещественный двумерный массив размера n на (nc + 1), в котором запоминается исходная симметричная ленточная матрица в компактной форме представления. |
Версии
| amz4d_c - | преобразование полной симметричной ленточной матрицы, заданной с удвоенной точностью, в компактную форму представления. |
Вызываемые подпрограммы: нет.
Замечания по использованию
|
Массив b может занимать то же место в памяти, что и массив a (это означает, что первый элемент массива b может совпадать с первым элементом массива a). В подпрограмме amz4d_c параметры a и b должны иметь тип double. |
int main(void)
{
/* Initialized data */
static float a[16] /* was [4][4] */ = { 1.1f,2.1f,0.f,0.f,1.2f,2.2f,3.2f,
0.f,0.f,2.3f,3.3f,4.3f,0.f,0.f,3.4f,4.4f };
/* Local variables */
extern int amz4r_c(float *, int *, int *, float *);
static float b[8] /* was [4][2] */;
static int n, nc, i__;
nc = 1;
n = 4;
amz4r_c(a, &n, &nc, b);
for (i__ = 0; i__ <= 6; i__+=2) {
printf("\n %16.7e %16.7e \n", b[i__], b[i__ + 1]);
}
return 0;
} /* main */
Результаты: b = ( 0., 2.1, 3.2, 4.3, 1.1, 2.2, 3.3, 4.4 )