📄 shrtdctt.c
字号:
/* test of shrtdct.c */#include <math.h>#include <stdio.h>#define MAX(x,y) ((x) > (y) ? (x) : (y))/* random number generator, 0 <= RND < 1 */#define RND(p) ((*(p) = (*(p) * 7141 + 54773) % 259200) * (1.0 / 259200))#define NMAX 16int main(){ void ddct8x8s(int isgn, double **a); void ddct16x16s(int isgn, double **a); void putdata2d(int n1, int n2, double **a); double errorcheck2d(int n1, int n2, double scale, double **a); double err; int i; double aarr[NMAX][NMAX], *a[NMAX], barr[NMAX][NMAX], *b[NMAX]; for (i = 0; i < NMAX; i++) a[i] = aarr[i]; for (i = 0; i < NMAX; i++) b[i] = barr[i]; /* check of 8x8 DCT */ putdata2d(8, 8, a); ddct8x8s(-1, a); ddct8x8s(1, a); err = errorcheck2d(8, 8, 1.0, a); printf("ddct8x8s err= %g\n", err); /* check of 16x16 DCT */ putdata2d(16, 16, a); ddct16x16s(-1, a); ddct16x16s(1, a); err = errorcheck2d(16, 16, 1.0, a); printf("ddct16x16s err= %g\n", err); return 0;}void putdata2d(int n1, int n2, double **a){ int j1, j2, seed = 0; for (j1 = 0; j1 <= n1 - 1; j1++) { for (j2 = 0; j2 <= n2 - 1; j2++) { a[j1][j2] = RND(&seed); } }}double errorcheck2d(int n1, int n2, double scale, double **a){ int j1, j2, seed = 0; double err = 0, e; for (j1 = 0; j1 <= n1 - 1; j1++) { for (j2 = 0; j2 <= n2 - 1; j2++) { e = RND(&seed) - a[j1][j2] * scale; err = MAX(err, fabs(e)); } } return err;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -