50 for ( M = J; J >= -M; M -= 2 ) {
51 int len = ( (
_j1 +
_j2 ) -
abs( M ) ) / 2 + 1;
54 _table[( J -
_Jmin ) / 2][( M + J ) / 2].resize( len );
64 int n = (
_Jmax - J ) / 2 + 1;
65 std::vector<double>* vectors =
new std::vector<double>[n - 1];
67 for ( i = 0; i < n - 1; i++ ) {
69 vectors[i].resize( n );
70 for ( k = 0; k < n; k++ ) {
72 [( J +
_Jmax - 2 * i ) / 2][k];
79 if ( orth[n - 1] < 0.0 )
81 for ( k = 0; k < n; k++ ) {
86 for ( M = J - 2; M >= -J; M -= 2 ) {
87 int len = ( (
_j1 +
_j2 ) -
abs( M ) ) / 2 + 1;
94 for ( m1 = mmin; m1 < mmin + len * 2; m1 += 2 ) {
97 float fkwTmp =
_j1 * (
_j1 + 2 ) - ( m1 + 2 ) * m1;
103 sum += 0.5 * sqrt( fkwTmp ) *
cg( J, M + 2, m1 + 2, m2 );
104 fkwTmp =
_j2 * (
_j2 + 2 ) - ( m2 + 2 ) * m2;
106 sum += 0.5 * sqrt( fkwTmp ) *
cg( J, M + 2, m1, m2 + 2 );
107 fkwTmp = J * ( J + 2 ) - ( M + 2 ) * M;
108 sum /= ( 0.5 * sqrt( fkwTmp ) );
109 cg( J, M, m1, m2 ) = sum;
122 return cg( J, M, m1, m2 );
127 assert( M == m1 + m2 );
129 assert(
abs( M ) <= J );
130 assert( J <=
_Jmax );
131 assert( J >=
_Jmin );
132 assert(
abs( m1 ) <=
_j1 );
133 assert(
abs( m2 ) <=
_j2 );
144 return _table[( J -
_Jmin ) / 2][( M + J ) / 2][n / 2];
void init(int j1, int j2)
std::vector< std::vector< std::vector< double > > > _table
double & cg(int J, int M, int m1, int m2)
double coef(int J, int M, int j1, int j2, int m1, int m2)
double abs(const EvtComplex &c)
std::vector< double > getOrthogVector()