diff options
| author | Jorge E. Moreira <jemoreira@google.com> | 2019-12-11 15:08:34 -0800 |
|---|---|---|
| committer | Jorge E. Moreira <jemoreira@google.com> | 2019-12-17 14:37:35 -0800 |
| commit | 1904160d088401788daf6b5d1130819f087ff946 (patch) | |
| tree | e2ae02b85987f58f3b30bac84dfee8c0681cccfa /test/lfsr.c | |
| parent | 235513aa13d973d931202dfcca8b47a4a750a5e4 (diff) | |
| parent | c5a5f74e15e9b36507b6aa8009edfd81566f052f (diff) | |
| download | platform_external_libsrtp2-android10-gsi.tar.gz platform_external_libsrtp2-android10-gsi.tar.bz2 platform_external_libsrtp2-android10-gsi.zip | |
Merge remote-tracking branch 'goog/qt-gsi'platform-tools-30.0.1platform-tools-30.0.0platform-tools-29.0.6android-vts-11.0_r5android-vts-11.0_r4android-vts-11.0_r3android-vts-11.0_r2android-vts-11.0_r1android-security-11.0.0_r1android-r-preview-4android-r-preview-3android-r-preview-2android-r-preview-1android-platform-11.0.0_r9android-platform-11.0.0_r8android-platform-11.0.0_r7android-platform-11.0.0_r6android-platform-11.0.0_r5android-platform-11.0.0_r4android-platform-11.0.0_r3android-platform-11.0.0_r2android-platform-11.0.0_r10android-platform-11.0.0_r1android-mainline-11.0.0_r9android-mainline-11.0.0_r8android-mainline-11.0.0_r7android-mainline-11.0.0_r6android-mainline-11.0.0_r5android-mainline-11.0.0_r44android-mainline-11.0.0_r43android-mainline-11.0.0_r42android-mainline-11.0.0_r41android-mainline-11.0.0_r40android-mainline-11.0.0_r4android-mainline-11.0.0_r39android-mainline-11.0.0_r38android-mainline-11.0.0_r37android-mainline-11.0.0_r36android-mainline-11.0.0_r35android-mainline-11.0.0_r34android-mainline-11.0.0_r33android-mainline-11.0.0_r32android-mainline-11.0.0_r31android-mainline-11.0.0_r30android-mainline-11.0.0_r3android-mainline-11.0.0_r29android-mainline-11.0.0_r28android-mainline-11.0.0_r27android-mainline-11.0.0_r26android-mainline-11.0.0_r25android-mainline-11.0.0_r24android-mainline-11.0.0_r23android-mainline-11.0.0_r22android-mainline-11.0.0_r21android-mainline-11.0.0_r20android-mainline-11.0.0_r2android-mainline-11.0.0_r19android-mainline-11.0.0_r18android-mainline-11.0.0_r17android-mainline-11.0.0_r16android-mainline-11.0.0_r15android-mainline-11.0.0_r14android-mainline-11.0.0_r13android-mainline-11.0.0_r12android-mainline-11.0.0_r10android-mainline-11.0.0_r1android-cts-11.0_r5android-cts-11.0_r4android-cts-11.0_r3android-cts-11.0_r2android-cts-11.0_r1android-11.0.0_r9android-11.0.0_r8android-11.0.0_r7android-11.0.0_r5android-11.0.0_r45android-11.0.0_r44android-11.0.0_r43android-11.0.0_r42android-11.0.0_r41android-11.0.0_r40android-11.0.0_r4android-11.0.0_r39android-11.0.0_r38android-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android-11.0.0_r31android-11.0.0_r30android-11.0.0_r3android-11.0.0_r29android-11.0.0_r28android-11.0.0_r27android-11.0.0_r26android-11.0.0_r25android-11.0.0_r24android-11.0.0_r23android-11.0.0_r22android-11.0.0_r21android-11.0.0_r20android-11.0.0_r2android-11.0.0_r19android-11.0.0_r18android-11.0.0_r17android-11.0.0_r16android-11.0.0_r15android-11.0.0_r14android-11.0.0_r13android-11.0.0_r12android-11.0.0_r11android-11.0.0_r10android-11.0.0_r1android11-tests-releaseandroid11-security-releaseandroid11-s1-releaseandroid11-releaseandroid11-qpr3-s1-releaseandroid11-qpr3-releaseandroid11-qpr2-releaseandroid11-qpr1-s2-releaseandroid11-qpr1-s1-releaseandroid11-qpr1-releaseandroid11-qpr1-d-s1-releaseandroid11-qpr1-d-releaseandroid11-qpr1-c-releaseandroid11-platform-releaseandroid11-mainline-tethering-releaseandroid11-mainline-sparse-2021-jan-releaseandroid11-mainline-sparse-2020-dec-releaseandroid11-mainline-releaseandroid11-mainline-permission-releaseandroid11-mainline-os-statsd-releaseandroid11-mainline-networkstack-releaseandroid11-mainline-media-swcodec-releaseandroid11-mainline-media-releaseandroid11-mainline-extservices-releaseandroid11-mainline-documentsui-releaseandroid11-mainline-conscrypt-releaseandroid11-mainline-cellbroadcast-releaseandroid11-mainline-captiveportallogin-releaseandroid11-devandroid11-d2-releaseandroid11-d1-s7-releaseandroid11-d1-s6-releaseandroid11-d1-s5-releaseandroid11-d1-s1-releaseandroid11-d1-releaseandroid11-d1-b-releaseandroid10-gsi
Change-Id: I3510ee0d511351112102c8f8e851097066597a4b
Diffstat (limited to 'test/lfsr.c')
| -rw-r--r-- | test/lfsr.c | 310 |
1 files changed, 0 insertions, 310 deletions
diff --git a/test/lfsr.c b/test/lfsr.c deleted file mode 100644 index 28ea02e..0000000 --- a/test/lfsr.c +++ /dev/null @@ -1,310 +0,0 @@ -/* - * lfsr.c - * - */ - - -#include <stdio.h> -#include "datatypes.h" - -uint32_t -parity(uint32_t x) { - - x ^= (x >> 16); - x ^= (x >> 8); - x ^= (x >> 4); - x ^= (x >> 2); - x ^= (x >> 1); - - return x & 1; -} - - -/* typedef struct { */ -/* uint32_t register[8]; */ -/* } lfsr_t; */ - -void -compute_period(uint32_t feedback_polynomial) { - int i; - v32_t lfsr; - v32_t mask; - - mask.value = feedback_polynomial; - lfsr.value = 1; - - printf("polynomial: %s\t", v32_bit_string(mask)); - - for (i=0; i < 256; i++) { -/* printf("%s\n", v32_bit_string(lfsr)); */ - if (parity(mask.value & lfsr.value)) - lfsr.value = ((lfsr.value << 1) | 1) & 0xff; - else - lfsr.value = (lfsr.value << 1) & 0xff; - - /* now halt if we're back at the initial state */ - if (lfsr.value == 1) { - printf("period: %d\n", i); - break; - } - } -} - -uint32_t poly0 = 223; - - -uint32_t polynomials[39] = { -31, -47, -55, -59, -61, -79, -87, -91, -103, -107, -109, -115, -117, -121, -143, -151, -157, -167, -171, -173, -179, -181, -185, -199, -203, -205, -211, -213, -227, -229, -233, -241, -127, -191, -223, -239, -247, -251, -253 -}; - -char binary_string[32]; - -char * -u32_bit_string(uint32_t x, unsigned int length) { - unsigned int mask; - int index; - - mask = 1 << length; - index = 0; - for (; mask > 0; mask >>= 1) - if ((x & mask) == 0) - binary_string[index++] = '0'; - else - binary_string[index++] = '1'; - - binary_string[index++] = 0; /* NULL terminate string */ - return binary_string; -} - -extern int octet_weight[256]; - -unsigned int -weight(uint32_t poly) { - int wt = 0; - - /* note: endian-ness makes no difference */ - wt += octet_weight[poly & 0xff]; - wt += octet_weight[(poly >> 8) & 0xff]; - wt += octet_weight[(poly >> 16) & 0xff]; - wt += octet_weight[(poly >> 24)]; - - return wt; -} - -#define MAX_PERIOD 65535 - -#define debug_print 0 - -int -period(uint32_t poly) { - int i; - uint32_t x; - - - /* set lfsr to 1 */ - x = 1; -#if debug_print - printf("%d:\t%s\n", 0, u32_bit_string(x,8)); -#endif - for (i=1; i < MAX_PERIOD; i++) { - if (x & 1) - x = (x >> 1) ^ poly; - else - x = (x >> 1); - -#if debug_print - /* print for a sanity check */ - printf("%d:\t%s\n", i, u32_bit_string(x,8)); -#endif - - /* check for return to original value */ - if (x == 1) - return i; - } - return i; -} - -/* - * weight distribution computes the weight distribution of the - * code generated by the polynomial poly - */ - -#define MAX_LEN 8 -#define MAX_WEIGHT (1 << MAX_LEN) - -int A[MAX_WEIGHT+1]; - -void -weight_distribution2(uint32_t poly, int *A) { - int i; - uint32_t x; - - /* zeroize array */ - for (i=0; i < MAX_WEIGHT+1; i++) - A[i] = 0; - - /* loop over all input sequences */ - - - /* set lfsr to 1 */ - x = 1; -#if debug_print - printf("%d:\t%s\n", 0, u32_bit_string(x,8)); -#endif - for (i=1; i < MAX_PERIOD; i++) { - if (x & 1) - x = (x >> 1) ^ poly; - else - x = (x >> 1); - -#if debug_print - /* print for a sanity check */ - printf("%d:\t%s\n", i, u32_bit_string(x,8)); -#endif - - /* increment weight */ - wt += (x & 1); - - /* check for return to original value */ - if (x == 1) - break; - } - - /* set zero */ - A[0] = 0; -} - - -void -weight_distribution(uint32_t poly, int *A) { - int i; - uint32_t x; - - /* zeroize array */ - for (i=0; i < MAX_WEIGHT+1; i++) - A[i] = 0; - - /* set lfsr to 1 */ - x = 1; -#if debug_print - printf("%d:\t%s\n", 0, u32_bit_string(x,8)); -#endif - for (i=1; i < MAX_PERIOD; i++) { - if (x & 1) - x = (x >> 1) ^ poly; - else - x = (x >> 1); - -#if debug_print - /* print for a sanity check */ - printf("%d:\t%s\n", i, u32_bit_string(x,8)); -#endif - - /* compute weight, increment proper element */ - A[weight(x)]++; - - /* check for return to original value */ - if (x == 1) - break; - } - - /* set zero */ - A[0] = 0; -} - - - - -int -main () { - - int i,j; - v32_t x; - v32_t p; - - /* originally 0xaf */ - p.value = 0x9; - - printf("polynomial: %s\tperiod: %d\n", - u32_bit_string(p.value,8), period(p.value)); - - /* compute weight distribution */ - weight_distribution(p.value, A); - - /* print weight distribution */ - for (i=0; i <= 8; i++) { - printf("A[%d]: %d\n", i, A[i]); - } - -#if 0 - for (i=0; i < 39; i++) { - printf("polynomial: %s\tperiod: %d\n", - u32_bit_string(polynomials[i],8), period(polynomials[i])); - - /* compute weight distribution */ - weight_distribution(p.value, A); - - /* print weight distribution */ - for (j=0; j <= 8; j++) { - printf("A[%d]: %d\n", j, A[j]); - } - } -#endif - - { - int bits = 8; - uint32_t y; - for (y=0; y < (1 << bits); y++) { - printf("polynomial: %s\tweight: %d\tperiod: %d\n", - u32_bit_string(y,bits), weight(y), period(y)); - - /* compute weight distribution */ - weight_distribution(y, A); - - /* print weight distribution */ - for (j=0; j <= 8; j++) { - printf("A[%d]: %d\n", j, A[j]); - } - } - } - - return 0; -} |
