static void WriteDataWeight (unif01_Gen * gen, char *TestName, long N, long n, int r, long k, double Alpha, double Beta) { swrite_Head (gen, TestName, N, n, r); printf (", k = %1ld, Alpha = %6.4g, Beta = %6.4g\n\n", k, Alpha, Beta); }
static void WriteDataMaxOft (unif01_Gen * gen, char *TestName, long N, long n, int r, int d, int t, double NbExp) { swrite_Head (gen, TestName, N, n, r); printf (", d = %4d, t = %2d\n\n", d, t); printf (" Number of categories = %d\n", d); printf (" Expected number per category = %.2f\n\n", NbExp); }
void svaria_SampleProd (unif01_Gen * gen, sres_Basic * res, long N, long n, int r, int t) { long i; int j; long Seq; double *P; double temp; double Par[1]; lebool localRes = FALSE; chrono_Chrono *Timer; char *TestName = "svaria_SampleProd test"; Timer = chrono_Create (); if (swrite_Basic) { swrite_Head (gen, TestName, N, n, r); printf (", t = %d\n\n", t); } if (res == NULL) { localRes = TRUE; res = sres_CreateBasic (); } sres_InitBasic (res, N, "svaria_SampleProd"); P = util_Calloc ((size_t) n + 1, sizeof (double)); statcoll_SetDesc (res->sVal1, "SampleProd sVal1: Uniform [0, 1]"); Par[0] = t; for (Seq = 1; Seq <= N; Seq++) { for (i = 1; i <= n; i++) { temp = unif01_StripD (gen, r); for (j = 2; j <= t; j++) temp *= unif01_StripD (gen, r); P[i] = temp; } gofw_ActiveTests1 (P, n, FDistProd, Par, res->sVal2, res->pVal2); statcoll_AddObs (res->sVal1, res->pVal2[gofw_AD]); } gofw_ActiveTests2 (res->sVal1->V, res->pVal1->V, N, wdist_Unif, (double *) NULL, res->sVal2, res->pVal2); res->pVal1->NObs = N; if (swrite_Collectors) statcoll_Write (res->sVal1, 5, 14, 4, 3); if (swrite_Basic) { gofw_WriteActiveTests2 (N, res->sVal2, res->pVal2, "Anderson-Darling statistic :"); swrite_Final (gen, Timer); } util_Free (P); if (localRes) sres_DeleteBasic (res); chrono_Delete (Timer); }
static void WriteDataArgMax (unif01_Gen * gen, char *TestName, long N, long n, int r, long k, long m) { double x; swrite_Head (gen, TestName, N, n, r); printf (", k = %1ld, m = %1ld\n\n", k, m); printf (" Number of balls = n = %1ld\n", n); printf (" Number of urns = k = %1ld\n", k); x = n; x = x * x / (2 * k); printf (" Number (approx) of collisions = n^2 / 2k = %g\n\n\n", x); }
static void WriteDataFour ( unif01_Gen *gen, /* generator */ char *Test, /* Test name */ long N, /* Number of replications */ int k, /* Sample size n = 2^k */ int r, /* r first bits of each random number dropped */ int s /* s bits of each random number used */ ) { long n; n = num_TwoExp[k]; swrite_Head (gen, Test, N, n, r); printf (", s = %4d, k = %4d\n\n", s, k); }
static void WriteDataDisc (unif01_Gen * gen, char *TestName, long N, long n, int r, int s, int L, double Mu, double Sigma) { swrite_Head (gen, TestName, N, n, r); printf (", s = %1d, L = %1d\n", s, L); if (Sigma > 0.0) { printf (" Mu = "); num_WriteD (Mu, 15, 7, 7); printf ("\n Sigma = "); num_WriteD (Sigma, 15, 7, 7); printf ("\n"); } else { printf (" Mu and Sigma are unknown.\n"); } printf ("\n\n"); }
static void WriteDataRun (unif01_Gen * gen, char *TestName, long N, long n, int r, lebool Up) { swrite_Head (gen, TestName, N, n, r); printf (", Up = %5s\n\n", Up ? "TRUE" : "FALSE"); }
static void WriteDataCoupCol (unif01_Gen *gen, char *TestName, long N, long n, int r, int d) { swrite_Head (gen, TestName, N, n, r); printf (", d = %4d\n\n", d); }
static void WriteDataPoker (unif01_Gen * gen, char *TestName, long N, long n, int r, int d, int k) { swrite_Head (gen, TestName, N, n, r); printf (", d = %4d, k = %4d\n\n", d, k); }
static void WriteDataGap (unif01_Gen *gen, char *TestName, long N, long n, int r, double Alpha, double Beta) { swrite_Head (gen, TestName, N, n, r); printf (", Alpha = %8.6g, Beta = %8.6g\n\n", Alpha, Beta); }
static void WriteDataSumColl (unif01_Gen * gen, char *TestName, long N, long n, int r, double g) { swrite_Head (gen, TestName, N, n, r); printf (", g = %g\n\n", g); }
void svaria_SumLogs (unif01_Gen * gen, sres_Chi2 * res, long N, long n, int r) { const double Eps = DBL_EPSILON / 2.0; /* To avoid log(0) */ const double Epsilon = 1.E-100; /* To avoid underflow */ long i; long Seq; double u; double Prod; double Sum; double V[1]; lebool localRes = FALSE; chrono_Chrono *Timer; char *TestName = "svaria_SumLogs test"; char chaine[LEN1 + 1] = ""; char str[LEN2 + 1]; Timer = chrono_Create (); if (swrite_Basic) { swrite_Head (gen, TestName, N, n, r); printf ("\n\n"); } util_Assert (n < LONG_MAX/2, "2n > LONG_MAX"); if (res == NULL) { localRes = TRUE; res = sres_CreateChi2 (); } sres_InitChi2 (res, N, -1, "svaria_SumLogs"); strncpy (chaine, "SumLogs sVal1: chi2 with ", (size_t) LEN1); sprintf (str, "%ld", 2 * n); strncat (chaine, str, (size_t) LEN2); strncat (chaine, " degrees of freedom", (size_t) LEN1); statcoll_SetDesc (res->sVal1, chaine); res->degFree = 2 * n; if (res->degFree < 1) { util_Warning (TRUE, "Chi-square with 0 degree of freedom."); if (localRes) sres_DeleteChi2 (res); return; } for (Seq = 1; Seq <= N; Seq++) { Prod = 1.0; Sum = 0.0; for (i = 1; i <= n; i++) { u = unif01_StripD (gen, r); if (u < Eps) u = Eps; Prod *= u; if (Prod < Epsilon) { Sum += log (Prod); Prod = 1.0; } } statcoll_AddObs (res->sVal1, -2.0 * (Sum + log (Prod))); } V[0] = 2 * n; gofw_ActiveTests2 (res->sVal1->V, res->pVal1->V, N, wdist_ChiSquare, V, res->sVal2, res->pVal2); res->pVal1->NObs = N; sres_GetChi2SumStat (res); if (swrite_Collectors) statcoll_Write (res->sVal1, 5, 14, 4, 3); if (swrite_Basic) { swrite_AddStrChi (str, LEN2, res->degFree); gofw_WriteActiveTests2 (N, res->sVal2, res->pVal2, str); swrite_Chi2SumTest (N, res); swrite_Final (gen, Timer); } if (localRes) sres_DeleteChi2 (res); chrono_Delete (Timer); }
void svaria_SampleCorr (unif01_Gen * gen, sres_Basic * res, long N, long n, int r, int k) { long i; long Seq; double U; double Sum; double *Pre; /* Previous k generated numbers */ int pos; /* Circular index to element at lag k */ lebool localRes = FALSE; chrono_Chrono *Timer; char *TestName = "svaria_SampleCorr test"; Timer = chrono_Create (); if (swrite_Basic) { swrite_Head (gen, TestName, N, n, r); printf (", k = %d\n\n", k); } util_Assert (n > 2, "svaria_SampleCorr: n <= 2"); if (res == NULL) { localRes = TRUE; res = sres_CreateBasic (); } sres_InitBasic (res, N, "svaria_SampleCorr"); statcoll_SetDesc (res->sVal1, "SampleCorr sVal1: asymptotic standard normal"); Pre = util_Calloc ((size_t) (k + 1), sizeof (double)); for (Seq = 1; Seq <= N; Seq++) { /* Generate first k numbers U and keep them in Pre */ for (i = 0; i < k; i++) Pre[i] = unif01_StripD (gen, r); Sum = 0.0; pos = 0; /* Element Pre[pos] is at lag k from U */ for (i = k; i < n; i++) { U = unif01_StripD (gen, r); Sum += Pre[pos] * U - 0.25; Pre[pos] = U; pos++; pos %= k; } /* Save standardized correlation */ statcoll_AddObs (res->sVal1, Sum * sqrt (12.0 / (n - k))); } gofw_ActiveTests2 (res->sVal1->V, res->pVal1->V, N, wdist_Normal, (double *) NULL, res->sVal2, res->pVal2); res->pVal1->NObs = N; sres_GetNormalSumStat (res); if (swrite_Collectors) statcoll_Write (res->sVal1, 5, 14, 4, 3); if (swrite_Basic) { gofw_WriteActiveTests2 (N, res->sVal2, res->pVal2, "Normal statistic :"); swrite_NormalSumTest (N, res); swrite_Final (gen, Timer); } util_Free (Pre); if (localRes) sres_DeleteBasic (res); chrono_Delete (Timer); }
void svaria_SampleMean (unif01_Gen * gen, sres_Basic * res, long N, long n, int r) { long i; long Seq; double Sum; double Coef[SAM_LIM + 1]; lebool localRes = FALSE; chrono_Chrono *Timer; char *TestName = "svaria_SampleMean test"; Timer = chrono_Create (); if (swrite_Basic) { swrite_Head (gen, TestName, N, n, r); printf ("\n\n"); } util_Assert (n > 1, "svaria_SampleMean: n < 2"); if (res == NULL) { localRes = TRUE; res = sres_CreateBasic (); } sres_InitBasic (res, N, "svaria_SampleMean"); if (n < SAM_LIM) InitFDistMeans (n, Coef); if (n < SAM_LIM) statcoll_SetDesc (res->sVal1, "SampleMean sVal1: n*<U>"); else statcoll_SetDesc (res->sVal1, "SampleMean sVal1: standard normal"); for (Seq = 1; Seq <= N; Seq++) { Sum = 0.0; for (i = 1; i <= n; i++) Sum += unif01_StripD (gen, r); if (n < SAM_LIM) statcoll_AddObs (res->sVal1, Sum); else statcoll_AddObs (res->sVal1, sqrt (12.0 / n) * (Sum - 0.5 * n)); } if (n < SAM_LIM) { gofw_ActiveTests2 (res->sVal1->V, res->pVal1->V, N, FDistMeans, Coef, res->sVal2, res->pVal2); } else { /* Normal approximation */ gofw_ActiveTests2 (res->sVal1->V, res->pVal1->V, N, wdist_Normal, (double *) NULL, res->sVal2, res->pVal2); } res->pVal1->NObs = N; if (swrite_Collectors) statcoll_Write (res->sVal1, 5, 14, 4, 3); if (swrite_Basic) { gofw_WriteActiveTests2 (N, res->sVal2, res->pVal2, "Statistic value :"); swrite_Final (gen, Timer); } if (localRes) sres_DeleteBasic (res); chrono_Delete (Timer); }
static void WriteDataDM (unif01_Gen * gen, char *TestName, long N, long n, int r, long m) { swrite_Head (gen, TestName, N, n, r); printf (", m = %1ld\n\n", m); }