34 double sn1 = 1.0 / (rhs.
va[0] * rhs.
va[0] + rhs.
va[1] * rhs.
va[1]
35 + rhs.
va[2] * rhs.
va[2] + rhs.
va[3] * rhs.
va[3]
36 + rhs.
va[4] * rhs.
va[4] + rhs.
va[5] * rhs.
va[5]);
39 va[0] = rhs.
va[0] * sn1;
40 va[1] = rhs.
va[1] * sn1;
41 va[2] = rhs.
va[2] * sn1;
42 va[3] = rhs.
va[3] * sn1;
43 va[4] = rhs.
va[4] * sn1;
44 va[5] = rhs.
va[5] * sn1;
46 double sp1r =
va[0] * rhs.
va[6] +
va[1] * rhs.
va[7]
47 +
va[2] * rhs.
va[8] +
va[3] * rhs.
va[9]
48 +
va[4] * rhs.
va[10] +
va[5] * rhs.
va[11];
49 double sp1i =
va[0] * rhs.
va[7] -
va[1] * rhs.
va[6]
50 +
va[2] * rhs.
va[9] -
va[3] * rhs.
va[8]
51 +
va[4] * rhs.
va[11] -
va[5] * rhs.
va[10];
53 va[6] = rhs.
va[6] - sp1r *
va[0] + sp1i *
va[1];
54 va[7] = rhs.
va[7] - sp1r * va[1] - sp1i * va[0];
55 va[8] = rhs.
va[8] - sp1r * va[2] + sp1i * va[3];
56 va[9] = rhs.
va[9] - sp1r * va[3] - sp1i * va[2];
57 va[10] = rhs.
va[10] - sp1r * va[4] + sp1i * va[5];
58 va[11] = rhs.
va[11] - sp1r * va[5] - sp1i * va[4];
60 double sn2 = 1.0 / (va[6] * va[6] + va[7] * va[7]
61 + va[8] * va[8] + va[9] * va[9]
62 + va[10] * va[10] + va[11] * va[11]);
69 va[10] = va[10] * sn2;
70 va[11] = va[11] * sn2;
72 va[12] = va[2] * va[10] - va[3] * va[11]
73 - va[4] * va[8] + va[5] * va[9];
75 va[13] = -va[2] * va[11] - va[3] * va[10]
76 + va[4] * va[9] + va[5] * va[8];
78 va[14] = va[4] * va[6] - va[5] * va[7]
79 - va[0] * va[10] + va[1] * va[11];
81 va[15] = -va[4] * va[7] - va[5] * va[6]
82 + va[0] * va[11] + va[1] * va[10];
84 va[16] = va[0] * va[8] - va[1] * va[9]
85 - va[2] * va[6] + va[3] * va[7];
87 va[17] = -va[0] * va[9] - va[1] * va[8]
88 + va[2] * va[7] + va[3] * va[6];
102 static const double PI = 4.0 * atan(1.0);
103 double PI2 = 2.0 * PI;
105 for (
int j = 0; j <
m_Nc; ++j) {
106 int j2 = j * 2 *
m_Nc;
107 double rn1 = rand->
get();
108 double rn2 = rand->
get();
109 double rn3 = rand->
get();
110 double rn4 = rand->
get();
111 double rn5 = rand->
get();
113 double c1 = 1.0 - 2.0 * rn1;
114 double s1 = sqrt(1.0 - c1 * c1);
115 double v1_2 = s1 * cos(PI2 * rn2);
116 double v1_3 = s1 * sin(PI2 * rn2);
118 va[j2 + 0] = c1 * cos(PI2 * rn3);
119 va[j2 + 1] = c1 * sin(PI2 * rn3);
120 va[j2 + 2] = v1_2 * cos(PI2 * rn4);
121 va[j2 + 3] = v1_2 * sin(PI2 * rn4);
122 va[j2 + 4] = v1_3 * cos(PI2 * rn5);
123 va[j2 + 5] = v1_3 * sin(PI2 * rn5);