def name_nbit2numpy(name, nbit):
if name == 'i':
if nbit == 8: return np.int8
elif nbit == 16: return np.int16
elif nbit == 32: return np.int32
elif nbit == 64: return np.int64
else: raise TypeError("Invalid signed integer type size: %i" % nbit)
elif name == 'u':
if nbit == 8: return np.uint8
elif nbit == 16: return np.uint16
elif nbit == 32: return np.uint32
elif nbit == 64: return np.uint64
else: raise TypeError("Invalid unsigned integer type size: %i" % nbit)
elif name == 'f':
if nbit == 16: return np.float16
elif nbit == 32: return np.float32
elif nbit == 64: return np.float64
elif nbit == 128: return np.float128
else: raise TypeError("Invalid floating-point type size: %i" % nbit)
elif name == 'ci':
if nbit == 8: return ci8
elif nbit == 16: return ci16
elif nbit == 32: return ci32
# elif name in set(['ci', 'cu']):
# Note: This gives integer types in place of proper complex types
# return name_nbit2numpy(name[1:], nbit*2)
elif name == 'cf':
if nbit == 16: return cf16
elif nbit == 32: return np.complex64
elif nbit == 64: return np.complex128
elif nbit == 128: return np.complex256
else: raise TypeError("Invalid complex floating-point type size: %i" %
nbit)
else:
raise TypeError("Invalid type name: " + name)
评论列表
文章目录