THE PROGRAMS 1. mseq-survey: This is a program for calculating all the crosscorrelation demerit factors for all pairs of additive character sequences over a finite field and then sorting them into bins suitable for making a histogram. A fixed amount of truncation or appending is used for every sequence, and all decimations and rotations (cyclic shifts) are considered. The usage is mseq-survey prime degree trunc_app_ratio lead_coeff ... const_coeff ac_bin cc_bin filename_stem prime is the characteristic p of the field degree is the degree n of the field over the prime field trunc_app_ratio is the truncation/appending ratio: a positive floating point number that indicates what fraction of a full period p^n-1 is to be used (so 1.0 means natural length), and if the user specifies a number that is not an exact integer multiple of 1/(p^n-1), then the program will round to the nearest integer. lead_coeff to const_coeff are the coefficients of the minimal polynomial whose root is the primitive element alpha used in the calculation ac_bin is the width of the histogram bins used to organize the autocorrelation demerit factor values cc_bin is the width of the histogram bins used to organize the crosscorrelation demerit factor values filename_stem is the base name for the six output files, which will be named filename_stem-summary.txt (gives a summary account of the calculation) filename_stem-auto.txt (crosscorrelation demerit factors of sequences with themselves, that is, same decimation and rotation, so you can subtract 1 to get autocorrelation demerit factor: first column is bin number, second column is population) filename_stem-same.txt (crosscorrelation demerit factors of sequences with those of same decimation with all possible rotations: first column is bin number, second column is population) filename-stem-rev.txt (crosscorrelation demerit factors of sequences with those of reversed decimation with all possible rotations: first column is bin number, second column is population) filename-stem-other.txt (crosscorrelation demerit factors of sequences with those of neither same nor reversed decimation, with all possible rotations: first column is bin number, second column is population) filename-stem-nontriv.txt (crosscorrelation demerit factors of sequences with those of different---including reversing or other---decimation, with all possible rotations: first column is bin number, second column is population) ------------------------------------------------------------ 2. mseq-rotation: This is a program for calculating the crosscorrelation demerit factor for a pair of additive character sequences as a function of their relative rotation (cyclic shift). It holds the rotation of the first sequence fixed, and runs through all rotations of the second sequence, calculating the crosscorrelation demerit factor at each rotation. The usage is mseq-rotation prime degree trunc_app_ratio lead_coeff ... const_coeff decimation_1 frac_rotation_1 decimation_2 frac_rotation_2 filename_stem prime is the characteristic p of the field degree is the degree n of the field over the prime field trunc_app_ratio is the truncation/appending ratio: a positive floating point number that indicates what fraction of a full period p^n-1 is to be used (so 1.0 means natural length, and if the user specifies a number that is not an exact integer multiple of 1/(p^n-1), then the program will round to the nearest integer. lead_coeff to const_coeff are the coefficients of the minimal polynomial whose root is the primitive element alpha used in the calculation decimation_1 is the decimation for the first sequence in the pair: if decimation 1 is called d_1 and the canonical additive character is psi, then the terms of first sequence will be psi(alpha^(d_1*j)) for a range of consecutive integers j that depend on the rotation frac_rotation_1 is the fractional rotation of the first sequence, that is, the fraction of p^n-1 that the first sequence is rotated, and if this number is not an integer multiple of 1/(p^n-1), then the program will round to the nearest integer. This fractional rotation f will produce a rotation r=f*(p^n-1), and then the first sequence's terms will be psi(alpha^(d_1*j+r)) for a range of j values from 0 up to a number that depends on the truncation/appending ratio. The rotation of the first sequence is held fixed throughout the run of the program decimation_2 is the decimation for the second sequence in the pair frac_rotation_2 is the starting fractional rotation of the second sequence, and then the program rotates is by a single place until it does every rotation. filename_stem is the base name for the two output files, which will be named filename_stem-summary.txt (gives a summary account of the calculation) filename_stem-rotation.txt (first column is the number of places that sequence 2 is rotated from its initial rotation, second column is a floating point approximation of the crosscorrelation demerit factor) ------------------------------------------------------------ 3. mult-rotation: This is a program for calculating the crosscorrelation demerit factor for a pair of unimodularized multiplicative character sequences as a function of their rotation (cyclic shift). The unimodularization is done by replacing 0 values in the multiplicative character sequence with 1. The program cycles both sequences through all their rotations, holding the difference in rotations constant, and it calculates the crosscorrelation demerit factor at each rotation. The usage is mult-rotation prime trunc_app_ratio order_1 char_power_1 order_2 char_power_2 frac_diff_shift filename_stem prime is the order of the prime field in which we are working trunc_app_ratio is the truncation/appending ratio: a positive floating point number that indicates what fraction of a full period p is to be used (so 1.0 means natural length, and if the user specifies a number that is not an exact integer multiple of 1/p), then the program will round to the nearest integer. order_1 is the order of the character for the first sequence char_power_1 determined precisely which multiplicative character of order order_1 is used for the first sequence. If char_power_1=1, then you get the multiplicative character that maps the lowest (considered as an integer from 1 to p-1) primitive element to exp(2*pi*i/order_1). If char_power=k, you get the kth power of the aforementioned character. Naturally, char_power_1 must be coprime to order_1. order_2 and char_power_2 similarly described the character used for the second sequence frac_diff_shift: the fractional difference in rotations of the sequences, that is, the fraction of p that the first sequence is rotated more than the second, and if this number is not an integer multiple of 1/p, then the program will round to the nearest integer. filename_stem is the base name for the two output files, which will be named filename_stem-summary.txt (gives a summary account of the calculation) filename_stem-rotation.txt (first column is the reduction modulo the prime of the sum of the numbers of positions that the first and second sequence are rotated from their natural shifts, the second column is a floating point approximation of the autocorrelation demerit factor of the first sequence, the third column is a floating point approximation of the autocorrelation demerit factor of the second sequence, and the fourth column is a floating point approximation of the crosscorrelation demerit factor of the two sequences) ============================================================ THE DATA, ORGANIZED BY FIGURE Figures 1 and 2. The histogram in Figure 1 and the two histograms in Figure 2 are produced using f-2-to-8-cross-nontriv.txt and f-2-to-8-cross-rev.txt and f-2-to-8-cross-other.txt respectively, whose contents are all described in f-2-to-8-summary.txt and all of these files are produced as outputs by running ./mseq-survey 2 8 1.0 1 0 0 0 1 1 1 0 1 0.002 0.005 f-2-to-8 ------------------------------------------------------------ Figure 3. The two graphs are produced using f-2-to-9-other-rotation.txt (whose contents are described in f-2-to-9-other-summary.txt) and f-2-to-9-rev-rotation.txt (whose contents are described in f-2-to-9-rev-summary.txt), which are produced using ./mseq-rotation 2 9 1.0 1 0 0 0 0 1 0 0 0 1 1 0.0 -1 0.0 f-2-to-9-rev and ./mseq-rotation 2 9 1.0 1 0 0 0 0 1 0 0 0 1 1 0.0 3 0.0 f-2-to-9-other respectively. ------------------------------------------------------------ Figure 4. The two graphs are produced using f-3-to-6-other-rotation.txt (whose contents are described in f-3-to-6-other-summary.txt) and f-3-to-6-rev-rotation.txt (whose contents are described in f-3-to-6-rev-summary.txt), which are produced using ./mseq-rotation 3 6 1.0 1 0 0 0 0 1 2 1 0.0 -1 0.0 f-3-to-6-rev and ./mseq-rotation 3 6 1.0 1 0 0 0 0 1 2 1 0.0 5 0.0 f-3-to-6-other respectively. ------------------------------------------------------------ Figure 5. The two graphs are produced using f-2-to-9-app-other-rotation.txt (whose contents are described in f-2-to-9-app-other-summary.txt) and f-2-to-9-app-rev-rotation.txt (whose contents are described in f-2-to-9-app-rev-summary.txt), which are produced using ./mseq-rotation 2 9 1.115749 1 0 0 0 0 1 0 0 0 1 1 0.0 -1 0.0 f-2-to-9-app-rev and ./mseq-rotation 2 9 1.115749 1 0 0 0 0 1 0 0 0 1 1 0.0 3 0.0 f-2-to-9-app-other respectively. ------------------------------------------------------------ Figure 6. The two graphs are produced using f-2-to-9-trunc-other-rotation.txt (whose contents are described in f-2-to-9-trunc-other-summary.txt) and f-2-to-9-trunc-rev-rotation.txt (whose contents are described in f-2-to-9-trunc-rev-summary.txt), which are produced using ./mseq-rotation 2 9 0.557874 1 0 0 0 0 1 0 0 0 1 1 0.0 -1 0.0 f-2-to-9-trunc-rev and ./mseq-rotation 2 9 0.557874 1 0 0 0 0 1 0 0 0 1 1 0.0 3 0.0 f-2-to-9-trunc-other respectively. ------------------------------------------------------------ Figure 7. The graph is produced using legendre-257-trunc-rotation.txt (whose contents are described in legendre-257-trunc-summary.txt) which is produced using ./mult-rotation 257 0.557874 2 1 2 1 0.4999999999999 legendre-257-trunc ------------------------------------------------------------ Figure 8. The graph is produced using legendre-257-half-rotation.txt (whose contents are described in legendre-257-half-summary.txt) which is produced using ./mult-rotation 257 0.4999999999999 2 1 2 1 0.4999999999999 legendre-257-half