\\ Output of vector T of tests (as strings) on v. t_test (T,v,dig=4) = {my (format,text,f,fn); T=t_split(T); format=Strprintf("%%18s: %%.%df",dig); \\ SUPERFLUOUS? for (i=1,#T, fn=T[i]; f=eval(t_word(["t_test_",fn],,""));\ text=Strprintf("%12s: %.*f",fn,dig,f(v)); t_out(text))} \\ 2-bit serial test. Sometimes error? t_test_2bit (v) = {my (n,n0,n1,n00,n01,n10,n11,b); n=#v; n0=t_multvec([0],v); n1=t_multvec([1],v); n00=t_multvec([0,0],v); n01=t_multvec([0,1],v); n10=t_multvec([1,0],v); n11=t_multvec([1,1],v); b=(4/(n-1))*(n00^2+n01^2+n10^2+n11^2)-(2/n)*(n0^2+n1^2)+1; incgam(0.5,b/2)/gamma(0.5)} \\ 20894 Menezes/, 182. t_test_autocorr (v,d=1) = {my (x,n=#v); x=(2*t_autocorr(v,d)-n+d)/sqrt(n-d); 2-2*t_Phi(abs(x))} \\ m=number of blocks, l=their length. \\ m not too big (say m<=40), otherwise gamma((m-1)/2) \\ is not more reliable. t_test_blocks (v,m=40) = {my (n,a,l,f,x); l=#v\m; n=m*l; v=v[1..n]; a=(m-1)/2; f=[vecsum(v[(j-1)*l+1..j*l]) | j<-t_numbers(m)]; x=0; for (j=1,m,x+=(2*f[j]-l)^2); x=x/(2*l); incgam(a,x/2)/gamma(a)} \\ 25664 Kenny, 25668 Bassham. t_test_cusum (v) = {my (z); v=apply(x->if (x==0,-1,x),v); z=t_maxsum(v)/sqrt(#v); 1-3*t_Phi(z)+t_Phi(-z)+4*t_Phi(3*z)-2*t_Phi(5*z)} t_test_freq (v) = {my (s); v=apply(x->if (x==0,-1,x),v); s=vecsum(v); erfc(abs(s)/sqrt(2*#v))} t_test_ks (v) = {my (n,D); n=#v; D=t_distar(v); t_ks(sqrt(n)*D)} t_test_ks_discrete (v) = {v=t_makereals(v); t_test_ks(v)} \\ 25885 Guibas/Odlyzko, 252-253. t_test_longrun (v,u=[1],t=1) = {my (m,k,w); m=#u; k=#v\t; w=vector(t,i,v[(i-1)*k+1..i*k]); prod(i=1,t, exp(-#w[i]*(2^m-1)/2^(1+m+t_longrun(u,w[i]))))} \\ 25885 Guibas/Odlyzko, 252-253. t_test_longrun1 (v) = exp(-#v/2^(2+t_longrun([1],v))) t_test_runs (v) = {my (n,n1,q,r,u,a,b); n=#v; n1=vecsum(v); q=n1/n; r=1+#[k | k<-t_numbers(n-1), v[k]!=v[k+1]]; u=2*q*(1-q); a=abs(r-n*u); b=sqrt(2*n)*u; erfc(a/b)}