Mercurial > hg > segmenter-vamp-plugin
annotate armadillo-3.900.4/include/armadillo_bits/op_flip_meat.hpp @ 84:55a047986812 tip
Update library URI so as not to be document-local
author | Chris Cannam |
---|---|
date | Wed, 22 Apr 2020 14:21:57 +0100 |
parents | 1ec0e2823891 |
children |
rev | line source |
---|---|
Chris@49 | 1 // Copyright (C) 2010 NICTA (www.nicta.com.au) |
Chris@49 | 2 // Copyright (C) 2010 Conrad Sanderson |
Chris@49 | 3 // |
Chris@49 | 4 // This Source Code Form is subject to the terms of the Mozilla Public |
Chris@49 | 5 // License, v. 2.0. If a copy of the MPL was not distributed with this |
Chris@49 | 6 // file, You can obtain one at http://mozilla.org/MPL/2.0/. |
Chris@49 | 7 |
Chris@49 | 8 |
Chris@49 | 9 //! \addtogroup op_flip |
Chris@49 | 10 //! @{ |
Chris@49 | 11 |
Chris@49 | 12 |
Chris@49 | 13 |
Chris@49 | 14 template<typename T1> |
Chris@49 | 15 inline |
Chris@49 | 16 void |
Chris@49 | 17 op_flipud::apply(Mat<typename T1::elem_type>& out, const Op<T1,op_flipud>& in) |
Chris@49 | 18 { |
Chris@49 | 19 arma_extra_debug_sigprint(); |
Chris@49 | 20 |
Chris@49 | 21 typedef typename T1::elem_type eT; |
Chris@49 | 22 |
Chris@49 | 23 const unwrap<T1> tmp(in.m); |
Chris@49 | 24 const Mat<eT> X = tmp.M; |
Chris@49 | 25 |
Chris@49 | 26 if(&out != &X) |
Chris@49 | 27 { |
Chris@49 | 28 out.copy_size(X); |
Chris@49 | 29 |
Chris@49 | 30 for(uword i=0; i<X.n_rows; ++i) |
Chris@49 | 31 { |
Chris@49 | 32 out.row(i) = X.row(X.n_rows-1 - i); |
Chris@49 | 33 } |
Chris@49 | 34 } |
Chris@49 | 35 else |
Chris@49 | 36 { |
Chris@49 | 37 const uword N = X.n_rows / 2; |
Chris@49 | 38 |
Chris@49 | 39 for(uword i=0; i<N; ++i) |
Chris@49 | 40 { |
Chris@49 | 41 out.swap_rows(i, X.n_rows-1 - i); |
Chris@49 | 42 } |
Chris@49 | 43 } |
Chris@49 | 44 } |
Chris@49 | 45 |
Chris@49 | 46 |
Chris@49 | 47 |
Chris@49 | 48 template<typename T1> |
Chris@49 | 49 inline |
Chris@49 | 50 void |
Chris@49 | 51 op_fliplr::apply(Mat<typename T1::elem_type>& out, const Op<T1,op_fliplr>& in) |
Chris@49 | 52 { |
Chris@49 | 53 arma_extra_debug_sigprint(); |
Chris@49 | 54 |
Chris@49 | 55 typedef typename T1::elem_type eT; |
Chris@49 | 56 |
Chris@49 | 57 const unwrap<T1> tmp(in.m); |
Chris@49 | 58 const Mat<eT> X = tmp.M; |
Chris@49 | 59 |
Chris@49 | 60 if(&out != &X) |
Chris@49 | 61 { |
Chris@49 | 62 out.copy_size(X); |
Chris@49 | 63 |
Chris@49 | 64 for(uword i=0; i<X.n_cols; ++i) |
Chris@49 | 65 { |
Chris@49 | 66 out.col(i) = X.col(X.n_cols-1 - i); |
Chris@49 | 67 } |
Chris@49 | 68 } |
Chris@49 | 69 else |
Chris@49 | 70 { |
Chris@49 | 71 const uword N = X.n_cols / 2; |
Chris@49 | 72 |
Chris@49 | 73 for(uword i=0; i<N; ++i) |
Chris@49 | 74 { |
Chris@49 | 75 out.swap_cols(i, X.n_cols-1 - i); |
Chris@49 | 76 } |
Chris@49 | 77 } |
Chris@49 | 78 } |
Chris@49 | 79 |
Chris@49 | 80 |
Chris@49 | 81 |
Chris@49 | 82 //! @} |