亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ieeetest.c

?? 根據IEEE 1180-1990寫的測試iDCT精確性。
?? C
字號:
/*
 * ieeetest.c --- test IDCT code against the IEEE Std 1180-1990 spec
 *
 * Note that this does only one pass of the test.
 * Six invocations of ieeetest are needed to complete the entire spec.
 * The shell script "doieee" performs the complete test.
 *
 * Written by Tom Lane (tgl@cs.cmu.edu).
 * Released to public domain 11/22/93.
 */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

#include "dct.h"


/* prototypes */

void usage (char *msg);
long ieeerand (long L, long H);
void dct_init(void);
void ref_fdct(DCTELEM block[8][8]);
void ref_idct(DCTELEM block[8][8]);

/* error stat accumulators -- assume initialized to 0 */

long sumerrs[DCTSIZE2];
long sumsqerrs[DCTSIZE2];
int maxerr[DCTSIZE2];


char * meets (double val, double limit)
{
  return ((fabs(val) <= limit) ? "meets" : "FAILS");
}


int
main(int argc, char **argv)
{
  long minpix, maxpix, sign;
  long curiter, niters;
  int i, j;
  double max, total;
  DCTELEM   block[DCTSIZE2];	/* random source data */
  DCTELEM   refcoefs[DCTSIZE2]; /* coefs from reference FDCT */
  DCTELEM   refout[DCTSIZE2];	/* output from reference IDCT */
  DCTELEM   testout[DCTSIZE2]; /* output from test IDCT */

  /* Argument parsing --- not very bulletproof at all */

  if (argc != 5) usage(NULL);

  minpix = atoi(argv[1]);
  maxpix = atoi(argv[2]);
  sign   = atoi(argv[3]);
  niters = atol(argv[4]);

  dct_init();

  /* Loop once per generated random-data block */

  for (curiter = 0; curiter < niters; curiter++) {

    /* generate a pseudo-random block of data */
    for (i = 0; i < DCTSIZE2; i++)
      block[i] = (DCTELEM) (ieeerand(-minpix,maxpix) * sign);

    /* perform reference FDCT */
    memcpy(refcoefs, block, sizeof(DCTELEM)*DCTSIZE2);
    ref_fdct(refcoefs);
    /* clip */
    for (i = 0; i < DCTSIZE2; i++) {
      if (refcoefs[i] < -2048) refcoefs[i] = -2048;
      else if (refcoefs[i] > 2047) refcoefs[i] = 2047;
    }

    /* perform reference IDCT */
    memcpy(refout, refcoefs, sizeof(DCTELEM)*DCTSIZE2);
    ref_idct(refout);
    /* clip */
    for (i = 0; i < DCTSIZE2; i++) {
      if (refout[i] < -256) refout[i] = -256;
      else if (refout[i] > 255) refout[i] = 255;
    }

    /* perform test IDCT */
    memcpy(testout, refcoefs, sizeof(DCTELEM)*DCTSIZE2);
    j_rev_dct(testout);
    /* clip */
    for (i = 0; i < DCTSIZE2; i++) {
      if (testout[i] < -256) testout[i] = -256;
      else if (testout[i] > 255) testout[i] = 255;
    }

    /* accumulate error stats */
    for (i = 0; i < DCTSIZE2; i++) {
      register int err = testout[i] - refout[i];
      sumerrs[i] += err;
      sumsqerrs[i] += err * err;
      if (err < 0) err = -err;
      if (maxerr[i] < err) maxerr[i] = err;
    }

    if (curiter % 100 == 99) {
      fprintf(stderr, ".");
      fflush(stderr);
    }
  }
  fprintf(stderr, "\n");

  /* print results */
  printf("IEEE test conditions: -L = %ld, +H = %ld, sign = %ld, #iters = %ld\n",
	 minpix, maxpix, sign, niters);

  printf("Peak absolute values of errors:\n");
  for (i = 0, j = 0; i < DCTSIZE2; i++) {
    if (j < maxerr[i]) j = maxerr[i];
    printf("%4d", maxerr[i]);
    if ((i%DCTSIZE) == DCTSIZE-1) printf("\n");
  }
  printf("Worst peak error = %d  (%s spec limit 1)\n\n", j,
	 meets((double) j, 1.0));

  printf("Mean square errors:\n");
  max = total = 0.0;
  for (i = 0; i < DCTSIZE2; i++) {
    double err = (double) sumsqerrs[i]  / ((double) niters);
    total += (double) sumsqerrs[i];
    if (max < err) max = err;
    printf(" %8.4f", err);
    if ((i%DCTSIZE) == DCTSIZE-1) printf("\n");
  }
  printf("Worst pmse = %.6f  (%s spec limit 0.06)\n", max, meets(max, 0.06));
  total /= (double) (64*niters);
  printf("Overall mse = %.6f  (%s spec limit 0.02)\n\n", total,
	 meets(total, 0.02));

  printf("Mean errors:\n");
  max = total = 0.0;
  for (i = 0; i < DCTSIZE2; i++) {
    double err = (double) sumerrs[i]  / ((double) niters);
    total += (double) sumerrs[i];
    printf(" %8.4f", err);
    if (err < 0.0) err = -err;
    if (max < err) max = err;
    if ((i%DCTSIZE) == DCTSIZE-1) printf("\n");
  }
  printf("Worst mean error = %.6f  (%s spec limit 0.015)\n", max,
	 meets(max, 0.015));
  total /= (double) (64*niters);
  printf("Overall mean error = %.6f  (%s spec limit 0.0015)\n\n", total,
	 meets(total, 0.0015));

  /* test for 0 input giving 0 output */
  memset(testout, 0, sizeof(DCTELEM)*DCTSIZE2);
  j_rev_dct(testout);
  for (i = 0, j=0; i < DCTSIZE2; i++) {
    if (testout[i]) {
      printf("Position %d of IDCT(0) = %d (FAILS)\n", i, testout[i]);
      j++;
    }
  }
  printf("%d elements of IDCT(0) were not zero\n\n\n", j);

  exit(0);
  return 0;
}


