예제 #1
0
파일: stats.c 프로젝트: delnatan/sizes
static void distributionAnalysis (double *r, 
	double *f, double *dr, int N, int rPower, double Aspect,
	double *area, double *mode, double *mean, double *stdDev,
	int AnalysisType, double *entropy)
{
	int i, modeIndex;
	double dist, R, rVol, modeVal = 0;
	double sumY = 0.0, sumXY = 0.0, sumXXY = 0.0;
	*area = 0.0;
	for (i = 1; i <= N; i++) {
			/*
			 * calculate the volume for an ellipsoid or radius r[i]
			 */
		R = r[i] * 1.e-8;	/* convert to cm */
		rVol = (4 * Pi / 3) * R*R*R*Aspect;
		dist = f[i] / dr[i] * pow( (double) rVol, (double) rPower);
		if ( (i == 1) || (dist >= modeVal) ) {
			modeIndex = i;
			modeVal = dist;
		}
		*area += dist * dr[i];
		sumY += dist * dr[i]; 
		sumXY += dist * dr[i] * r[i]; 
		sumXXY += dist * dr[i] * r[i] * r[i];
	}
	*mode = r[modeIndex];
	*mean = sumXY / sumY;
	*stdDev = sqrt( (sumXXY / sumY) - pow((double) sumXY / sumY, (double) 2) );
	*entropy = 0.0;
	if (AnalysisType == 1)
	  for (i = 1; i <= N; i++) {
			/*
			 * calculate the volume for an ellipsoid of radius r[i]
			 */
		R = r[i] * 1.e-8;	/* convert to cm */
		rVol = (4 * Pi / 3) * R*R*R*Aspect;
		dist = f[i] / dr[i] * pow( (double) rVol, (double) rPower);
		*entropy += ENTROPY(dist * dr[i] / (*area));
	  }
}
예제 #2
0
            ottery_getentropy_impl(buf, &status, test_sources, N));
  tt_mem_op("aaaaabbbbbbbbbbccccddddddddeeeeee", ==, buf, 33);
  tt_assert(iszero(buf + 33, sizeof(buf) - 33));
  tt_int_op(status, ==, 0);

end:
  ;
#undef N
}

#define ENTROPY(name, flags)                                             \
  { #name, test_entropy_source, TT_FORK | (flags), &entropy_source_setup, \
    (void*)ottery_getentropy_ ## name }

static struct testcase_t entropy_tests[] = {
  ENTROPY(rdrand, 0),
  ENTROPY(getrandom, 0),
  ENTROPY(getentropy, 0),
  ENTROPY(cryptgenrandom, 0),
  ENTROPY(dev_urandom, 0),
  ENTROPY(dev_hwrandom, OT_ENT_IFFY),
  ENTROPY(egd, 0),
  ENTROPY(proc_uuid, 0),
  ENTROPY(linux_sysctl, 0),
  ENTROPY(bsd_sysctl, 0),
  ENTROPY(fallback_kludge, 0),
#ifndef _WIN32
  { "generic_device", test_entropy_generic_device, TT_FORK, NULL, NULL },
#endif
  { "dispatcher", test_entropy_dispatcher, TT_FORK, NULL, NULL },
  END_OF_TESTCASES