35 std::vector<int> temp;
38 for ( i = 0; i <
n; i++ )
40 _orthogVector.push_back( 0. );
44 findOrthog( _dimen, temp, vectors );
49void EvtOrthogVector::findOrthog(
int dim, std::vector<int> invect,
50 std::vector<double>* vectors ) {
54 _holder[0] = invect[0];
55 _holder[1] = invect[1];
56 int sign = findEvenOddSwaps();
60 for ( i = 1; i < _dimen; i++ ) { addition *= vectors[i - 1][_holder[i]]; }
62 _orthogVector[_holder[0]] += addition;
65 _holder[0] = invect[1];
66 _holder[1] = invect[0];
71 for ( i = 1; i < _dimen; i++ ) { addition *= vectors[i - 1][_holder[i]]; }
73 _orthogVector[_holder[0]] -= addition;
80 std::vector<int> temp( ( 2 * dim ) );
83 for ( i = 0; i < dim; i++ ) temp[i] = invect[i];
84 for ( i = 0; i < dim; i++ ) temp[i + dim] = invect[i];
86 for ( i = 0; i < dim; i++ )
88 _holder[dim - 1] = temp[dim - 1 + i];
89 std::vector<int> tempDim( ( dim - 1 ) );
92 for ( j = 0; j < ( dim - 1 ); j++ ) tempDim[j] = temp[j + i];
93 findOrthog( dim - 1, tempDim, vectors );
100int EvtOrthogVector::findEvenOddSwaps() {
102 std::vector<int> temp( _dimen );
105 for ( i = 0; i < _dimen; i++ ) temp[i] = _holder[i];
108 for ( i = 0; i < ( _dimen - 1 ); i++ )
110 for ( j = i + 1; j < _dimen; j++ )
113 if ( temp[i] > temp[j] )
122 nSwap -= ( nSwap / 2 ) * 2;
124 if ( nSwap )
return -1;
EvtOrthogVector(int n, std::vector< double > *vectors)