void usage (char *msg)
{
  if (msg != NULL)
    fprintf(stderr, "\nerror: %s\n", msg);

  fprintf(stderr, "\n");
  fprintf(stderr, "usage: ieeetest minpix maxpix sign niters\n");
  fprintf(stderr, "\n");
  fprintf(stderr, "  minpix = -L value per IEEE spec\n");
  fprintf(stderr, "  maxpix =  H value per IEEE spec\n");
  fprintf(stderr, "  sign = +1 for normal, -1 to run negated test\n");
  fprintf(stderr, "  niters = # iterations (10000 for full test)\n");
  fprintf(stderr, "\n");

  exit(1);
}


/* Pseudo-random generator specified by IEEE 1180 */

long ieeerand (long L, long H)
{
  static long randx = 1;
  static double z = (double) 0x7fffffff;

  long i,j;
  double x;

  randx = (randx * 1103515245) + 12345;
  i = randx & 0x7ffffffe;
  x = ((double) i) / z;
  x *= (L+H+1);
  j = x;
  return j-L;
}


/* Reference double-precision FDCT and IDCT */


/* The cosine lookup table */
/* coslu[a][b] = C(b)/2 * cos[(2a+1)b*pi/16] */
double coslu[8][8];


/* Routine to initialise the cosine lookup table */
void dct_init(void)
{
  int a,b;
  double tmp;

  for(a=0;a<8;a++)
    for(b=0;b<8;b++) {
      tmp = cos((double)((a+a+1)*b) * (3.14159265358979323846 / 16.0));
      if(b==0)
	tmp /= sqrt(2.0);
      coslu[a][b] = tmp * 0.5;
    }
}


