Chris@49: // Copyright (C) 2013 Conrad Sanderson Chris@49: // Chris@49: // This Source Code Form is subject to the terms of the Mozilla Public Chris@49: // License, v. 2.0. If a copy of the MPL was not distributed with this Chris@49: // file, You can obtain one at http://mozilla.org/MPL/2.0/. Chris@49: Chris@49: Chris@49: //! \addtogroup xvec_htrans Chris@49: //! @{ Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: xvec_htrans::xvec_htrans(const eT* const in_mem, const uword in_n_rows, const uword in_n_cols) Chris@49: : mem (in_mem ) Chris@49: , n_rows(in_n_cols ) // deliberately swapped Chris@49: , n_cols(in_n_rows ) Chris@49: , n_elem(in_n_rows*in_n_cols) Chris@49: { Chris@49: arma_extra_debug_sigprint(); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: void Chris@49: xvec_htrans::extract(Mat& out) const Chris@49: { Chris@49: arma_extra_debug_sigprint(); Chris@49: Chris@49: // NOTE: this function assumes that matrix 'out' has already been set to the correct size Chris@49: Chris@49: const eT* in_mem = mem; Chris@49: eT* out_mem = out.memptr(); Chris@49: Chris@49: const uword N = n_elem; Chris@49: Chris@49: for(uword ii=0; ii < N; ++ii) Chris@49: { Chris@49: out_mem[ii] = access::alt_conj( in_mem[ii] ); Chris@49: } Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: eT Chris@49: xvec_htrans::operator[](const uword ii) const Chris@49: { Chris@49: return access::alt_conj( mem[ii] ); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: eT Chris@49: xvec_htrans::at_alt(const uword ii) const Chris@49: { Chris@49: return access::alt_conj( mem[ii] ); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: eT Chris@49: xvec_htrans::at(const uword in_row, const uword in_col) const Chris@49: { Chris@49: //return (n_rows == 1) ? access::alt_conj( mem[in_col] ) : access::alt_conj( mem[in_row] ); Chris@49: Chris@49: return access::alt_conj( mem[in_row + in_col] ); // either in_row or in_col must be zero, as we're storing a vector Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: //! @}