Текст подпрограммы и версий am11r_c.zip , am11d_c.zip , am11c_c.zip |
Тексты тестовых примеров tam11r_c.zip , tam11d_c.zip , tam11c_c.zip |
Умножение квадратных матриц.
Вычисляется произведение квадратных матриц А и B размера N * N. Результат произведения - квадратная матрица размера N * N, запоминающаяся на месте матрицы В.
int am11r_c (real *a, real *b, real *s, integer *n)
Параметры
a, b - | двумерные массивы размера n * n, в которых задаются, соответственно левая и правая матрицы произведения; на выходе из подпрограммы вычисленное произведение запоминается на месте матрицы B (тип: вещественный); |
s - | рабочий вектор длины n (тип: вещественный); |
n - | заданное число строк и столбцов матриц A и B (тип: целый). |
Версии
am11d_c - | умножение кавдратных матриц с повышенной точностью; |
am11c_c - | умножение комплексных квадратных матриц; |
Вызываемые подпрограммы: нет.
Замечания по использованию
1. |
В подпрограмме am11d_c пapaмeтpы a, b и s имeют тип double. | |
2. | В подпрограмме am11c_c пapaмeтpы a, b и s имeют тип complex. |
int main(void) { /* Initialized data */ static float a[16] /* was [4][4] */ = { 1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f, 9.f,10.f,11.f,12.f,13.f,14.f,15.f,16.f }; static float b[16] /* was [4][4] */ = { 1.f,0.f,1.f,0.f,0.f,1.f,0.f,1.f, 1.f,1.f,0.f,0.f,1.f,0.f,0.f,1.f }; /* Local variables */ extern int am11r_c(float *, float *, float *, int *); static int n, i__; static float s[4]; n = 4; am11r_c(a, b, s, &n); for (i__ = 1; i__ <= 16; ++i__) { printf("\n %10.4f \n", b[i__-1]); } return 0; } /* main */ Результат: | 10. 18. 6. 14. | | 12. 20. 8. 16. | b = | 14. 22. 10. 18. | | 16. 24. 12. 20. |