void ref_fdct (DCTELEM block[8][8])
{
  int x,y,u,v;
  double tmp, tmp2;
  double res[8][8];

  for (v=0; v<8; v++) {
    for (u=0; u<8; u++) {
      tmp = 0.0;
      for (y=0; y<8; y++) {
	tmp2 = 0.0;
	for (x=0; x<8; x++) {
	  tmp2 += (double) block[y][x] * coslu[x][u];
	}
	tmp += coslu[y][v] * tmp2;
      }
      res[v][u] = tmp;
    }
  }

  for (v=0; v<8; v++) {
    for (u=0; u<8; u++) {
      tmp = res[v][u];
      if (tmp < 0.0) {
	x = - ((int) (0.5 - tmp));
      } else {
	x = (int) (tmp + 0.5);
      }
      block[v][u] = (DCTELEM) x;
    }
  }
}


void ref_idct (DCTELEM block[8][8])
{
  int x,y,u,v;
  double tmp, tmp2;
  double res[8][8];

  for (y=0; y<8; y++) {
    for (x=0; x<8; x++) {
      tmp = 0.0;
      for (v=0; v<8; v++) {
	tmp2 = 0.0;
	for (u=0; u<8; u++) {
	  tmp2 += (double) block[v][u] * coslu[x][u];
	}
	tmp += coslu[y][v] * tmp2;
      }
      res[y][x] = tmp;
    }
  }

  for (v=0; v<8; v++) {
    for (u=0; u<8; u++) {
      tmp = res[v][u];
      if (tmp < 0.0) {
	x = - ((int) (0.5 - tmp));
      } else {
	x = (int) (tmp + 0.5);
      }
      block[v][u] = (DCTELEM) x;
    }
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩影视精彩在线| 91麻豆高清视频| 东方aⅴ免费观看久久av| 99久久er热在这里只有精品15 | 精品国产一区二区国模嫣然| 久久青草国产手机看片福利盒子| 欧美激情中文字幕| 国产成人av福利| 欧美日韩一区二区三区高清 | 亚洲国产激情av| 亚洲国产精品尤物yw在线观看| 日韩国产欧美三级| 色婷婷综合久久久| 国产情人综合久久777777| 午夜日韩在线观看| 91网上在线视频| 欧美极品美女视频| 国产麻豆一精品一av一免费| 91精品国产综合久久精品| 一区二区三区在线免费视频| 国产精品 日产精品 欧美精品| 欧美在线免费观看亚洲| 中文字幕亚洲精品在线观看| 国产精品自拍av| 26uuu亚洲综合色| 免费久久99精品国产| 欧美日韩精品三区| 亚洲精选免费视频| 91亚洲精品久久久蜜桃| 国产欧美久久久精品影院| 国产做a爰片久久毛片| 日韩视频在线一区二区| 美女视频网站久久| 日韩欧美成人激情| 国产一区日韩二区欧美三区| 精品裸体舞一区二区三区| 精品一区二区精品| 精品少妇一区二区三区 | 色综合天天做天天爱| 欧美国产成人精品| 99久久精品情趣| 国产精品国产三级国产普通话99| 精品一区精品二区高清| 精品国产青草久久久久福利| 精品一区二区三区欧美| 久久久久久一二三区| 国产精品91xxx| 亚洲欧美中日韩| xnxx国产精品| 高清久久久久久| 亚洲人亚洲人成电影网站色| 91丝袜高跟美女视频| 亚洲sss视频在线视频| 91精品国产综合久久精品app | 国产在线视频一区二区三区| 精品999在线播放| 国产高清亚洲一区| 日韩毛片视频在线看| 欧美男生操女生| 国产一区二区三区观看| 欧美极品少妇xxxxⅹ高跟鞋 | 99在线精品观看| 一区二区三区四区高清精品免费观看 | 成人av综合在线| 中文字幕综合网| 色88888久久久久久影院按摩| 亚洲欧美日韩中文字幕一区二区三区 | 午夜精品久久久久久久99水蜜桃| 成人性生交大片免费看在线播放| 中文无字幕一区二区三区 | 久久亚洲影视婷婷| 99精品视频一区| 丝袜亚洲另类欧美| 国产精品欧美极品| 在线成人小视频| 成人av在线资源网| 另类专区欧美蜜桃臀第一页| 国产精品大尺度| 欧美刺激午夜性久久久久久久| 韩国女主播成人在线观看| 亚洲激情网站免费观看| 精品国产乱码久久久久久免费 | 91超碰这里只有精品国产| 岛国精品在线观看| 午夜精品爽啪视频| 中文字幕一区二区三区色视频| 日本精品一区二区三区高清| 韩国中文字幕2020精品| 亚洲精选一二三| 国产精品午夜电影| 日韩免费一区二区| 欧美性生活大片视频| 成人黄色av电影| 激情综合五月天| 日本中文字幕一区二区有限公司| 国产片一区二区三区| 欧美一区二区三区视频免费播放| 国产成人av福利| 国内精品伊人久久久久av一坑| 亚洲人123区| 欧美极品美女视频| 2023国产精品| 欧美成人vps| 欧美一级电影网站| 欧美日本乱大交xxxxx| 91美女精品福利| 99久久精品国产网站| 国产综合色在线| 国产一区二区视频在线| 美女视频免费一区| 奇米影视一区二区三区小说| 亚洲国产乱码最新视频| 亚洲一区二区三区视频在线| 中文字幕一区二区三区不卡 | 成人黄色免费短视频| 国产在线精品一区二区三区不卡| 午夜精品久久久久影视| 亚洲一区二区三区免费视频| 一区二区三区美女| 亚洲精品日韩专区silk| 亚洲精选视频免费看| 一区二区三区欧美日韩| 亚洲妇熟xx妇色黄| 日韩专区一卡二卡| 99综合影院在线| 色综合久久久久网| 欧美在线看片a免费观看| 欧亚洲嫩模精品一区三区| 在线观看日产精品| 7777精品伊人久久久大香线蕉的| 在线亚洲一区观看| 欧美日韩国产乱码电影| 日韩欧美在线网站| 2021中文字幕一区亚洲| 亚洲国产精品传媒在线观看| 国产精品国产三级国产aⅴ入口| 国产夜色精品一区二区av| 国产精品久久久久久福利一牛影视| 久久久久久**毛片大全| 1024成人网色www| 亚洲sss视频在线视频| 激情都市一区二区| 91啪亚洲精品| 91精品免费在线| 欧美国产一区视频在线观看| 成人欧美一区二区三区在线播放| 中文字幕一区二区三中文字幕| 亚洲色图制服诱惑| 亚州成人在线电影| 狠狠v欧美v日韩v亚洲ⅴ| 成人妖精视频yjsp地址| 欧美少妇一区二区| 国产婷婷精品av在线| 亚洲理论在线观看| 精品在线你懂的| 91麻豆123| 久久伊人蜜桃av一区二区| 亚洲人成7777| 激情五月播播久久久精品| a在线欧美一区| 日韩精品自拍偷拍| 一区二区在线观看免费| 久久99国内精品| 日本高清视频一区二区| 久久综合色一综合色88| 亚洲午夜羞羞片| www.欧美日韩| 26uuu亚洲| 午夜精品久久久久久久99水蜜桃| 精品在线观看视频| 欧美精品乱人伦久久久久久| 中文字幕一区av| 国产精品自在在线| 7777精品伊人久久久大香线蕉 | 国产精品一级在线| 欧美精品xxxxbbbb| 亚洲欧美一区二区三区久本道91 | 国产精品综合视频| 91麻豆精品国产综合久久久久久 | 久久国产日韩欧美精品| 色av一区二区| 久久精品国产精品亚洲红杏| 91欧美激情一区二区三区成人| 欧美一区二区三区免费大片| 亚洲精选一二三| 91看片淫黄大片一级| 国产喷白浆一区二区三区| 久久成人免费电影| 欧美一区二区三区啪啪| 亚洲成人动漫精品| 欧美视频日韩视频在线观看| 综合激情成人伊人| 91亚洲国产成人精品一区二区三 | 日韩欧美一区二区视频| 亚洲成人精品一区| 欧美日韩国产综合久久| 亚洲国产日韩在线一区模特| 色成年激情久久综合| 一区二区三区在线不卡| 色屁屁一区二区|