Files
csapp2025/perflab/matrix/rowcol.c
2025-04-12 11:37:07 +08:00

69 lines
1.8 KiB
C

/**************************************************************************
??/???????????????????????????????
1. ???????????????????????????????
2. ??????????????????????
3. ??rc_fun_rec rc_fun_tab??????????????????
???????????????????????????????????????????
***************************************************************************/
/*
????201209054233
??????????????
*/
#include "rowcol.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
/* ????????????????? */
/* ???????????????????????????????????????????????
??????????2?????????????????
*/
void c_sum(matrix_t M, vector_t rowsum, vector_t colsum) {
int i, j;
for (j = 0; j < N; j++) {
colsum[j] = 0;
for (i = 0; i < N; i++)
colsum[j] += M[i][j];
}
}
/* ???????????????????? */
/* ??????????????????????? */
void rc_sum(matrix_t M, vector_t rowsum, vector_t colsum) {
int i, j;
for (i = 0; i < N; i++) {
rowsum[i] = colsum[i] = 0;
for (j = 0; j < N; j++) {
rowsum[i] += M[i][j];
colsum[i] += M[j][i];
}
}
}
/*
????????????????????????????????????????, COL/ROWCOL, "?????????"??
COL??????????????????????
ROWCOL???????????????????????
?????????????????????????????
????
{my_c_sum1, "?????????????????"},
{my_rc_sum2, "??????????????????"},
*/
rc_fun_rec rc_fun_tab[] = {
/* ???????????????????????????????? */
{c_sum, COL, "Best column sum"},
/* ?????????????????????????????????? */
{rc_sum, ROWCOL, "Best row and column sum"},
{c_sum, COL, "Column sum, reference implementation"},
{rc_sum, ROWCOL, "Row and column sum, reference implementation"},
/* ??????????????????????????????????????? */
{NULL, ROWCOL, NULL}};