add an internal implementation of bin function (bin2str) that is appeared

only in python 2.6
This commit is contained in:
2010-03-02 14:14:03 +00:00
parent 30d834cdc3
commit 83c315db99
2 changed files with 1137 additions and 861 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,26 @@ Created on 2 juil. 2009
@author: coissac @author: coissac
''' '''
cdef import from "math.h":
double ceil(double x)
double log(double x)
cdef int binarywordsize(unsigned long long int x):
return <int>ceil(log(x)/log(2))
cpdef str bin2str(unsigned long long int x):
cdef str rep=''
cdef unsigned long long int i
cdef int ws = binarywordsize(x)
for i in range(ws):
if x & (1 << i):
rep = '1' + rep
else:
rep = '0' + rep
return rep
cdef class WordPattern : cdef class WordPattern :
cdef public unsigned long long int a cdef public unsigned long long int a
@@ -22,10 +42,10 @@ cdef class WordPattern :
self.t=t self.t=t
def __str__(self): def __str__(self):
return b"(a:%s,c:%s,g:%s,t:%s)" % (bin(self.a), return b"(a:%s,c:%s,g:%s,t:%s)" % (bin2str(self.a),
bin(self.c), bin2str(self.c),
bin(self.g), bin2str(self.g),
bin(self.t)) bin2str(self.t))
cdef unsigned int bitCount(unsigned long long int x): cdef unsigned int bitCount(unsigned long long int x):
cdef unsigned int i=0 cdef unsigned int i=0