⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shrtdctt.c

📁 2维fft程序
💻 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 + -