40 memset(lx_matrix, 0, dim * dim *
sizeof(
double));
41 memset(ly_matrix, 0, dim * dim *
sizeof(
double));
42 memset(lz_matrix, 0, dim * dim *
sizeof(
double));
44 double *lx_matrix_csh = calloc(dim * dim,
sizeof(
double));
45 double *ly_matrix_csh = calloc(dim * dim,
sizeof(
double));
46 double *lz_matrix_csh = calloc(dim * dim,
sizeof(
double));
49 ly_matrix_csh, lz_matrix_csh);
51 for (
int m1 = -L; m1 <= L; m1++) {
52 for (
int m2 = -L; m2 <= L; m2++) {
55 double complex a1, b1;
56 double complex a2, b2;
65 double complex lx = 0.0 + 0.0 * I;
66 lx += conj(a1) * a2 * lx_matrix_csh[dim * (m1m + L) + (m2m + L)];
67 lx += conj(a1) * b2 * lx_matrix_csh[dim * (m1m + L) + (m2p + L)];
68 lx += conj(b1) * a2 * lx_matrix_csh[dim * (m1p + L) + (m2m + L)];
69 lx += conj(b1) * b2 * lx_matrix_csh[dim * (m1p + L) + (m2p + L)];
71 double complex ly = 0.0 + 0.0 * I;
72 ly += conj(a1) * a2 * ly_matrix_csh[dim * (m1m + L) + (m2m + L)];
73 ly += conj(a1) * b2 * ly_matrix_csh[dim * (m1m + L) + (m2p + L)];
74 ly += conj(b1) * a2 * ly_matrix_csh[dim * (m1p + L) + (m2m + L)];
75 ly += conj(b1) * b2 * ly_matrix_csh[dim * (m1p + L) + (m2p + L)];
77 double complex lz = 0.0 + 0.0 * I;
78 lz += conj(a1) * a2 * lz_matrix_csh[dim * (m1m + L) + (m2m + L)];
79 lz += conj(a1) * b2 * lz_matrix_csh[dim * (m1m + L) + (m2p + L)];
80 lz += conj(b1) * a2 * lz_matrix_csh[dim * (m1p + L) + (m2m + L)];
81 lz += conj(b1) * b2 * lz_matrix_csh[dim * (m1p + L) + (m2p + L)];
83 lx_matrix[(m1 + L) * dim + (m2 + L)] = cimag(lx);
84 ly_matrix[(m1 + L) * dim + (m2 + L)] = -creal(ly);
85 lz_matrix[(m1 + L) * dim + (m2 + L)] = cimag(lz);
105 memset(lx_matrix, 0, dim * dim *
sizeof(
double));
106 memset(ly_matrix, 0, dim * dim *
sizeof(
double));
107 memset(lz_matrix, 0, dim * dim *
sizeof(
double));
109 for (
int m1 = -L; m1 <= L; m1++) {
110 for (
int m2 = -L; m2 <= L; m2++) {
112 double lz = m2 * (m1 == m2);
113 double lp = sqrt((L - m2) * (L + m2 + 1)) * (m1 == m2 + 1);
114 double lm = sqrt((L + m2) * (L - m2 + 1)) * (m1 == m2 - 1);
115 double lx = 0.5 * (lp + lm);
116 double ly = 0.5 * (lp - lm);
118 lx_matrix[(m1 + L) * dim + (m2 + L)] = lx;
119 ly_matrix[(m1 + L) * dim + (m2 + L)] = ly;
120 lz_matrix[(m1 + L) * dim + (m2 + L)] = lz;