Текст подпрограммы и версий amz5r_c.zip , amz5d_c.zip |
Тексты тестовых примеров tamz5r_c.zip , tamz5d_c.zip |
Преобразование симметричной ленточной матрицы, заданной в компактной форме, в полную форму представления.
Симметричная ленточная матрица А порядка 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 )