void fwalk_RWalk1 (ffam_Fam * fam, fwalk_Res1 * res, fcho_Cho2 * cho, long N, long n, int r, int s, long L, int Nr, int j1, int j2, int jstep) { long Par[5] = { 0 }; lebool localRes; Par[0] = N; Par[1] = n; Par[2] = r; Par[3] = s; Par[4] = L; if (res == NULL) { localRes = TRUE; res = fwalk_CreateRes1 (); } else localRes = FALSE; PrintHead ("fwalk_RWalk1", fam, A_RANDOMWALK1, Par, Nr, j1, j2, jstep); InitRes1 (fam, res, N, Nr, j1, j2, jstep, "fwalk_RWalk1"); ftab_MakeTables (fam, res, cho, Par, TabRWalk1, Nr, j1, j2, jstep); PrintRes1 (res); if (localRes) fwalk_DeleteRes1 (res); }
void sknuth_MaxOft (unif01_Gen * gen, sknuth_Res1 * res, long N, long n, int r, int d, int t) { long Seq; /* Replication number */ double tReal = t; double dReal = d; double NbExp; /* Expected number in each class */ double MaxU; double U; long Groupe; int j, Indice; double *P; double Par[1]; double X2; double V[1]; /* Number degrees of freedom for Chi2 */ char str[LENGTH + 1]; lebool localRes = FALSE; chrono_Chrono *Timer; char *TestName = "sknuth_MaxOft test"; sres_Basic *Bas; sres_Chi2 *Chi; Timer = chrono_Create (); Par[0] = t; NbExp = n / dReal; if (swrite_Basic) WriteDataMaxOft (gen, TestName, N, n, r, d, t, NbExp); util_Assert (NbExp >= gofs_MinExpected, "MaxOft: NbExp < gofs_MinExpected"); if (res == NULL) { localRes = TRUE; res = sknuth_CreateRes1 (); } InitRes1 (res, N, d); Bas = res->Bas; Chi = res->Chi; Chi->jmin = 0; Chi->jmax = d - 1; for (j = 0; j < d; j++) { Chi->Loc[j] = j; Chi->NbExp[j] = NbExp; } sprintf (str, "The N statistic values (a ChiSquare with %1d degrees" " of freedom):", d - 1); statcoll_SetDesc (Chi->sVal1, str); Chi->degFree = d - 1; statcoll_SetDesc (Bas->sVal1, "The N statistic values (the Anderson-Darling p-values):"); P = util_Calloc ((size_t) n + 1, sizeof (double)); for (Seq = 1; Seq <= N; Seq++) { for (Indice = 0; Indice < d; Indice++) Chi->Count[Indice] = 0; for (Groupe = 1; Groupe <= n; Groupe++) { /* Generate a vector and find the max value */ MaxU = unif01_StripD (gen, r); for (j = 1; j < t; j++) { U = unif01_StripD (gen, r); if (U > MaxU) MaxU = U; } /* For the chi2 */ Indice = pow (MaxU, tReal) * dReal; ++Chi->Count[Indice]; /* For the Anderson-Darling */ P[Groupe] = MaxU; } if (swrite_Counters) tables_WriteTabL (Chi->Count, 0, d - 1, 5, 10, "Observed numbers:"); /* Value of the chi2 statistic */ X2 = gofs_Chi2Equal (NbExp, Chi->Count, 0, d - 1); statcoll_AddObs (Chi->sVal1, X2); /* Value of the Anderson-Darling statistic */ gofw_ActiveTests1 (P, n, FDistMax, Par, Bas->sVal2, Bas->pVal2); statcoll_AddObs (Bas->sVal1, Bas->pVal2[gofw_AD]); } util_Free (P); V[0] = d - 1; gofw_ActiveTests2 (Chi->sVal1->V, Chi->pVal1->V, N, wdist_ChiSquare, V, Chi->sVal2, Chi->pVal2); Chi->pVal1->NObs = N; sres_GetChi2SumStat (Chi); gofw_ActiveTests2 (Bas->sVal1->V, Bas->pVal1->V, N, wdist_Unif, (double *) NULL, Bas->sVal2, Bas->pVal2); Bas->pVal1->NObs = N; if (swrite_Collectors) { statcoll_Write (Chi->sVal1, 5, 14, 4, 3); statcoll_Write (Bas->sVal1, 5, 14, 4, 3); } if (swrite_Basic) { if (N == 1) { swrite_AddStrChi (str, LENGTH, Chi->degFree); gofw_WriteActiveTests2 (N, Chi->sVal2, Chi->pVal2, str); } else { printf ("\n-----------------------------------------------\n"); printf ("Test results for chi2 with %2ld degrees of freedom:\n", Chi->degFree); gofw_WriteActiveTests0 (N, Chi->sVal2, Chi->pVal2); swrite_Chi2SumTest (N, Chi); } if (N == 1) { gofw_WriteActiveTests2 (N, Bas->sVal2, Bas->pVal2, "Anderson-Darling statistic :"); } else { printf ("\n-----------------------------------------------\n"); printf ("Test results for Anderson-Darling:\n"); gofw_WriteActiveTests0 (N, Bas->sVal2, Bas->pVal2); } printf ("\n"); swrite_Final (gen, Timer); } if (localRes) sknuth_DeleteRes1 (res); chrono_Delete (Timer); }