Imaginary base numbers: Difference between revisions
Content added Content deleted
Line 2,728: | Line 2,728: | ||
prod = complex(1, 0) |
prod = complex(1, 0) |
||
for j in xrange(0, posLen): |
for j in xrange(0, posLen): |
||
k = |
k = int(self.b2i[posLen - 1 - j]) |
||
if k > 0: |
if k > 0: |
||
sum += prod * k |
|||
prod *= QuaterImaginary.twoI |
|||
if pointPos != -1: |
if pointPos != -1: |
||
prod = QuaterImaginary.invTwoI |
prod = QuaterImaginary.invTwoI |
||
for j in xrange(posLen + 1, len(self.b2i)): |
for j in xrange(posLen + 1, len(self.b2i)): |
||
k = |
k = int(self.b2i[j]) |
||
if k > 0: |
if k > 0: |
||
sum += prod * k |
|||
prod *= QuaterImaginary.invTwoI |
|||
return sum |
return sum |
||
Line 2,753: | Line 2,753: | ||
ss = "" |
ss = "" |
||
while re != 0: |
while re != 0: |
||
rem = re |
re, rem = divmod(re, -4) |
||
re = re / -4 |
|||
if rem < 0: |
if rem < 0: |
||
rem = 4 |
rem += 4 |
||
re += 1 |
|||
ss += str(rem) + '0' |
|||
if im != 0: |
if im != 0: |
||
f = |
f = c.imag / 2 |
||
im = int(math.ceil(f)) |
im = int(math.ceil(f)) |
||
f = -4 * (f - im) |
f = -4 * (f - im) |
||
index = 1 |
index = 1 |
||
while im != 0: |
while im != 0: |
||
rem = im |
im, rem = divmod(im, -4) |
||
im = im / -4 |
|||
if rem < 0: |
if rem < 0: |
||
rem = 4 |
rem += 4 |
||
im += 1 |
|||
if index < len(ss): |
if index < len(ss): |
||
ss[index] = |
ss[index] = str(rem) |
||
else: |
else: |
||
ss += '0' + str(rem) |
|||
index = index + 2 |
index = index + 2 |
||
fi = int(f) |
fi = int(f) |
||
ss = ss[::-1] |
ss = ss[::-1] |
||
if fi != -1: |
if fi != -1: |
||
ss += '.' + str(fi) |
|||
ss = ss.lstrip('0') |
ss = ss.lstrip('0') |
||
if ss[0] == '.': |
if ss[0] == '.': |