C string representation methods for python wrappers.
Former-commit-id: a4f7cb22524a4b154322049027dba0fd33dcf6cb
This commit is contained in:
parent
efaf3211e4
commit
799fb5f09a
|
@ -6,6 +6,10 @@ import cmath
|
||||||
from qpms_cdefs cimport *
|
from qpms_cdefs cimport *
|
||||||
cimport cython
|
cimport cython
|
||||||
from cython.parallel cimport parallel, prange
|
from cython.parallel cimport parallel, prange
|
||||||
|
|
||||||
|
import math # for copysign in crep methods
|
||||||
|
#import re # TODO for crep methods?
|
||||||
|
|
||||||
#cimport openmp
|
#cimport openmp
|
||||||
#openmp.omp_set_dynamic(1)
|
#openmp.omp_set_dynamic(1)
|
||||||
|
|
||||||
|
@ -620,6 +624,17 @@ cdef class trans_calculator:
|
||||||
# TODO make possible to access the attributes (to show normalization etc)
|
# TODO make possible to access the attributes (to show normalization etc)
|
||||||
|
|
||||||
|
|
||||||
|
def complex_crep(complex c, parentheses = False, shortI = True, has_Imaginary = False):
|
||||||
|
'''
|
||||||
|
Return a C-code compatible string representation of a (python) complex number.
|
||||||
|
'''
|
||||||
|
return ( ('(' if parentheses else '')
|
||||||
|
+ repr(c.real)
|
||||||
|
+ ('+' if math.copysign(1, c.imag) >= 0 else '')
|
||||||
|
+ repr(c.imag)
|
||||||
|
+ ('*I' if shortI else '*_Imaginary_I' if has_Imaginary else '*_Complex_I')
|
||||||
|
+ (')' if parentheses else '')
|
||||||
|
)
|
||||||
|
|
||||||
# Quaternions from wigner.h
|
# Quaternions from wigner.h
|
||||||
# (mainly for testing; use moble's quaternions in python)
|
# (mainly for testing; use moble's quaternions in python)
|
||||||
|
@ -718,6 +733,12 @@ cdef class cquat:
|
||||||
p.ck = wxyz[3]
|
p.ck = wxyz[3]
|
||||||
self.q = qpms_quat_2c_from_4d(p)
|
self.q = qpms_quat_2c_from_4d(p)
|
||||||
|
|
||||||
|
def crepr(self):
|
||||||
|
'''
|
||||||
|
Returns a string that can be used in C code to initialise a qpms_irot3_t
|
||||||
|
'''
|
||||||
|
return '{' + complex_crep(self.q.a) + ', ' + complex_crep(self.q.b) + '}'
|
||||||
|
|
||||||
def wignerDelem(self, qpms_l_t l, qpms_m_t mp, qpms_m_t m):
|
def wignerDelem(self, qpms_l_t l, qpms_m_t mp, qpms_m_t m):
|
||||||
'''
|
'''
|
||||||
Returns an element of a bosonic Wigner matrix.
|
Returns an element of a bosonic Wigner matrix.
|
||||||
|
@ -766,6 +787,12 @@ cdef class irot3:
|
||||||
def __repr__(self): # TODO make this look like a quaternion with i,j,k
|
def __repr__(self): # TODO make this look like a quaternion with i,j,k
|
||||||
return '(' + repr(self.rot) + ', ' + repr(self.det) + ')'
|
return '(' + repr(self.rot) + ', ' + repr(self.det) + ')'
|
||||||
|
|
||||||
|
def crepr(self):
|
||||||
|
'''
|
||||||
|
Returns a string that can be used in C code to initialise a qpms_irot3_t
|
||||||
|
'''
|
||||||
|
return '{' + self.rot.crepr() + ', ' + repr(self.det) + '}'
|
||||||
|
|
||||||
def __mul__(irot3 self, irot3 other):
|
def __mul__(irot3 self, irot3 other):
|
||||||
res = irot3(cquat(1,0,0,0), 1)
|
res = irot3(cquat(1,0,0,0), 1)
|
||||||
res.qd = qpms_irot3_mult(self.qd, other.qd)
|
res.qd = qpms_irot3_mult(self.qd, other.qd)
|
||||||
|
|
Loading…
Reference in New Issue