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

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

?? rank.c

?? 隨機數算法
?? C
字號:
/*	Compute rank of square matrix from raw bit data.	Enter with source pointer into data, dimension of matrix and endianness.	Returns with rank of matrix and source pointer updated to next batch of	bits.  Returns -1 if requested dimension is larger than MAXRANK.	Definition of rank: "The maximum number of linearly independent row or	column vectors.  Theorem 14: For any matrix A, the determinant rank, 	row rank and column rank are equal." pg 511, "Advanced Engineering	Mathmatics", C. Ray Wylie, 1975	Author = Mike Rosing	 Date = Nov. 2, 2001*/#include "randtest.h"#define dimchar	(MAXRANK/8)int binrank( SRCPTR  *src, int dim, int endian){	int row, rankval, j, k, i, dumdim, mscount;	unsigned char matrix[MAXRANK][dimchar+1];	unsigned char bitmask, save;	int ji, ki, ii, rowi;	unsigned char bitmaski;		if( dim > MAXRANK) return (-1);/*  clear out local storage  */	for(row=0; row<MAXRANK; row++)	  for(j=0; j<dimchar; j++)	    matrix[row][j] = 0;/*  copy data from source to matrix format.	this makes bit twiddling easier.*//*	for(i=0; i<=(dim*dim)/8; i++)	{	  printf("%x ",src->byteptr[i]);	  if (!((i&3) ^ 3)) printf("\n");	} 	printf("\n");//	printf("starting address = %x\n", src->byteptr);*/	for( row=0; row<dim; row++) getbits( src, matrix[row], endian, dim);	mscount = dim/8;	if( dim&7) mscount++;/*  print out matrix data in ascii format for human eye to deal with */	dumdim = dim - 1;/*	for(row=0; row<dim; row++)	{	  bitmask = 1 << ((dumdim) & 7);	  k = 0;	  for(j=0; j<dim; j++) 	  {	    if( !endian)  k = (dumdim-j)/8;//	    printf("j=%d k=%d bitmask= %x\n", j,k, bitmask);	    i = bitmask & matrix[row][k] ? 1 : 0;	    printf("%x ", i);	    bitmask >>= 1;	    if (!bitmask)	    { 	      bitmask = 0x80;	      if(endian) k++;	    }	  }	  printf("\n");//	  for(i=0; i<=dim/8; i++) printf("%x ", matrix[row][i] );//	  printf("\n");	}*//*  clear out matrix.  Number of 1's on diagonal tells us rank	(same as the number of independent vectors in the matrix         but we aren't solving anything, just counting)  */		for( row=0; row<dim; row++)	{	/*  set up byte and bit to be on diagonal  */	        dumdim = dim - 1 - row;		bitmask = 1 << ( dumdim & 7);		j = dumdim/8;		if( endian)		{	          if( dim<8 ) j=0;		  else if( row < (dim&7)) j = 0;		  else 		  {		    j = (row - (dim&7))/8 ;		    if( dim&7) j++;		  }		}/*  look for bit set on diagonal.  Swap rows if found *///		printf("looking for diagonal, j = %d bitmask = %x\n", j, bitmask);		if( !(bitmask & matrix[row][j]))		{			for( k=row+1; k<dim; k++)			{				if( bitmask & matrix[k][j])				{//				  printf("swapping row %d with %d\n", row, k);					for( i=0; i<=dimchar; i++)					{						save = matrix[k][i];						matrix[k][i] = matrix[row][i];						matrix[row][i] = save;					}					break;				}			}		}/*  double check.  If found, clear bits below this row	otherwise skip to next row (column is empty)*/		if( bitmask & matrix[row][j])		{			for( k=row+1; k<dim; k++)			{			  if( bitmask & matrix[k][j])			    {			      for( i=0; i<=dim/8; i++)				matrix[k][i] ^= matrix[row][i];			    }			}		}	}// end of row loop/*printf("\n");	for(row=0; row<dim; row++)	{	  bitmask = 1 << ((dim-1) & 7);	  k = 0;	  for(j=0; j<dim; j++) 	  {	    if( !endian)  k = (dim-1-j)/8;	    i =  bitmask & matrix[row][k] ? 1 : 0;	    printf("%x ",i);	    bitmask >>= 1;	    if (!bitmask)	    {	      bitmask = 0x80;	      if(endian) k++;	    }	  }	  printf("\n");	}*//*  next do back solve portion    The main thing we need to do is remove rows that are     duplicates.*/	for( row=dim-1; row>=0; row--)	{	/*  set up byte and bit to be on diagonal  */	        dumdim = dim - 1 - row;		bitmask = 1 << ( dumdim & 7);		j = dumdim/8;		if( endian)		{	          if( dim<8 ) j=0;		  else if( row < (dim&7)) j = 0;		  else 		  {		    j = (row - (dim&7))/8 ;		    if( dim&7) j++;		  }		}/*  look for bit set on diagonal.  Swap rows if found */		if( !(bitmask & matrix[row][j]))		{			for( k=row-1; k>=0; k--)			{				if( bitmask & matrix[k][j])				{					for( i=0; i<=dimchar; i++)					{						save = matrix[k][i];						matrix[k][i] = matrix[row][i];						matrix[row][i] = save;					}					break;				}			}		}/*  double check.  If found, clear bits above this row	otherwise skip to next row (column is empty)*/		if( bitmask & matrix[row][j])		{			for( k=row-1; k>=0; k--)			{			  if( bitmask & matrix[k][j])			    {			      for( i=0; i<=dim/8; i++)				matrix[k][i] ^= matrix[row][i];			    }			}		}	}// end of row loop/*  count the number of non zero rows  */	rankval = 0;	for( row=0; row<dim; row++)	{	  for (j=0; j<mscount; j++)	  { 	    if (matrix[row][j])	    {	      rankval++;	      break;	    }	  }	}//        printf("\n");/*  print out matrix data in ascii format for human eye to deal with *//*	for(row=0; row<dim; row++)	{	  bitmask = 1 << ((dim-1) & 7);	  k = 0;	  for(j=0; j<dim; j++) 	  {	    if( !endian)  k = (dim-1-j)/8;	    i =  bitmask & matrix[row][k] ? 1 : 0;	    printf("%x ",i);	    bitmask >>= 1;	    if (!bitmask)	    {	      bitmask = 0x80;	      if(endian) k++;	    }	  }	  printf("\n");	}*/	return rankval;}/*  compute 1/2^x for genMatrixP routine below */double invPow( int x){  double num;  int i;  if( !x) return 1.0;  num = 1.0;  for( i=0; i<x; i++) num /= 2.0;  return num;}/*  generate probability matrix for any number of square    matricies.  Formula from NIST page 70 and its references:                               r-1    p(r,M) = 1/2^((M-r)^2) * product{ (1 - 2^(i-M))^2 /(1 - 2^(i-r))}                               i=0*//*void genMatrixP( int maxdim){  double pout, ptop, pbot, sum;  int M, r, i;  printf("\n M  r  probability\n\n");  for( M=1; M<=maxdim; M++)  {    sum = 0.0;    for( r=0; r<=M; r++)    {      pout = invPow( (M-r)*(M-r));      for( i=0; i<r; i++)      {	ptop = 1.0 - invPow(M-i);	pbot = 1.0 - invPow(r-i);	pout *= ptop*ptop/pbot;      }      sum += pout;      printf("%3d %3d %e\n", M, r, pout);    }    printf("sum = %f\n\n", sum);  }}*//*  Same thing, but one at a time.  */double genMatrixP( int M, int r){  double pout, ptop, pbot;  int i;  pout = invPow( (M-r)*(M-r));  for( i=0; i<r; i++)  {    ptop = 1.0 - invPow(M-i);    pbot = 1.0 - invPow(r-i);    pout *= ptop*ptop/pbot;  }  return pout;}/*  Binary matrix rank test.    Described in NIST and used in DIEHARD the following test is designed for    megabits of data.  It is assumed that the matrix dimension is > 8    for sensible results.  The math should be correct for any dimension,    but this code is hard wired to deal with dimesion >= 6 so the actual    cut off is 8.  The cardinality of 5 ranks is computed and the chi^2    observed is then found using exact formulas for the probabilities.    The p-value is found from 1 - P(chi^2, 5) since we have 5 degrees    of freedom.    Enter with source pointer, endianness, matrix dimension and total      number of matricies to deal with.    Returns chi^2(observed) and p-value, function is negative on error,      positive on success (negative function return means chi^2 and      p-value should be ignored).*/int ranktest( SRCPTR src, int endian, int Ndim, int Mtodo,	      double *chsqr, double *pvalue){  double F[6], P[6], t, sum; /*  The first 5 elements in each array correspond to ranks of     M, M-1, M-2, M-3 and M-4 respectively.  The last element     contains the sum of all remaining ranks (and should be zero     for truely random data on this scale of less than 1e6 matricies). */  int i, j, k;  SRCPTR bits;  if( Ndim < 8) return -1;  bits.byteptr = src.byteptr;  bits.bitpos = src.bitpos;/*  initialize counts to zero  */  for( i=0; i<6; i++) F[i] = 0;/*  find rank of matrix and increment correct bin  */  for( i=0; i<Mtodo; i++)  {    k = binrank( &bits, Ndim, endian);    if( k<0)    {      printf("error computing binrank for dimension %d\n", Ndim);      return -1;    }    if( k> Ndim-5) F[Ndim-k]++;    else F[5]++;  }/*  compute probabilities for each rank  */  sum = 0.0;  for( i=0; i<5; i++)  {    P[i] = genMatrixP( Ndim, Ndim-i);    sum += P[i];//    printf("P[%d] = %f  F[%d] = %f\n", i, P[i], i, F[i]);  }  P[5] = 1.0 - sum;//  printf("P[5] = %e  F[5] = %f\n", P[5], F[5]);/*  compute chi^2(observed) and p-value  */  sum = 0.0;  j = 0;  for( i=0; i<5; i++)  {    j += F[i];    t = F[i] - P[i]*Mtodo;//    printf("i= %d  t = %f\n", i, t);    sum += t*t/P[i]/Mtodo;  }  t = (Mtodo - j) - P[5]*Mtodo;  sum += t*t/P[5]/Ndim;  *pvalue = chisqr( sum, 5);//  printf("chisqr = %f, pvalue = %f \n", sum, *pvalue);  *chsqr = sum;  return 1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产你懂的| 欧美大片日本大片免费观看| 樱花影视一区二区| 欧美在线一区二区三区| 午夜精品免费在线| 日韩精品在线一区| 国产精品一品二品| 综合激情成人伊人| 欧美亚洲图片小说| 久久精品噜噜噜成人av农村| 国产欧美日韩精品一区| 91蝌蚪porny九色| 午夜精品影院在线观看| 欧美本精品男人aⅴ天堂| 丁香一区二区三区| 亚洲男人天堂一区| 91精品国产欧美一区二区| 精品中文字幕一区二区| 国产精品丝袜黑色高跟| 国产一二精品视频| 久久久国产一区二区三区四区小说 | 成人黄色免费短视频| 欧美经典一区二区| 国产精品久久久久久久久图文区| 99re热这里只有精品免费视频| 三级成人在线视频| 2023国产精品| 丁香天五香天堂综合| 国产精品毛片无遮挡高清| 精品婷婷伊人一区三区三| 国产在线视频一区二区| 亚洲美女视频在线| 久久蜜桃香蕉精品一区二区三区| 日本精品裸体写真集在线观看| 国产综合色视频| 亚洲一区二区三区免费视频| 久久嫩草精品久久久精品| 在线观看91视频| 国产黄色精品网站| 天天色天天操综合| 欧美巨大另类极品videosbest | 欧美精品一区二区三区在线播放| 97aⅴ精品视频一二三区| 亚洲国产精品久久人人爱蜜臀| 国产视频911| 欧美精品欧美精品系列| 972aa.com艺术欧美| 国产毛片精品国产一区二区三区| 午夜视频久久久久久| 国产精品二三区| 久久色视频免费观看| 91麻豆精品国产91久久久| 色香色香欲天天天影视综合网| 国产福利91精品一区二区三区| 久久精品国产精品亚洲红杏 | 亚洲二区在线视频| 国产精品第四页| 久久久久国产成人精品亚洲午夜| 7777精品伊人久久久大香线蕉经典版下载 | 成人激情免费网站| 亚洲一区国产视频| 亚洲猫色日本管| 欧美日本在线观看| 色婷婷精品久久二区二区蜜臂av | 综合电影一区二区三区| 精品久久久久一区二区国产| 国产精品一区二区在线播放 | 国产亚洲1区2区3区| 欧美区一区二区三区| av中文字幕不卡| 国产麻豆日韩欧美久久| 亚洲伊人色欲综合网| 欧美美女一区二区在线观看| 成人一区二区在线观看| 国产风韵犹存在线视精品| 性欧美大战久久久久久久久| 亚洲乱码一区二区三区在线观看| 精品1区2区在线观看| 欧美日韩精品一区二区天天拍小说 | 4hu四虎永久在线影院成人| 欧美性猛交xxxxxxxx| 欧美精品免费视频| 日韩精品一区国产麻豆| 精品毛片乱码1区2区3区| 精品久久久久久久人人人人传媒| 欧美白人最猛性xxxxx69交| 久久久精品综合| 欧美国产日韩亚洲一区| 天天综合色天天| 亚洲国产三级在线| 成人黄色av电影| 精品一区免费av| 免费成人在线观看| 伊人色综合久久天天人手人婷| 欧美国产欧美亚州国产日韩mv天天看完整| 久久综合久久综合久久| 91精品国产日韩91久久久久久| 日本韩国精品一区二区在线观看| 蜜臀av一区二区三区| 亚洲国产成人av网| 久久久国产精华| 亚洲国产成人在线| 亚洲国产综合人成综合网站| 丝袜美腿一区二区三区| 久久99热这里只有精品| 成人免费视频播放| av一本久道久久综合久久鬼色| 色嗨嗨av一区二区三区| 日韩一级二级三级精品视频| 精品国产麻豆免费人成网站| 亚洲免费av高清| 日本成人在线不卡视频| 成人动漫av在线| 欧美在线不卡一区| 欧美久久久久久久久久| 久久久久国色av免费看影院| 亚洲综合清纯丝袜自拍| 奇米影视一区二区三区小说| 成人在线视频一区二区| 欧美日韩午夜影院| 26uuu国产电影一区二区| 91视频免费看| 日本乱码高清不卡字幕| 欧美日韩三级一区二区| 日韩欧美国产不卡| 欧美片网站yy| 欧美日韩精品三区| 欧美一区二区在线免费播放| 欧美日韩国产精品自在自线| 久久久久久亚洲综合| 国产精品免费视频一区| 国产精品卡一卡二卡三| 午夜欧美在线一二页| 国产不卡免费视频| 成人a区在线观看| 久久精品av麻豆的观看方式| 国产suv精品一区二区883| 亚洲视频资源在线| 国产伦理精品不卡| 欧美日韩成人综合天天影院 | 亚洲自拍另类综合| 国产福利91精品一区二区三区| 欧美福利一区二区| 一区二区三区在线高清| 国产成人精品免费一区二区| 欧美日本在线视频| 亚洲图片另类小说| 国产成人久久精品77777最新版本| 制服丝袜国产精品| 亚洲一级在线观看| 一本色道亚洲精品aⅴ| 日本一区二区视频在线| 精品午夜久久福利影院| 欧美精品色一区二区三区| 亚洲精品国产一区二区三区四区在线| 麻豆国产欧美一区二区三区| 欧美三区免费完整视频在线观看| 欧美日韩国产另类一区| 一区二区中文视频| 国产亚洲欧美在线| 三级一区在线视频先锋| 91精品国产入口| 成人午夜在线免费| 亚洲一区二区av在线| 精品精品国产高清a毛片牛牛| 成人精品在线视频观看| 午夜国产精品影院在线观看| 精品国产乱码久久久久久1区2区| av成人免费在线| 日韩vs国产vs欧美| 中文字幕精品在线不卡| 在线播放91灌醉迷j高跟美女 | 欧美精品一区二区三区视频| jlzzjlzz亚洲日本少妇| 日韩高清一区二区| 中文文精品字幕一区二区| 欧美日韩www| 成人理论电影网| 免费在线观看精品| **欧美大码日韩| 日韩欧美在线观看一区二区三区| aaa国产一区| 久久av老司机精品网站导航| 一区二区三区蜜桃网| 国产亚洲精品bt天堂精选| 日韩一区二区不卡| 99re这里只有精品首页| 久久av资源网| 亚洲6080在线| 亚洲欧洲av在线| 欧美成人video| 欧美日韩国产影片| 国产iv一区二区三区| 男男gaygay亚洲| 亚洲在线视频网站| 国产精品午夜免费| 26uuu精品一区二区在线观看| 欧美精品色一区二区三区| 91蜜桃免费观看视频| 顶级嫩模精品视频在线看|