Mercurial > hg > segmenter-vamp-plugin
annotate armadillo-3.900.4/include/armadillo_bits/xvec_htrans_meat.hpp @ 76:a595de3e6f8d
Fix invalid call to parts.erase(parts.end()), which can crash and never does anything good. I think this is the intended behaviour.
author | Chris Cannam |
---|---|
date | Thu, 24 Jan 2019 15:07:04 +0000 |
parents | 1ec0e2823891 |
children |
rev | line source |
---|---|
Chris@49 | 1 // Copyright (C) 2013 Conrad Sanderson |
Chris@49 | 2 // |
Chris@49 | 3 // This Source Code Form is subject to the terms of the Mozilla Public |
Chris@49 | 4 // License, v. 2.0. If a copy of the MPL was not distributed with this |
Chris@49 | 5 // file, You can obtain one at http://mozilla.org/MPL/2.0/. |
Chris@49 | 6 |
Chris@49 | 7 |
Chris@49 | 8 //! \addtogroup xvec_htrans |
Chris@49 | 9 //! @{ |
Chris@49 | 10 |
Chris@49 | 11 |
Chris@49 | 12 template<typename eT> |
Chris@49 | 13 inline |
Chris@49 | 14 xvec_htrans<eT>::xvec_htrans(const eT* const in_mem, const uword in_n_rows, const uword in_n_cols) |
Chris@49 | 15 : mem (in_mem ) |
Chris@49 | 16 , n_rows(in_n_cols ) // deliberately swapped |
Chris@49 | 17 , n_cols(in_n_rows ) |
Chris@49 | 18 , n_elem(in_n_rows*in_n_cols) |
Chris@49 | 19 { |
Chris@49 | 20 arma_extra_debug_sigprint(); |
Chris@49 | 21 } |
Chris@49 | 22 |
Chris@49 | 23 |
Chris@49 | 24 |
Chris@49 | 25 template<typename eT> |
Chris@49 | 26 inline |
Chris@49 | 27 void |
Chris@49 | 28 xvec_htrans<eT>::extract(Mat<eT>& out) const |
Chris@49 | 29 { |
Chris@49 | 30 arma_extra_debug_sigprint(); |
Chris@49 | 31 |
Chris@49 | 32 // NOTE: this function assumes that matrix 'out' has already been set to the correct size |
Chris@49 | 33 |
Chris@49 | 34 const eT* in_mem = mem; |
Chris@49 | 35 eT* out_mem = out.memptr(); |
Chris@49 | 36 |
Chris@49 | 37 const uword N = n_elem; |
Chris@49 | 38 |
Chris@49 | 39 for(uword ii=0; ii < N; ++ii) |
Chris@49 | 40 { |
Chris@49 | 41 out_mem[ii] = access::alt_conj( in_mem[ii] ); |
Chris@49 | 42 } |
Chris@49 | 43 } |
Chris@49 | 44 |
Chris@49 | 45 |
Chris@49 | 46 |
Chris@49 | 47 template<typename eT> |
Chris@49 | 48 inline |
Chris@49 | 49 eT |
Chris@49 | 50 xvec_htrans<eT>::operator[](const uword ii) const |
Chris@49 | 51 { |
Chris@49 | 52 return access::alt_conj( mem[ii] ); |
Chris@49 | 53 } |
Chris@49 | 54 |
Chris@49 | 55 |
Chris@49 | 56 |
Chris@49 | 57 template<typename eT> |
Chris@49 | 58 inline |
Chris@49 | 59 eT |
Chris@49 | 60 xvec_htrans<eT>::at_alt(const uword ii) const |
Chris@49 | 61 { |
Chris@49 | 62 return access::alt_conj( mem[ii] ); |
Chris@49 | 63 } |
Chris@49 | 64 |
Chris@49 | 65 |
Chris@49 | 66 |
Chris@49 | 67 template<typename eT> |
Chris@49 | 68 inline |
Chris@49 | 69 eT |
Chris@49 | 70 xvec_htrans<eT>::at(const uword in_row, const uword in_col) const |
Chris@49 | 71 { |
Chris@49 | 72 //return (n_rows == 1) ? access::alt_conj( mem[in_col] ) : access::alt_conj( mem[in_row] ); |
Chris@49 | 73 |
Chris@49 | 74 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 | 75 } |
Chris@49 | 76 |
Chris@49 | 77 |
Chris@49 | 78 |
Chris@49 | 79 //! @} |