70 ASSERT( x->getSizeY() == 1 && x->getSizeZ() == 1 && x->getSizeT() == 1 );
71 ASSERT( y->getSizeY() == 1 && y->getSizeZ() == 1 && y->getSizeT() == 1 );
72 ASSERT( x->getSizeX() == y->getSizeX() );
74 int N = y->getSizeX();
80 mat( 0, 0 ) = float( N );
82 for ( k = 1; k <= D; k++ )
84 for ( n = 0; n < N; n++ )
85 mat( k, 0 ) += x->
at( n ).item( k - 1 );
86 mat( 0, k ) = mat( k, 0 );
90 for ( k1 = 1; k1 <= D; k1++ )
91 for ( k2 = 1; k2 <= k1; k2++ )
93 for ( n = 0; n < N; n++ )
94 mat( k1, k2 ) += x->
at( n ).item( k1 - 1 ) * x->at( n ).item( k2 - 1 );
95 mat( k2, k1 ) = mat( k1, k2 );
99 for ( n = 0; n < N; n++ )
101 vec( 0 ) += y->
at( n );
102 for ( k = 1; k <= D; k++ )
103 vec( k ) += y->
at( n ) * x->at( n ).item( k - 1 );
108 for ( k = 1; k <= D; k++ )
109 b.
item( k - 1 ) = res( k );
void doit(const carto::rc_ptr< carto::Volume< AimsVector< float, D > > > &x, const carto::rc_ptr< carto::Volume< float > > &y, float &a, AimsVector< float, D > &b)