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

📄 stat.c

📁 ml-rsim 多处理器模拟器 支持类bsd操作系统
💻 C
📖 第 1 页 / 共 2 页
字号:
/* Generates and displays a statrec report*/void StatrecReport(int node, STATREC *srptr){  int       i ,j;  long long total = 0;  double    stddev;  double    x;    PSDELAY;  if (srptr->type == PNTSTATTYPE)    {                                    /* This is a point statrec        */      YS__statmsg(node,		  "\nStatistics Record %s:\n",		  srptr->name);      YS__statmsg(node,		  "  Number of samples = %lld,   Max Value = %i,   Min Value = %i\n",		  srptr->samples,		  srptr->maxval,		  srptr->minval);      if (srptr->sumwt != 0.0 && srptr->sumwt != 1.0)	{                                    /* calculate standard dev.    */	  x = (((double)srptr->sumsq-((double)srptr->sum/(double)srptr->sumwt)		*((double)srptr->sum/(double)srptr->sumwt)*(double)srptr->sumwt)/((double)srptr->sumwt-1.0));	  if (x > 0.0)	    stddev = sqrt(x);	  else 	    stddev = 0.0;	}      else	stddev = 0.0;            if (stddev == -0.0)	stddev = 0.0;            if (srptr->meanflag == MEANS)     /* print out means & stddev also   */	{	  YS__statmsg(node,		      "  Mean = %g,   Standard Deviation = %g\n",		      (double)srptr->sum/(double)srptr->sumwt,		      stddev);	}            if (srptr->hist)	{                                           /* print out histogram */	  for (i = 0; i < srptr->bins; i++)	    total += srptr->hist[i];	  if (total != 0)	    {	      YS__statmsg(node, "    Bin            Value\n");	      YS__statmsg(node, "  -------        ---------\n");	      for (i = 0; i < srptr->bins; i++)		{		  if (!srptr->histspecial || (srptr->hist[i] > 0))		    {		      YS__statmsg(node,				  " %8.2f  %15lld (%6.2f%%) |",				  (double)srptr->hist_low + i * (double)srptr->hist_incr,				  srptr->hist[i],				  (double)(((double)srptr->hist[i]/(double)total)*100.0));		      		      for (j = 0;			   j < (int)(((double)srptr->hist[i]/(double)total)*40.0);			   j++) 			YS__statmsg(node, "%s","*");		      YS__statmsg(node, "\n");		    }		}	    }	  else	    YS__statmsg(node, "All histogram entries = 0");	  if (srptr->maxval+srptr->hist_low > srptr->hist_high)	    YS__statmsg(node,			"Warning: maximum value exceeds histogram range (%i, %i)\n",			srptr->hist_low,srptr->hist_high);				}    }    else if (srptr->type == INTSTATTYPE)    {                                          /* interval statistics recd.*/      YS__statmsg(node, "\nStatistics Record %s:\n", srptr->name);      if (srptr->intervalerr != 0)	YS__statmsg(node, "Invalid statistics, interval error");      YS__statmsg(node,		  "  Number of intervals = %lld, Max Value = %i, Min Value = %i\n",		  srptr->samples-1,		  srptr->maxval,		  srptr->minval);      if (srptr->sumwt != 0 && srptr->sumwt != 1)	{                                   /* calculate standdard deviation */	  x = (((double)srptr->sumsq-((double)srptr->sum/(double)srptr->sumwt)		*((double)srptr->sum/(double)srptr->sumwt)*(double)srptr->sumwt)/((double)srptr->sumwt-1.0));	  if (x > 0.0)	    stddev = sqrt(x);	  else 	    stddev = 0.0;	}      else	stddev = 0.0;      if (stddev == -0.0)	stddev = 0.0;      if (srptr->meanflag == MEANS)                  /* print out means also */	YS__statmsg(node,		    "  Mean = %g,   Standard Deviation = %g\n",		    (double)srptr->sum/(double)srptr->sumwt,		    stddev);      if (srptr->hist)	{                                        /* print out histogram bins */	  for (i = 0; i < srptr->bins; i++)	    total += srptr->hist[i];	  if (total != 0.0)	    {	      YS__statmsg(node, "    Bin            Value\n");	      YS__statmsg(node, "  -------        ---------\n");	      for (i = 0; i < srptr->bins; i++)		{		  if (!srptr->histspecial || (srptr->hist[i] > 0))		    {		      YS__statmsg(node,				  " %8.2f  %15lld (%6.2f%%) |",				  (double)srptr->hist_low+i*(double)srptr->hist_incr,				  srptr->hist[i],				  (double)(((double)srptr->hist[i]/(double)total)*100.0));		      for (j = 0;			   j < (int)(((double)srptr->hist[i]/(double)total)*40.0);			   j++) 			YS__statmsg(node, "%s","*");		      YS__statmsg(node, "\n");		    }		}	    }	  else	    YS__statmsg(node, "All histogram entries = 0");	}   }  else    YS__statmsg(node,		"Invalid statistic record type, use POINT or INTERVAL");  YS__statmsg(node, "\n");}/*****************************************************************************/long long StatrecSamples(STATREC *srptr) /* Returns the number of samples    */{  PSDELAY;  return srptr->samples; }/*****************************************************************************/int StatrecMaxVal(STATREC *srptr)        /* Returns the maximum sample value */{  PSDELAY;  return srptr->maxval; }/*****************************************************************************/int StatrecMinVal(STATREC *srptr)        /* Returns the minimum sample value */{  PSDELAY;  return srptr->minval; }/*****************************************************************************/int StatrecBins(STATREC *srptr)          /* Returns the number of bins       */{  PSDELAY;  if (srptr->hist)    return srptr->bins;  return 0;}/*****************************************************************************/int StatrecLowBin(STATREC *srptr)        /* Returns the low bin upper bound  */{  PSDELAY;  if (srptr->hist)    return srptr->hist_low;  return 0;}/*****************************************************************************/int StatrecHighBin(STATREC *srptr)       /* Returns the high bin lower bound */{  PSDELAY;  if (srptr->hist)    return srptr->hist_high;  return 0;}/*****************************************************************************/int StatrecBinSize(STATREC *srptr)       /* Returns the bin size             */{  PSDELAY;  if (srptr->hist)    return srptr->hist_incr;  return 0;}/*****************************************************************************//* Returns value of the ith histogram element */long long StatrecHist(STATREC *srptr, int i){  PSDELAY;  if (srptr->hist)    return srptr->hist[i];  return 0;}/*****************************************************************************/double StatrecMean(STATREC *srptr)       /* Returns the mean                 */{  PSDELAY;  if (srptr->meanflag == MEANS)    if (srptr->sumwt != 0)      return srptr->sum/srptr->sumwt;    else      return 0;  return 0.0;}/*****************************************************************************/long long StatrecSum(STATREC *srptr)                      /* Returns the sum */{  PSDELAY;  if (srptr->meanflag == MEANS)    return srptr->sum;  return 0;}/*****************************************************************************/double StatrecSdv(STATREC *srptr)        /* Returns the standard deviation   */{  PSDELAY;  if (srptr->meanflag == MEANS)    return sqrt((double)(((double)srptr->sumsq-((double)srptr->sum/(double)srptr->sumwt)*			  ((double)srptr->sum/(double)srptr->sumwt)*(double)srptr->sumwt)/((double)srptr->sumwt-1.0)));  return 0.0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -