# Phase Congruential White Noise Generator
## 2 White Noise Autocorrelation Matrix
\begin{tabular}{l l l l l l} NS = 33 & NF = 16 \\ SQ = & & & & & & \\  0.905 & 1.269 & 1.072 & 0.233 & \(-\)1.176 & 0.236 \\  1.624 & \(-\)0.231 & 1.910 & \(-\)0.905 & \(-\)0.832 & \(-\)0.131 \\  0.531 & \(-\)0.122 & 1.929 & \(-\)1.879 & 1.449 & \(-\)1.981 \\  0.709 & \(-\)0.742 & 1.268 & 1.392 & 1.968 & \(-\)1.869 \\  0.800 & 0.105 & 1.736 & 0.750 & 0.187 & \(-\)1.676 \\ \(-\)1.252 & \(-\)0.187 & \(-\)0.811 & & & & \\ AFourier = & & & & & & \\  0.000 & 0.283 & 0.406 & 0.221 & 0.339 & 0.638 \\  0.309 & 0.593 & 0.406 & 0.338 & 0.309 & 0.213 \\  0.580 & 0.310 & 0.265 & 0.338 & 0.081 & 0.717 \\ \end{tabular} 

The listing of the results of this program begins with specifying the number of countings \(NS=33\) and Fourier frequencies \(NF=16\). The values of countings are taken for the original signal \(S_{0}\) from the result of the program _P070101_ in the subsection _Introduction_. Then there are lines _AFourier_ with the amplitudes of the internal phase sine frequencies. Their analysis suggests that the function _Random.Next()_ does not satisfy the first property about equality of the amplitudes of the internal frequency spectrum of white noise. Thus, taking into account the limited level of the corresponding matrix of autocorrelation coefficients \(R\) (presented in the subsection _Introduction_), and also the lack of equality of amplitudes in the internal spectrum of the signal frequencies, it becomes apparent that the standard function _Random.Next()_ generates sequences which are relatively far from satisfactory quality of the white noise process. Next, it is time to check the amplitudes of the internal frequency spectrum of the congruential white noise generator, which has been proposed in the current article. Below is the program _P070502_, which also uses the same number of \(N_{S}\) countings. They were created earlier in the program _P070401_ (in subsection _Construction and Results_) by using congruential technology [45; 46; 47; 48; 49; 50] in the generator _cDeonYuliCongPhase62A_. namespace P070502 { class cP070502  { static void Main(string[] args)  { const long NS = 33L; // signal counter quantity  double dNS = (double)NS;  const long NF = 16L; // frequency quantity in a counter  Console.WriteLine(\"NS = {0} NF = {1}\", NS, NF);  double[] s0 = new double[]\(-0.371,\ \ 6.938,\ -0.398,\ \ 2.317,\ -0.415,\ \ 1.159,\ \ -0.540,\ \ 0.626,\ -0.283,\ \ 0.545,\ -0.396,\ \ 0.479,\ \ -0.117,\ \ 0.736,\ 0.200,\ \ 0.980,\ \ 0.238,\ \ 0.919,\ \ 0.215,\ \ 0.836,\ -0.125,\ \ 0.483,\ -0.566,\ \ 0.146,\ \ -0.779,\ \ 0.226,\ -1.147,\ -0.087,\ -1.497,\ -0.077,\ \ -2.373,\ -0.201,\ -7.674\};

];

Console.WriteLine(\"S0 =\");

for (int i = 1; i <= NS; i++)

{  Console.Write(\"[0,8:F3]\", so[i - 1]);

Console.WriteLine();

double[] AF = new double[NF + 1];

double[] phiF = new double[NF + 1];

int NNS = (int)NS;

int NNF = (int)NF;

Fourier(NNS, NNF, so, AF, phiF);

Console.WriteLine(\"Afourier =\");

for (int i = 1; i <= NF; i++)

{  Console.Write(\"[0,8:F3]\", AF[i]);

Console.WriteLine();

Console.ReadKey();

//--------------------------------

Function _Fourier_ from previous program _P070501_

//--------------------------------

After launching the program _P070502_ the following outcome shows up as well. NS = 33 NF = 16

SO =

\(-0.371\ \ \ 6.938\ \ -0.398\ \ 2.317\ \ -0.415\ \ \ 1.159\ \ -0.540\ \ \ 0.626\ \ -0.283\ \ 0.545\ \ -0.396\ \ \ 0.479\ \ -0.117\ \ \ 0.736\ \ 0.200\ \ 0.980\ \ \ 0.238\ \ 0.919\ \



The listing of the results demonstrates that the signal contains \(N_{s}=33\) countings and \(N_{F}=16\) Fourier frequencies. The values of countings are in the array \(s0\), which are taken from the signal \(S_{0}\) obtained earlier (subsection _Construction and Results_) using the congruential phase generator _cDeonYuliCongPhase62A_ in the program _P070401_. Further, the listing includes the lines _AFourier_ with the derived intensities \(A_{k}\) of the internal phase sine frequencies.