Changeset 7421:d1d1db9cb07b
- Timestamp:
- 11/21/07 07:15:44 (6 years ago)
- Branch:
- default
- File:
-
- 1 edited
-
sage/rings/finite_field_ntl_gf2e.pyx (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sage/rings/finite_field_ntl_gf2e.pyx
r7366 r7421 118 118 GF = sage.rings.finite_field.GF 119 119 120 cdef extern from "arpa/inet.h": 121 unsigned int htonl(unsigned int) 122 123 cdef little_endian(): 124 return htonl(1) != 1 125 126 cdef unsigned int switch_endianess(unsigned int i): 127 cdef int j 128 cdef unsigned int ret = 0 129 for j from 0 <= j < sizeof(int): 130 (<unsigned char*>&ret)[j] = (<unsigned char*>&i)[sizeof(int)-j-1] 131 return ret 132 120 133 cdef class FiniteField_ntl_gf2e(FiniteField): 121 134 """ … … 980 993 sage: int(a^2 + 1) 981 994 5 982 """ 983 cdef unsigned long i = 0 995 sage: k.<a> = GF(2^70) 996 sage: int(a^65 + a^64 + 1) 997 55340232221128654849L 998 """ 999 cdef unsigned int i = 0 984 1000 ret = int(0) 985 1001 cdef unsigned long shift = 0 … … 989 1005 return 0 990 1006 991 while GF2X_deg(r) >= sizeof(long)*8: 992 BytesFromGF2X(<unsigned char *>&i, r, sizeof(long)) 1007 if little_endian(): 1008 while GF2X_deg(r) >= sizeof(int)*8: 1009 BytesFromGF2X(<unsigned char *>&i, r, sizeof(int)) 1010 ret += int(i) << shift 1011 shift += sizeof(int)*8 1012 GF2X_RightShift(r,r,(sizeof(int)*8)) 1013 BytesFromGF2X(<unsigned char *>&i, r, sizeof(int)) 993 1014 ret += int(i) << shift 994 shift += sizeof(long)*8 995 GF2X_RightShift(r,r,(sizeof(long)*8)) 996 997 BytesFromGF2X(<unsigned char *>&i, r, sizeof(long)) 998 ret += int(i) << shift 1015 else: 1016 while GF2X_deg(r) >= sizeof(int)*8: 1017 BytesFromGF2X(<unsigned char *>&i, r, sizeof(int)) 1018 ret += int(switch_endianess(i)) << shift 1019 shift += sizeof(int)*8 1020 GF2X_RightShift(r,r,(sizeof(int)*8)) 1021 BytesFromGF2X(<unsigned char *>&i, r, sizeof(int)) 1022 ret += int(switch_endianess(i)) << shift 999 1023 1000 1024 return int(ret)
Note: See TracChangeset
for help on using the changeset viewer.
