cholesky_pure_c.c
来自「矩阵运算源码最新版本」· C语言 代码 · 共 126 行
C
126 行
#include <math.h>#include <time.h>#include <stdio.h>const int num_rows=8000;const int num_cols=num_rows;double matrix[num_rows][num_cols];//double matrix[1152][1152];void display(){ int i,j; for ( i=0 ; i<num_rows; i++ ){ for( j=0; j<num_cols; j++ ){ printf("%0.5f ", matrix[i][j]); } printf("\n"); } return; } void fill_matrix(){ double x= 1.0; int i,j; for( i=0;i<num_rows;i++) { for( j=0;j<=i;j++){ if(i!=j){ matrix[i][j]=x; matrix[j][i]=x; x=x+1.0; } } } double rowsum; for( i=0;i< num_rows ;i++){ rowsum=0.0; for( j=0;j< num_cols ;j++){ if(i!=j){ rowsum += matrix[i][j]; } } matrix[i][i]=rowsum*2; } }void verify_matrix(){ int i,j,k; for(i=0; i<num_rows; i++ ){ for(j=0 ; j<num_rows; j++ ){ double element=0; for (k=0; k<num_cols; k++ ) element += matrix[i][k] * matrix[j][k]; printf("%2.5f ",element); } printf("\n"); } return;} int main(){ int i,j,k; time_t starttime,endtime; struct tm *timeinfo; time (&starttime); timeinfo = localtime (&starttime); printf("---PURE C-------order = %d -------------------->Load start: %s", num_rows, asctime (timeinfo)); fill_matrix(); // display(); // printf("=====================================================\n"); time (&starttime); timeinfo = localtime (&starttime); printf("---PURE C-------order = %d -------------------->Start date and time are: %s", num_rows, asctime (timeinfo)); for( k=0; k<num_rows; k++ ){ matrix[k][k] = sqrt( matrix[k][k]); // for( i=k+1; i<num_rows; i++ ) matrix[i][k] /= matrix[k][k]; for( i=k+1; i<num_rows; i++){ matrix[i][k] /= matrix[k][k]; double d = matrix[i][k]; for ( j=k+1; j<=i; j++ ) matrix[i][j] -= d * matrix[j][k]; } } time (&endtime); timeinfo = localtime (&endtime); printf("---PURE C-------order = %d ------------------->End date and time are: %s", num_rows, asctime (timeinfo)); printf("\nTOTAL TIME TAKEN for PURE C for order = %d : %d secs\n\n",num_rows, endtime - starttime); // printf("=====================================================\n"); /* for( i=0 ; i<num_rows; i++ ){ for ( j=i+1; j<num_cols; j++ ) matrix[i][j]=0; }*/ // display(); // printf("=====================================================\n"); // verify_matrix(); return 0; }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?