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 = (ord(self.b2i[posLen - 1 - j]) - ord('0'))
k = int(self.b2i[posLen - 1 - j])
if k > 0:
if k > 0:
sum = sum + prod * k
sum += prod * k
prod = prod * QuaterImaginary.twoI
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 = (ord(self.b2i[j]) - ord('0'))
k = int(self.b2i[j])
if k > 0:
if k > 0:
sum = sum + prod * k
sum += prod * k
prod = prod * QuaterImaginary.invTwoI
prod *= QuaterImaginary.invTwoI
return sum
return sum


Line 2,753: Line 2,753:
ss = ""
ss = ""
while re != 0:
while re != 0:
rem = re % -4
re, rem = divmod(re, -4)
re = re / -4
if rem < 0:
if rem < 0:
rem = 4 + rem
rem += 4
re = re + 1
re += 1
ss = ss + str(rem) + '0'
ss += str(rem) + '0'
if im != 0:
if im != 0:
f = (complex(0, c.imag) / complex(0, 2)).real
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 % -4
im, rem = divmod(im, -4)
im = im / -4
if rem < 0:
if rem < 0:
rem = 4 + rem
rem += 4
im = im + 1
im += 1
if index < len(ss):
if index < len(ss):
ss[index] = chr(rem + 48)
ss[index] = str(rem)
else:
else:
ss = ss + '0' + str(rem)
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 = ss + '.' + str(fi)
ss += '.' + str(fi)
ss = ss.lstrip('0')
ss = ss.lstrip('0')
if ss[0] == '.':
if ss[0] == '.':