134 const Thyra::EOpTransp M_trans,
143 typedef Thyra::Ordinal Ordinal;
145 const Ordinal dim = space_->dim();
149 const Ordinal m = X_in.
domain()->dim();
151 for (Ordinal col_j = 0; col_j < m; ++col_j) {
161 if( beta == ST::zero() ) {
162 for( Ordinal k = 0; k < dim; ++k ) y[k] = ST::zero();
164 else if( beta != ST::one() ) {
165 for( Ordinal k = 0; k < dim; ++k ) y[k] *= beta;
171 y[k] += alpha * ( diag_[k]*x[k] + upper_[k]*x[k+1] );
172 for( k = 1; k < dim - 1; ++k )
173 y[k] += alpha * ( lower_[k-1]*x[k-1] + diag_[k]*x[k] + upper_[k]*x[k+1] );
174 y[k] += alpha * ( lower_[k-1]*x[k-1] + diag_[k]*x[k] );
176 else if( M_trans == Thyra::CONJ ) {
177 y[k] += alpha * ( ST::conjugate(diag_[k])*x[k] + ST::conjugate(upper_[k])*x[k+1] );
178 for( k = 1; k < dim - 1; ++k )
179 y[k] += alpha * ( ST::conjugate(lower_[k-1])*x[k-1]
180 + ST::conjugate(diag_[k])*x[k] + ST::conjugate(upper_[k])*x[k+1] );
181 y[k] += alpha * ( ST::conjugate(lower_[k-1])*x[k-1] + ST::conjugate(diag_[k])*x[k] );
183 else if( M_trans == Thyra::TRANS ) {
184 y[k] += alpha * ( diag_[k]*x[k] + lower_[k]*x[k+1] );
185 for( k = 1; k < dim - 1; ++k )
186 y[k] += alpha * ( upper_[k-1]*x[k-1] + diag_[k]*x[k] + lower_[k]*x[k+1] );
187 y[k] += alpha * ( upper_[k-1]*x[k-1] + diag_[k]*x[k] );
189 else if( M_trans == Thyra::CONJTRANS ) {
190 y[k] += alpha * ( ST::conjugate(diag_[k])*x[k] + ST::conjugate(lower_[k])*x[k+1] );
191 for( k = 1; k < dim - 1; ++k )
192 y[k] += alpha * ( ST::conjugate(upper_[k-1])*x[k-1]
193 + ST::conjugate(diag_[k])*x[k] + ST::conjugate(lower_[k])*x[k+1] );
194 y[k] += alpha * ( ST::conjugate(upper_[k-1])*x[k-1] + ST::conjugate(diag_[k])*x[k] );