BaseCube_bones.hpp | BaseCube_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup BaseCube | //! \addtogroup BaseCube | |||
//! @{ | //! @{ | |||
//! Analog of the Base class, intended for cubes | //! Analog of the Base class, intended for cubes | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
BaseCube_meat.hpp | BaseCube_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup BaseCube | //! \addtogroup BaseCube | |||
//! @{ | //! @{ | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Base_bones.hpp | Base_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Base | //! \addtogroup Base | |||
//! @{ | //! @{ | |||
template<typename derived> | template<typename derived> | |||
struct Base_blas_elem_type | struct Base_blas_elem_type | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Base_meat.hpp | Base_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Base | //! \addtogroup Base | |||
//! @{ | //! @{ | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Col_bones.hpp | Col_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Col | //! \addtogroup Col | |||
//! @{ | //! @{ | |||
//! Class for column vectors (matrices with only one column) | //! Class for column vectors (matrices with only one column) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Col_meat.hpp | Col_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Col | //! \addtogroup Col | |||
//! @{ | //! @{ | |||
//! construct an empty column vector | //! construct an empty column vector | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Cube_bones.hpp | Cube_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Cube | //! \addtogroup Cube | |||
//! @{ | //! @{ | |||
struct Cube_prealloc | struct Cube_prealloc | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Cube_meat.hpp | Cube_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Cube | //! \addtogroup Cube | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
skipping to change at line 239 | skipping to change at line 239 | |||
Cube<eT>::init | Cube<eT>::init | |||
( | ( | |||
const BaseCube<typename Cube<eT>::pod_type,T1>& X, | const BaseCube<typename Cube<eT>::pod_type,T1>& X, | |||
const BaseCube<typename Cube<eT>::pod_type,T2>& Y | const BaseCube<typename Cube<eT>::pod_type,T2>& Y | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
typedef typename T1::elem_type T; | typedef typename T1::elem_type T; | |||
arma_type_check(( is_complex<eT>::value == false )); //!< compile-time | arma_type_check(( is_complex<eT>::value == false )); //!< compile-time | |||
abort if eT isn't std::complex | abort if eT is not std::complex | |||
arma_type_check(( is_complex< T>::value == true )); //!< compile-time | arma_type_check(( is_complex< T>::value == true )); //!< compile-time | |||
abort if T is std::complex | abort if T is std::complex | |||
arma_type_check(( is_same_type< std::complex<T>, eT >::value == false )); //!< compile-time abort if types are not compatible | arma_type_check(( is_same_type< std::complex<T>, eT >::no )); //!< comp ile-time abort if types are not compatible | |||
const ProxyCube<T1> PX(X.get_ref()); | const ProxyCube<T1> PX(X.get_ref()); | |||
const ProxyCube<T2> PY(Y.get_ref()); | const ProxyCube<T2> PY(Y.get_ref()); | |||
arma_debug_assert_same_size(PX, PY, "Cube()"); | arma_debug_assert_same_size(PX, PY, "Cube()"); | |||
const uword local_n_rows = PX.get_n_rows(); | const uword local_n_rows = PX.get_n_rows(); | |||
const uword local_n_cols = PX.get_n_cols(); | const uword local_n_cols = PX.get_n_cols(); | |||
const uword local_n_slices = PX.get_n_slices(); | const uword local_n_slices = PX.get_n_slices(); | |||
skipping to change at line 1136 | skipping to change at line 1136 | |||
, n_cols(0) | , n_cols(0) | |||
, n_elem_slice(0) | , n_elem_slice(0) | |||
, n_slices(0) | , n_slices(0) | |||
, n_elem(0) | , n_elem(0) | |||
, mem_state(0) | , mem_state(0) | |||
, mat_ptrs() | , mat_ptrs() | |||
, mem() | , mem() | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
op_type::apply(*this, X); | op_type::apply(*this, X); | |||
} | } | |||
//! create a cube from OpCube, i.e. run the previously delayed unary operat ions | //! create a cube from OpCube, i.e. run the previously delayed unary operat ions | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator=(const OpCube<T1, op_type>& X) | Cube<eT>::operator=(const OpCube<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
op_type::apply(*this, X); | op_type::apply(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place cube addition, with the right-hand-side operand having delayed operations | //! in-place cube addition, with the right-hand-side operand having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator+=(const OpCube<T1, op_type>& X) | Cube<eT>::operator+=(const OpCube<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const Cube<eT> m(X); | const Cube<eT> m(X); | |||
return (*this).operator+=(m); | return (*this).operator+=(m); | |||
} | } | |||
//! in-place cube subtraction, with the right-hand-side operand having dela yed operations | //! in-place cube subtraction, with the right-hand-side operand having dela yed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator-=(const OpCube<T1, op_type>& X) | Cube<eT>::operator-=(const OpCube<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const Cube<eT> m(X); | const Cube<eT> m(X); | |||
return (*this).operator-=(m); | return (*this).operator-=(m); | |||
} | } | |||
//! in-place cube element-wise multiplication, with the right-hand-side ope rand having delayed operations | //! in-place cube element-wise multiplication, with the right-hand-side ope rand having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator%=(const OpCube<T1, op_type>& X) | Cube<eT>::operator%=(const OpCube<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const Cube<eT> m(X); | const Cube<eT> m(X); | |||
return (*this).operator%=(m); | return (*this).operator%=(m); | |||
} | } | |||
//! in-place cube element-wise division, with the right-hand-side operand h aving delayed operations | //! in-place cube element-wise division, with the right-hand-side operand h aving delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator/=(const OpCube<T1, op_type>& X) | Cube<eT>::operator/=(const OpCube<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const Cube<eT> m(X); | const Cube<eT> m(X); | |||
return (*this).operator/=(m); | return (*this).operator/=(m); | |||
} | } | |||
//! create a cube from eOpCube, i.e. run the previously delayed unary opera tions | //! create a cube from eOpCube, i.e. run the previously delayed unary opera tions | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
skipping to change at line 1237 | skipping to change at line 1237 | |||
, n_cols(X.get_n_cols()) | , n_cols(X.get_n_cols()) | |||
, n_elem_slice(X.get_n_elem_slice()) | , n_elem_slice(X.get_n_elem_slice()) | |||
, n_slices(X.get_n_slices()) | , n_slices(X.get_n_slices()) | |||
, n_elem(X.get_n_elem()) | , n_elem(X.get_n_elem()) | |||
, mem_state(0) | , mem_state(0) | |||
, mat_ptrs() | , mat_ptrs() | |||
, mem() | , mem() | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
init_cold(); | init_cold(); | |||
eop_type::apply(*this, X); | eop_type::apply(*this, X); | |||
} | } | |||
//! create a cube from eOpCube, i.e. run the previously delayed unary opera tions | //! create a cube from eOpCube, i.e. run the previously delayed unary opera tions | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator=(const eOpCube<T1, eop_type>& X) | Cube<eT>::operator=(const eOpCube<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const bool bad_alias = ( X.P.has_subview && X.P.is_alias(*this) ); | const bool bad_alias = ( X.P.has_subview && X.P.is_alias(*this) ); | |||
if(bad_alias == false) | if(bad_alias == false) | |||
{ | { | |||
init_warm(X.get_n_rows(), X.get_n_cols(), X.get_n_slices()); | init_warm(X.get_n_rows(), X.get_n_cols(), X.get_n_slices()); | |||
eop_type::apply(*this, X); | eop_type::apply(*this, X); | |||
} | } | |||
else | else | |||
skipping to change at line 1282 | skipping to change at line 1282 | |||
//! in-place cube addition, with the right-hand-side operand having delayed operations | //! in-place cube addition, with the right-hand-side operand having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator+=(const eOpCube<T1, eop_type>& X) | Cube<eT>::operator+=(const eOpCube<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
eop_type::apply_inplace_plus(*this, X); | eop_type::apply_inplace_plus(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place cube subtraction, with the right-hand-side operand having dela yed operations | //! in-place cube subtraction, with the right-hand-side operand having dela yed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator-=(const eOpCube<T1, eop_type>& X) | Cube<eT>::operator-=(const eOpCube<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
eop_type::apply_inplace_minus(*this, X); | eop_type::apply_inplace_minus(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place cube element-wise multiplication, with the right-hand-side ope rand having delayed operations | //! in-place cube element-wise multiplication, with the right-hand-side ope rand having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator%=(const eOpCube<T1, eop_type>& X) | Cube<eT>::operator%=(const eOpCube<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
eop_type::apply_inplace_schur(*this, X); | eop_type::apply_inplace_schur(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place cube element-wise division, with the right-hand-side operand h aving delayed operations | //! in-place cube element-wise division, with the right-hand-side operand h aving delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator/=(const eOpCube<T1, eop_type>& X) | Cube<eT>::operator/=(const eOpCube<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
eop_type::apply_inplace_div(*this, X); | eop_type::apply_inplace_div(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! EXPERIMENTAL | //! EXPERIMENTAL | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
skipping to change at line 1453 | skipping to change at line 1453 | |||
//! create a cube from Glue, i.e. run the previously delayed binary operati ons | //! create a cube from Glue, i.e. run the previously delayed binary operati ons | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator=(const GlueCube<T1, T2, glue_type>& X) | Cube<eT>::operator=(const GlueCube<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
glue_type::apply(*this, X); | glue_type::apply(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place cube addition, with the right-hand-side operands having delaye d operations | //! in-place cube addition, with the right-hand-side operands having delaye d operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator+=(const GlueCube<T1, T2, glue_type>& X) | Cube<eT>::operator+=(const GlueCube<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const Cube<eT> m(X); | const Cube<eT> m(X); | |||
return (*this).operator+=(m); | return (*this).operator+=(m); | |||
} | } | |||
//! in-place cube subtraction, with the right-hand-side operands having del ayed operations | //! in-place cube subtraction, with the right-hand-side operands having del ayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator-=(const GlueCube<T1, T2, glue_type>& X) | Cube<eT>::operator-=(const GlueCube<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const Cube<eT> m(X); | const Cube<eT> m(X); | |||
return (*this).operator-=(m); | return (*this).operator-=(m); | |||
} | } | |||
//! in-place cube element-wise multiplication, with the right-hand-side ope rands having delayed operations | //! in-place cube element-wise multiplication, with the right-hand-side ope rands having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator%=(const GlueCube<T1, T2, glue_type>& X) | Cube<eT>::operator%=(const GlueCube<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const Cube<eT> m(X); | const Cube<eT> m(X); | |||
return (*this).operator%=(m); | return (*this).operator%=(m); | |||
} | } | |||
//! in-place cube element-wise division, with the right-hand-side operands having delayed operations | //! in-place cube element-wise division, with the right-hand-side operands having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator/=(const GlueCube<T1, T2, glue_type>& X) | Cube<eT>::operator/=(const GlueCube<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const Cube<eT> m(X); | const Cube<eT> m(X); | |||
return (*this).operator/=(m); | return (*this).operator/=(m); | |||
} | } | |||
//! create a cube from eGlue, i.e. run the previously delayed binary operat ions | //! create a cube from eGlue, i.e. run the previously delayed binary operat ions | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
skipping to change at line 1545 | skipping to change at line 1545 | |||
, n_cols(X.get_n_cols()) | , n_cols(X.get_n_cols()) | |||
, n_elem_slice(X.get_n_elem_slice()) | , n_elem_slice(X.get_n_elem_slice()) | |||
, n_slices(X.get_n_slices()) | , n_slices(X.get_n_slices()) | |||
, n_elem(X.get_n_elem()) | , n_elem(X.get_n_elem()) | |||
, mem_state(0) | , mem_state(0) | |||
, mat_ptrs() | , mat_ptrs() | |||
, mem() | , mem() | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
init_cold(); | init_cold(); | |||
eglue_type::apply(*this, X); | eglue_type::apply(*this, X); | |||
} | } | |||
//! create a cube from Glue, i.e. run the previously delayed binary operati ons | //! create a cube from Glue, i.e. run the previously delayed binary operati ons | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator=(const eGlueCube<T1, T2, eglue_type>& X) | Cube<eT>::operator=(const eGlueCube<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const bool bad_alias = ( (X.P1.has_subview && X.P1.is_alias(*this)) || (X.P2.has_subview && X.P2.is_alias(*this)) ); | const bool bad_alias = ( (X.P1.has_subview && X.P1.is_alias(*this)) || (X.P2.has_subview && X.P2.is_alias(*this)) ); | |||
if(bad_alias == false) | if(bad_alias == false) | |||
{ | { | |||
init_warm(X.get_n_rows(), X.get_n_cols(), X.get_n_slices()); | init_warm(X.get_n_rows(), X.get_n_cols(), X.get_n_slices()); | |||
eglue_type::apply(*this, X); | eglue_type::apply(*this, X); | |||
} | } | |||
else | else | |||
skipping to change at line 1592 | skipping to change at line 1592 | |||
//! in-place cube addition, with the right-hand-side operands having delaye d operations | //! in-place cube addition, with the right-hand-side operands having delaye d operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator+=(const eGlueCube<T1, T2, eglue_type>& X) | Cube<eT>::operator+=(const eGlueCube<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
eglue_type::apply_inplace_plus(*this, X); | eglue_type::apply_inplace_plus(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place cube subtraction, with the right-hand-side operands having del ayed operations | //! in-place cube subtraction, with the right-hand-side operands having del ayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator-=(const eGlueCube<T1, T2, eglue_type>& X) | Cube<eT>::operator-=(const eGlueCube<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
eglue_type::apply_inplace_minus(*this, X); | eglue_type::apply_inplace_minus(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place cube element-wise multiplication, with the right-hand-side ope rands having delayed operations | //! in-place cube element-wise multiplication, with the right-hand-side ope rands having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator%=(const eGlueCube<T1, T2, eglue_type>& X) | Cube<eT>::operator%=(const eGlueCube<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
eglue_type::apply_inplace_schur(*this, X); | eglue_type::apply_inplace_schur(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place cube element-wise division, with the right-hand-side operands having delayed operations | //! in-place cube element-wise division, with the right-hand-side operands having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Cube<eT>& | const Cube<eT>& | |||
Cube<eT>::operator/=(const eGlueCube<T1, T2, eglue_type>& X) | Cube<eT>::operator/=(const eGlueCube<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
eglue_type::apply_inplace_div(*this, X); | eglue_type::apply_inplace_div(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! EXPERIMENTAL | //! EXPERIMENTAL | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
End of changes. 27 change blocks. | ||||
62 lines changed or deleted | 40 lines changed or added | |||
GenCube_bones.hpp | GenCube_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011-2013 Conrad Sanderson | // Copyright (C) 2011-2013 Conrad Sanderson | |||
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup GenCube | //! \addtogroup GenCube | |||
//! @{ | //! @{ | |||
//! support class for generator functions (eg. zeros, randu, randn, ...) | //! support class for generator functions (eg. zeros, randu, randn, ...) | |||
template<typename eT, typename gen_type> | template<typename eT, typename gen_type> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
GenCube_meat.hpp | GenCube_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011-2013 Conrad Sanderson | // Copyright (C) 2011-2013 Conrad Sanderson | |||
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Gen | //! \addtogroup Gen | |||
//! @{ | //! @{ | |||
template<typename eT, typename gen_type> | template<typename eT, typename gen_type> | |||
arma_inline | arma_inline | |||
skipping to change at line 33 | skipping to change at line 33 | |||
GenCube<eT, gen_type>::~GenCube() | GenCube<eT, gen_type>::~GenCube() | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
} | } | |||
template<typename eT, typename gen_type> | template<typename eT, typename gen_type> | |||
arma_inline | arma_inline | |||
eT | eT | |||
GenCube<eT, gen_type>::generate() | GenCube<eT, gen_type>::generate() | |||
{ | { | |||
if(is_same_type<gen_type, gen_ones_full>::value == true) { return eT | if(is_same_type<gen_type, gen_ones_full>::yes) { return eT(1); | |||
(1); } | } | |||
else if(is_same_type<gen_type, gen_zeros >::value == true) { return eT | else if(is_same_type<gen_type, gen_zeros >::yes) { return eT(0); | |||
(0); } | } | |||
else if(is_same_type<gen_type, gen_randu >::value == true) { return eT | else if(is_same_type<gen_type, gen_randu >::yes) { return eT(eop_aux_r | |||
(eop_aux_randu<eT>()); } | andu<eT>()); } | |||
else if(is_same_type<gen_type, gen_randn >::value == true) { return eT | else if(is_same_type<gen_type, gen_randn >::yes) { return eT(eop_aux_r | |||
(eop_aux_randn<eT>()); } | andn<eT>()); } | |||
else { return eT | else { return eT(); | |||
(); } | } | |||
} | } | |||
template<typename eT, typename gen_type> | template<typename eT, typename gen_type> | |||
arma_inline | arma_inline | |||
eT | eT | |||
GenCube<eT, gen_type>::operator[](const uword) const | GenCube<eT, gen_type>::operator[](const uword) const | |||
{ | { | |||
return GenCube<eT, gen_type>::generate(); | return GenCube<eT, gen_type>::generate(); | |||
} | } | |||
skipping to change at line 74 | skipping to change at line 74 | |||
template<typename eT, typename gen_type> | template<typename eT, typename gen_type> | |||
inline | inline | |||
void | void | |||
GenCube<eT, gen_type>::apply(Cube<eT>& out) const | GenCube<eT, gen_type>::apply(Cube<eT>& out) const | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
// NOTE: we're assuming that the cube has already been set to the correct size; | // NOTE: we're assuming that the cube has already been set to the correct size; | |||
// this is done by either the Cube contructor or operator=() | // this is done by either the Cube contructor or operator=() | |||
if(is_same_type<gen_type, gen_ones_full>::value == true) { out.ones( | if(is_same_type<gen_type, gen_ones_full>::yes) { out.ones(); } | |||
); } | else if(is_same_type<gen_type, gen_zeros >::yes) { out.zeros(); } | |||
else if(is_same_type<gen_type, gen_zeros >::value == true) { out.zeros | else if(is_same_type<gen_type, gen_randu >::yes) { out.randu(); } | |||
(); } | else if(is_same_type<gen_type, gen_randn >::yes) { out.randn(); } | |||
else if(is_same_type<gen_type, gen_randu >::value == true) { out.randu | ||||
(); } | ||||
else if(is_same_type<gen_type, gen_randn >::value == true) { out.randn | ||||
(); } | ||||
} | } | |||
template<typename eT, typename gen_type> | template<typename eT, typename gen_type> | |||
inline | inline | |||
void | void | |||
GenCube<eT, gen_type>::apply_inplace_plus(Cube<eT>& out) const | GenCube<eT, gen_type>::apply_inplace_plus(Cube<eT>& out) const | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_debug_assert_same_size(out.n_rows, out.n_cols, out.n_slices, n_rows, n_cols, n_slices, "addition"); | arma_debug_assert_same_size(out.n_rows, out.n_cols, out.n_slices, n_rows, n_cols, n_slices, "addition"); | |||
End of changes. 4 change blocks. | ||||
19 lines changed or deleted | 15 lines changed or added | |||
Gen_bones.hpp | Gen_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011-2013 Conrad Sanderson | // Copyright (C) 2011-2013 Conrad Sanderson | |||
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Gen | //! \addtogroup Gen | |||
//! @{ | //! @{ | |||
//! support class for generator functions (eg. zeros, randu, randn, ...) | //! support class for generator functions (eg. zeros, randu, randn, ...) | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Gen_meat.hpp | Gen_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011-2013 Conrad Sanderson | // Copyright (C) 2011-2013 Conrad Sanderson | |||
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Gen | //! \addtogroup Gen | |||
//! @{ | //! @{ | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
arma_inline | arma_inline | |||
skipping to change at line 34 | skipping to change at line 34 | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
} | } | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
arma_inline | arma_inline | |||
typename T1::elem_type | typename T1::elem_type | |||
Gen<T1, gen_type>::generate() | Gen<T1, gen_type>::generate() | |||
{ | { | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<gen_type, gen_ones_full>::value == true) { return eT | if(is_same_type<gen_type, gen_ones_full>::yes) { return eT(1); | |||
(1); } | } | |||
else if(is_same_type<gen_type, gen_zeros >::value == true) { return eT | else if(is_same_type<gen_type, gen_zeros >::yes) { return eT(0); | |||
(0); } | } | |||
else if(is_same_type<gen_type, gen_randu >::value == true) { return eT | else if(is_same_type<gen_type, gen_randu >::yes) { return eT(eop_aux_r | |||
(eop_aux_randu<eT>()); } | andu<eT>()); } | |||
else if(is_same_type<gen_type, gen_randn >::value == true) { return eT | else if(is_same_type<gen_type, gen_randn >::yes) { return eT(eop_aux_r | |||
(eop_aux_randn<eT>()); } | andn<eT>()); } | |||
else { return eT | else { return eT(); | |||
(); } | } | |||
} | } | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
arma_inline | arma_inline | |||
typename T1::elem_type | typename T1::elem_type | |||
Gen<T1, gen_type>::operator[](const uword ii) const | Gen<T1, gen_type>::operator[](const uword ii) const | |||
{ | { | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<gen_type, gen_ones_diag>::value == true) | if(is_same_type<gen_type, gen_ones_diag>::yes) | |||
{ | { | |||
return ((ii % n_rows) == (ii / n_rows)) ? eT(1) : eT(0); | return ((ii % n_rows) == (ii / n_rows)) ? eT(1) : eT(0); | |||
} | } | |||
else | else | |||
{ | { | |||
return Gen<T1, gen_type>::generate(); | return Gen<T1, gen_type>::generate(); | |||
} | } | |||
} | } | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
arma_inline | arma_inline | |||
typename T1::elem_type | typename T1::elem_type | |||
Gen<T1, gen_type>::at(const uword row, const uword col) const | Gen<T1, gen_type>::at(const uword row, const uword col) const | |||
{ | { | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<gen_type, gen_ones_diag>::value == true) | if(is_same_type<gen_type, gen_ones_diag>::yes) | |||
{ | { | |||
return (row == col) ? eT(1) : eT(0); | return (row == col) ? eT(1) : eT(0); | |||
} | } | |||
else | else | |||
{ | { | |||
return Gen<T1, gen_type>::generate(); | return Gen<T1, gen_type>::generate(); | |||
} | } | |||
} | } | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
skipping to change at line 93 | skipping to change at line 93 | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
inline | inline | |||
void | void | |||
Gen<T1, gen_type>::apply(Mat<typename T1::elem_type>& out) const | Gen<T1, gen_type>::apply(Mat<typename T1::elem_type>& out) const | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
// NOTE: we're assuming that the matrix has already been set to the corre ct size; | // NOTE: we're assuming that the matrix has already been set to the corre ct size; | |||
// this is done by either the Mat contructor or operator=() | // this is done by either the Mat contructor or operator=() | |||
if(is_same_type<gen_type, gen_ones_diag>::value == true) { out.eye() | if(is_same_type<gen_type, gen_ones_diag>::yes) { out.eye(); } | |||
; } | else if(is_same_type<gen_type, gen_ones_full>::yes) { out.ones(); } | |||
else if(is_same_type<gen_type, gen_ones_full>::value == true) { out.ones( | else if(is_same_type<gen_type, gen_zeros >::yes) { out.zeros(); } | |||
); } | else if(is_same_type<gen_type, gen_randu >::yes) { out.randu(); } | |||
else if(is_same_type<gen_type, gen_zeros >::value == true) { out.zeros | else if(is_same_type<gen_type, gen_randn >::yes) { out.randn(); } | |||
(); } | ||||
else if(is_same_type<gen_type, gen_randu >::value == true) { out.randu | ||||
(); } | ||||
else if(is_same_type<gen_type, gen_randn >::value == true) { out.randn | ||||
(); } | ||||
} | } | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
inline | inline | |||
void | void | |||
Gen<T1, gen_type>::apply_inplace_plus(Mat<typename T1::elem_type>& out) con st | Gen<T1, gen_type>::apply_inplace_plus(Mat<typename T1::elem_type>& out) con st | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_debug_assert_same_size(out.n_rows, out.n_cols, n_rows, n_cols, "addi tion"); | arma_debug_assert_same_size(out.n_rows, out.n_cols, n_rows, n_cols, "addi tion"); | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<gen_type, gen_ones_diag>::value == true) | if(is_same_type<gen_type, gen_ones_diag>::yes) | |||
{ | { | |||
const uword N = (std::min)(n_rows, n_cols); | const uword N = (std::min)(n_rows, n_cols); | |||
for(uword iq=0; iq < N; ++iq) | for(uword iq=0; iq < N; ++iq) | |||
{ | { | |||
out.at(iq,iq) += eT(1); | out.at(iq,iq) += eT(1); | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
skipping to change at line 154 | skipping to change at line 154 | |||
inline | inline | |||
void | void | |||
Gen<T1, gen_type>::apply_inplace_minus(Mat<typename T1::elem_type>& out) co nst | Gen<T1, gen_type>::apply_inplace_minus(Mat<typename T1::elem_type>& out) co nst | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_debug_assert_same_size(out.n_rows, out.n_cols, n_rows, n_cols, "subt raction"); | arma_debug_assert_same_size(out.n_rows, out.n_cols, n_rows, n_cols, "subt raction"); | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<gen_type, gen_ones_diag>::value == true) | if(is_same_type<gen_type, gen_ones_diag>::yes) | |||
{ | { | |||
const uword N = (std::min)(n_rows, n_cols); | const uword N = (std::min)(n_rows, n_cols); | |||
for(uword iq=0; iq < N; ++iq) | for(uword iq=0; iq < N; ++iq) | |||
{ | { | |||
out.at(iq,iq) -= eT(1); | out.at(iq,iq) -= eT(1); | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
skipping to change at line 197 | skipping to change at line 197 | |||
inline | inline | |||
void | void | |||
Gen<T1, gen_type>::apply_inplace_schur(Mat<typename T1::elem_type>& out) co nst | Gen<T1, gen_type>::apply_inplace_schur(Mat<typename T1::elem_type>& out) co nst | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_debug_assert_same_size(out.n_rows, out.n_cols, n_rows, n_cols, "elem ent-wise multiplication"); | arma_debug_assert_same_size(out.n_rows, out.n_cols, n_rows, n_cols, "elem ent-wise multiplication"); | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<gen_type, gen_ones_diag>::value == true) | if(is_same_type<gen_type, gen_ones_diag>::yes) | |||
{ | { | |||
const uword N = (std::min)(n_rows, n_cols); | const uword N = (std::min)(n_rows, n_cols); | |||
for(uword iq=0; iq < N; ++iq) | for(uword iq=0; iq < N; ++iq) | |||
{ | { | |||
for(uword row=0; row < iq; ++row) { out.at(row,iq) = eT(0); } | for(uword row=0; row < iq; ++row) { out.at(row,iq) = eT(0); } | |||
for(uword row=iq+1; row < n_rows; ++row) { out.at(row,iq) = eT(0); } | for(uword row=iq+1; row < n_rows; ++row) { out.at(row,iq) = eT(0); } | |||
} | } | |||
} | } | |||
else | else | |||
skipping to change at line 241 | skipping to change at line 241 | |||
inline | inline | |||
void | void | |||
Gen<T1, gen_type>::apply_inplace_div(Mat<typename T1::elem_type>& out) cons t | Gen<T1, gen_type>::apply_inplace_div(Mat<typename T1::elem_type>& out) cons t | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_debug_assert_same_size(out.n_rows, out.n_cols, n_rows, n_cols, "elem ent-wise division"); | arma_debug_assert_same_size(out.n_rows, out.n_cols, n_rows, n_cols, "elem ent-wise division"); | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<gen_type, gen_ones_diag>::value == true) | if(is_same_type<gen_type, gen_ones_diag>::yes) | |||
{ | { | |||
const uword N = (std::min)(n_rows, n_cols); | const uword N = (std::min)(n_rows, n_cols); | |||
for(uword iq=0; iq < N; ++iq) | for(uword iq=0; iq < N; ++iq) | |||
{ | { | |||
const eT zero = eT(0); | const eT zero = eT(0); | |||
for(uword row=0; row < iq; ++row) { out.at(row,iq) /= zero; } | for(uword row=0; row < iq; ++row) { out.at(row,iq) /= zero; } | |||
for(uword row=iq+1; row < n_rows; ++row) { out.at(row,iq) /= zero; } | for(uword row=iq+1; row < n_rows; ++row) { out.at(row,iq) /= zero; } | |||
} | } | |||
End of changes. 10 change blocks. | ||||
27 lines changed or deleted | 22 lines changed or added | |||
GlueCube_bones.hpp | GlueCube_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup GlueCube | //! \addtogroup GlueCube | |||
//! @{ | //! @{ | |||
//! analog of the Glue class, intended for Cube objects | //! analog of the Glue class, intended for Cube objects | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
GlueCube_meat.hpp | GlueCube_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup GlueCube | //! \addtogroup GlueCube | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Glue_bones.hpp | Glue_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Glue | //! \addtogroup Glue | |||
//! @{ | //! @{ | |||
//! Class for storing data required for delayed binary operations, | //! Class for storing data required for delayed binary operations, | |||
//! such as the operands (e.g. two matrices) and the binary operator (e.g. addition). | //! such as the operands (e.g. two matrices) and the binary operator (e.g. addition). | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Glue_meat.hpp | Glue_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Glue | //! \addtogroup Glue | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Mat_bones.hpp | Mat_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Mat | //! \addtogroup Mat | |||
//! @{ | //! @{ | |||
//! Dense matrix class | //! Dense matrix class | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Mat_meat.hpp | Mat_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Mat | //! \addtogroup Mat | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
skipping to change at line 612 | skipping to change at line 612 | |||
Mat<eT>::init | Mat<eT>::init | |||
( | ( | |||
const Base<typename Mat<eT>::pod_type, T1>& X, | const Base<typename Mat<eT>::pod_type, T1>& X, | |||
const Base<typename Mat<eT>::pod_type, T2>& Y | const Base<typename Mat<eT>::pod_type, T2>& Y | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
typedef typename T1::elem_type T; | typedef typename T1::elem_type T; | |||
arma_type_check(( is_complex<eT>::value == false )); //!< compile-time | arma_type_check(( is_complex<eT>::value == false )); //!< compile-time | |||
abort if eT isn't std::complex | abort if eT is not std::complex | |||
arma_type_check(( is_complex< T>::value == true )); //!< compile-time | arma_type_check(( is_complex< T>::value == true )); //!< compile-time | |||
abort if T is std::complex | abort if T is std::complex | |||
arma_type_check(( is_same_type< std::complex<T>, eT >::value == false )); //!< compile-time abort if types are not compatible | arma_type_check(( is_same_type< std::complex<T>, eT >::no )); //!< comp ile-time abort if types are not compatible | |||
const Proxy<T1> PX(X.get_ref()); | const Proxy<T1> PX(X.get_ref()); | |||
const Proxy<T2> PY(Y.get_ref()); | const Proxy<T2> PY(Y.get_ref()); | |||
arma_debug_assert_same_size(PX, PY, "Mat()"); | arma_debug_assert_same_size(PX, PY, "Mat()"); | |||
const uword local_n_rows = PX.get_n_rows(); | const uword local_n_rows = PX.get_n_rows(); | |||
const uword local_n_cols = PX.get_n_cols(); | const uword local_n_cols = PX.get_n_cols(); | |||
init_warm(local_n_rows, local_n_cols); | init_warm(local_n_rows, local_n_cols); | |||
skipping to change at line 3175 | skipping to change at line 3175 | |||
Mat<eT>::Mat(const Gen<T1, gen_type>& X) | Mat<eT>::Mat(const Gen<T1, gen_type>& X) | |||
: n_rows(X.n_rows) | : n_rows(X.n_rows) | |||
, n_cols(X.n_cols) | , n_cols(X.n_cols) | |||
, n_elem(n_rows*n_cols) | , n_elem(n_rows*n_cols) | |||
, vec_state(0) | , vec_state(0) | |||
, mem_state(0) | , mem_state(0) | |||
, mem() | , mem() | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
init_cold(); | init_cold(); | |||
X.apply(*this); | X.apply(*this); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator=(const Gen<T1, gen_type>& X) | Mat<eT>::operator=(const Gen<T1, gen_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
init_warm(X.n_rows, X.n_cols); | init_warm(X.n_rows, X.n_cols); | |||
X.apply(*this); | X.apply(*this); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator+=(const Gen<T1, gen_type>& X) | Mat<eT>::operator+=(const Gen<T1, gen_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
X.apply_inplace_plus(*this); | X.apply_inplace_plus(*this); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator-=(const Gen<T1, gen_type>& X) | Mat<eT>::operator-=(const Gen<T1, gen_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
X.apply_inplace_minus(*this); | X.apply_inplace_minus(*this); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator*=(const Gen<T1, gen_type>& X) | Mat<eT>::operator*=(const Gen<T1, gen_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const Mat<eT> tmp(X); | const Mat<eT> tmp(X); | |||
return (*this).operator*=(tmp); | return (*this).operator*=(tmp); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator%=(const Gen<T1, gen_type>& X) | Mat<eT>::operator%=(const Gen<T1, gen_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
X.apply_inplace_schur(*this); | X.apply_inplace_schur(*this); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename gen_type> | template<typename T1, typename gen_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator/=(const Gen<T1, gen_type>& X) | Mat<eT>::operator/=(const Gen<T1, gen_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
X.apply_inplace_div(*this); | X.apply_inplace_div(*this); | |||
return *this; | return *this; | |||
} | } | |||
//! create a matrix from Op, i.e. run the previously delayed unary operatio ns | //! create a matrix from Op, i.e. run the previously delayed unary operatio ns | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
Mat<eT>::Mat(const Op<T1, op_type>& X) | Mat<eT>::Mat(const Op<T1, op_type>& X) | |||
: n_rows(0) | : n_rows(0) | |||
, n_cols(0) | , n_cols(0) | |||
, n_elem(0) | , n_elem(0) | |||
, vec_state(0) | , vec_state(0) | |||
, mem_state(0) | , mem_state(0) | |||
, mem() | , mem() | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
op_type::apply(*this, X); | op_type::apply(*this, X); | |||
} | } | |||
//! create a matrix from Op, i.e. run the previously delayed unary operatio ns | //! create a matrix from Op, i.e. run the previously delayed unary operatio ns | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator=(const Op<T1, op_type>& X) | Mat<eT>::operator=(const Op<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
op_type::apply(*this, X); | op_type::apply(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place matrix addition, with the right-hand-side operand having delay ed operations | //! in-place matrix addition, with the right-hand-side operand having delay ed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator+=(const Op<T1, op_type>& X) | Mat<eT>::operator+=(const Op<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const Mat<eT> m(X); | const Mat<eT> m(X); | |||
return (*this).operator+=(m); | return (*this).operator+=(m); | |||
} | } | |||
//! in-place matrix subtraction, with the right-hand-side operand having de layed operations | //! in-place matrix subtraction, with the right-hand-side operand having de layed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator-=(const Op<T1, op_type>& X) | Mat<eT>::operator-=(const Op<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const Mat<eT> m(X); | const Mat<eT> m(X); | |||
return (*this).operator-=(m); | return (*this).operator-=(m); | |||
} | } | |||
//! in-place matrix multiplication, with the right-hand-side operand having delayed operations | //! in-place matrix multiplication, with the right-hand-side operand having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator*=(const Op<T1, op_type>& X) | Mat<eT>::operator*=(const Op<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
glue_times::apply_inplace(*this, X); | glue_times::apply_inplace(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place matrix element-wise multiplication, with the right-hand-side o perand having delayed operations | //! in-place matrix element-wise multiplication, with the right-hand-side o perand having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator%=(const Op<T1, op_type>& X) | Mat<eT>::operator%=(const Op<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const Mat<eT> m(X); | const Mat<eT> m(X); | |||
return (*this).operator%=(m); | return (*this).operator%=(m); | |||
} | } | |||
//! in-place matrix element-wise division, with the right-hand-side operand having delayed operations | //! in-place matrix element-wise division, with the right-hand-side operand having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator/=(const Op<T1, op_type>& X) | Mat<eT>::operator/=(const Op<T1, op_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const Mat<eT> m(X); | const Mat<eT> m(X); | |||
return (*this).operator/=(m); | return (*this).operator/=(m); | |||
} | } | |||
//! create a matrix from eOp, i.e. run the previously delayed unary operati ons | //! create a matrix from eOp, i.e. run the previously delayed unary operati ons | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
Mat<eT>::Mat(const eOp<T1, eop_type>& X) | Mat<eT>::Mat(const eOp<T1, eop_type>& X) | |||
: n_rows(X.get_n_rows()) | : n_rows(X.get_n_rows()) | |||
, n_cols(X.get_n_cols()) | , n_cols(X.get_n_cols()) | |||
, n_elem(X.get_n_elem()) | , n_elem(X.get_n_elem()) | |||
, vec_state(0) | , vec_state(0) | |||
, mem_state(0) | , mem_state(0) | |||
, mem() | , mem() | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
init_cold(); | init_cold(); | |||
eop_type::apply(*this, X); | eop_type::apply(*this, X); | |||
} | } | |||
//! create a matrix from eOp, i.e. run the previously delayed unary operati ons | //! create a matrix from eOp, i.e. run the previously delayed unary operati ons | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator=(const eOp<T1, eop_type>& X) | Mat<eT>::operator=(const eOp<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const bool bad_alias = (eOp<T1, eop_type>::proxy_type::has_subview && X .P.is_alias(*this)); | const bool bad_alias = (eOp<T1, eop_type>::proxy_type::has_subview && X .P.is_alias(*this)); | |||
if(bad_alias == false) | if(bad_alias == false) | |||
{ | { | |||
init_warm(X.get_n_rows(), X.get_n_cols()); | init_warm(X.get_n_rows(), X.get_n_cols()); | |||
eop_type::apply(*this, X); | eop_type::apply(*this, X); | |||
} | } | |||
else | else | |||
skipping to change at line 3449 | skipping to change at line 3449 | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator+=(const eOp<T1, eop_type>& X) | Mat<eT>::operator+=(const eOp<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
eop_type::apply_inplace_plus(*this, X); | eop_type::apply_inplace_plus(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator-=(const eOp<T1, eop_type>& X) | Mat<eT>::operator-=(const eOp<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
eop_type::apply_inplace_minus(*this, X); | eop_type::apply_inplace_minus(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator*=(const eOp<T1, eop_type>& X) | Mat<eT>::operator*=(const eOp<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
glue_times::apply_inplace(*this, X); | glue_times::apply_inplace(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator%=(const eOp<T1, eop_type>& X) | Mat<eT>::operator%=(const eOp<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
eop_type::apply_inplace_schur(*this, X); | eop_type::apply_inplace_schur(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator/=(const eOp<T1, eop_type>& X) | Mat<eT>::operator/=(const eOp<T1, eop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
eop_type::apply_inplace_div(*this, X); | eop_type::apply_inplace_div(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! EXPERIMENTAL | //! EXPERIMENTAL | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
skipping to change at line 3631 | skipping to change at line 3631 | |||
Mat<eT>::Mat(const Glue<T1, T2, glue_type>& X) | Mat<eT>::Mat(const Glue<T1, T2, glue_type>& X) | |||
: n_rows(0) | : n_rows(0) | |||
, n_cols(0) | , n_cols(0) | |||
, n_elem(0) | , n_elem(0) | |||
, vec_state(0) | , vec_state(0) | |||
, mem_state(0) | , mem_state(0) | |||
, mem() | , mem() | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
glue_type::apply(*this, X); | glue_type::apply(*this, X); | |||
} | } | |||
//! create a matrix from Glue, i.e. run the previously delayed binary opera tions | //! create a matrix from Glue, i.e. run the previously delayed binary opera tions | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator=(const Glue<T1, T2, glue_type>& X) | Mat<eT>::operator=(const Glue<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
glue_type::apply(*this, X); | glue_type::apply(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place matrix addition, with the right-hand-side operands having dela yed operations | //! in-place matrix addition, with the right-hand-side operands having dela yed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator+=(const Glue<T1, T2, glue_type>& X) | Mat<eT>::operator+=(const Glue<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const Mat<eT> m(X); | const Mat<eT> m(X); | |||
return (*this).operator+=(m); | return (*this).operator+=(m); | |||
} | } | |||
//! in-place matrix subtraction, with the right-hand-side operands having d elayed operations | //! in-place matrix subtraction, with the right-hand-side operands having d elayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator-=(const Glue<T1, T2, glue_type>& X) | Mat<eT>::operator-=(const Glue<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const Mat<eT> m(X); | const Mat<eT> m(X); | |||
return (*this).operator-=(m); | return (*this).operator-=(m); | |||
} | } | |||
//! in-place matrix multiplications, with the right-hand-side operands havi ng delayed operations | //! in-place matrix multiplications, with the right-hand-side operands havi ng delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator*=(const Glue<T1, T2, glue_type>& X) | Mat<eT>::operator*=(const Glue<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
glue_times::apply_inplace(*this, X); | glue_times::apply_inplace(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place matrix element-wise multiplication, with the right-hand-side o perands having delayed operations | //! in-place matrix element-wise multiplication, with the right-hand-side o perands having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator%=(const Glue<T1, T2, glue_type>& X) | Mat<eT>::operator%=(const Glue<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const Mat<eT> m(X); | const Mat<eT> m(X); | |||
return (*this).operator%=(m); | return (*this).operator%=(m); | |||
} | } | |||
//! in-place matrix element-wise division, with the right-hand-side operand s having delayed operations | //! in-place matrix element-wise division, with the right-hand-side operand s having delayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator/=(const Glue<T1, T2, glue_type>& X) | Mat<eT>::operator/=(const Glue<T1, T2, glue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const Mat<eT> m(X); | const Mat<eT> m(X); | |||
return (*this).operator/=(m); | return (*this).operator/=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
skipping to change at line 3779 | skipping to change at line 3779 | |||
Mat<eT>::Mat(const eGlue<T1, T2, eglue_type>& X) | Mat<eT>::Mat(const eGlue<T1, T2, eglue_type>& X) | |||
: n_rows(X.get_n_rows()) | : n_rows(X.get_n_rows()) | |||
, n_cols(X.get_n_cols()) | , n_cols(X.get_n_cols()) | |||
, n_elem(X.get_n_elem()) | , n_elem(X.get_n_elem()) | |||
, vec_state(0) | , vec_state(0) | |||
, mem_state(0) | , mem_state(0) | |||
, mem() | , mem() | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
init_cold(); | init_cold(); | |||
eglue_type::apply(*this, X); | eglue_type::apply(*this, X); | |||
} | } | |||
//! create a matrix from eGlue, i.e. run the previously delayed binary oper ations | //! create a matrix from eGlue, i.e. run the previously delayed binary oper ations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator=(const eGlue<T1, T2, eglue_type>& X) | Mat<eT>::operator=(const eGlue<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
const bool bad_alias = | const bool bad_alias = | |||
( | ( | |||
(eGlue<T1, T2, eglue_type>::proxy1_type::has_subview && X.P1.is_alias (*this)) | (eGlue<T1, T2, eglue_type>::proxy1_type::has_subview && X.P1.is_alias (*this)) | |||
|| | || | |||
(eGlue<T1, T2, eglue_type>::proxy2_type::has_subview && X.P2.is_alias (*this)) | (eGlue<T1, T2, eglue_type>::proxy2_type::has_subview && X.P2.is_alias (*this)) | |||
); | ); | |||
if(bad_alias == false) | if(bad_alias == false) | |||
{ | { | |||
skipping to change at line 3833 | skipping to change at line 3833 | |||
//! in-place matrix addition, with the right-hand-side operands having dela yed operations | //! in-place matrix addition, with the right-hand-side operands having dela yed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator+=(const eGlue<T1, T2, eglue_type>& X) | Mat<eT>::operator+=(const eGlue<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
eglue_type::apply_inplace_plus(*this, X); | eglue_type::apply_inplace_plus(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! in-place matrix subtraction, with the right-hand-side operands having d elayed operations | //! in-place matrix subtraction, with the right-hand-side operands having d elayed operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator-=(const eGlue<T1, T2, eglue_type>& X) | Mat<eT>::operator-=(const eGlue<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
eglue_type::apply_inplace_minus(*this, X); | eglue_type::apply_inplace_minus(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator*=(const eGlue<T1, T2, eglue_type>& X) | Mat<eT>::operator*=(const eGlue<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
glue_times::apply_inplace(*this, X); | glue_times::apply_inplace(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator%=(const eGlue<T1, T2, eglue_type>& X) | Mat<eT>::operator%=(const eGlue<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
eglue_type::apply_inplace_schur(*this, X); | eglue_type::apply_inplace_schur(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
inline | inline | |||
const Mat<eT>& | const Mat<eT>& | |||
Mat<eT>::operator/=(const eGlue<T1, T2, eglue_type>& X) | Mat<eT>::operator/=(const eGlue<T1, T2, eglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
lse )); | arma_type_check(( is_same_type< eT, typename T2::elem_type >::no )); | |||
arma_type_check(( is_same_type< eT, typename T2::elem_type >::value == fa | ||||
lse )); | ||||
eglue_type::apply_inplace_div(*this, X); | eglue_type::apply_inplace_div(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
//! EXPERIMENTAL: create a matrix from mtGlue, i.e. run the previously dela yed binary operations | //! EXPERIMENTAL: create a matrix from mtGlue, i.e. run the previously dela yed binary operations | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
Mat<eT>::Mat(const mtGlue<eT, T1, T2, glue_type>& X) | Mat<eT>::Mat(const mtGlue<eT, T1, T2, glue_type>& X) | |||
End of changes. 39 change blocks. | ||||
83 lines changed or deleted | 55 lines changed or added | |||
OpCube_bones.hpp | OpCube_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup OpCube | //! \addtogroup OpCube | |||
//! @{ | //! @{ | |||
//! Analog of the Op class, intended for cubes | //! Analog of the Op class, intended for cubes | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
OpCube_meat.hpp | OpCube_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup OpCube | //! \addtogroup OpCube | |||
//! @{ | //! @{ | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
OpCube<T1, op_type>::OpCube(const BaseCube<typename T1::elem_type, T1>& in_ m) | OpCube<T1, op_type>::OpCube(const BaseCube<typename T1::elem_type, T1>& in_ m) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Op_bones.hpp | Op_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Op | //! \addtogroup Op | |||
//! @{ | //! @{ | |||
//! Class for storing data required for delayed unary operations, | //! Class for storing data required for delayed unary operations, | |||
//! such as the operand (e.g. the matrix to which the operation is to be ap plied) and the unary operator (e.g. inverse). | //! such as the operand (e.g. the matrix to which the operation is to be ap plied) and the unary operator (e.g. inverse). | |||
skipping to change at line 30 | skipping to change at line 30 | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
class Op : public Base<typename T1::elem_type, Op<T1, op_type> > | class Op : public Base<typename T1::elem_type, Op<T1, op_type> > | |||
{ | { | |||
public: | public: | |||
typedef typename T1::elem_type elem_type; | typedef typename T1::elem_type elem_type; | |||
typedef typename get_pod_type<elem_type>::result pod_type; | typedef typename get_pod_type<elem_type>::result pod_type; | |||
static const bool is_row = ( T1::is_col && (is_same_type<op_type, op_stra ns>::value || is_same_type<op_type, op_htrans>::value || is_same_type<op_ty pe, op_htrans2>::value) ); | static const bool is_row = ( T1::is_col && (is_same_type<op_type, op_stra ns>::value || is_same_type<op_type, op_htrans>::value || is_same_type<op_ty pe, op_htrans2>::value) ); | |||
static const bool is_col = ( T1::is_row && (is_same_type<op_type, op_stra ns>::value || is_same_type<op_type, op_htrans>::value || is_same_type<op_ty pe, op_htrans2>::value) ) || (is_same_type<op_type, op_diagvec>::value); | static const bool is_col = ( T1::is_row && (is_same_type<op_type, op_stra ns>::value || is_same_type<op_type, op_htrans>::value || is_same_type<op_ty pe, op_htrans2>::value) ) || (is_same_type<op_type, op_diagvec>::value) || (is_same_type<op_type, op_vectorise_col>::value); | |||
inline explicit Op(const T1& in_m); | inline explicit Op(const T1& in_m); | |||
inline Op(const T1& in_m, const elem_type in_aux); | inline Op(const T1& in_m, const elem_type in_aux); | |||
inline Op(const T1& in_m, const elem_type in_aux, const uword in_aux_uword_a, const uword in_aux_uword_b); | inline Op(const T1& in_m, const elem_type in_aux, const uword in_aux_uword_a, const uword in_aux_uword_b); | |||
inline Op(const T1& in_m, const uword in_aux_uword_a, const uword in_aux_uword_b); | inline Op(const T1& in_m, const uword in_aux_uword_a, const uword in_aux_uword_b); | |||
inline Op(const T1& in_m, const uword in_aux_uword_a, const uword in_aux_uword_b, const uword in_aux_uword_c, const char junk); | inline Op(const T1& in_m, const uword in_aux_uword_a, const uword in_aux_uword_b, const uword in_aux_uword_c, const char junk); | |||
inline ~Op(); | inline ~Op(); | |||
arma_aligned const T1& m; //!< storage of reference to t he operand (eg. a matrix) | arma_aligned const T1& m; //!< storage of reference to t he operand (eg. a matrix) | |||
arma_aligned elem_type aux; //!< storage of auxiliary data , user defined format | arma_aligned elem_type aux; //!< storage of auxiliary data , user defined format | |||
End of changes. 3 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
Op_meat.hpp | Op_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Op | //! \addtogroup Op | |||
//! @{ | //! @{ | |||
template<typename T1, typename op_type> | template<typename T1, typename op_type> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Proxy.hpp | Proxy.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Proxy | //! \addtogroup Proxy | |||
//! @{ | //! @{ | |||
// ea_type is the "element accessor" type, | // ea_type is the "element accessor" type, | |||
// which can provide access to elements via operator[] | // which can provide access to elements via operator[] | |||
skipping to change at line 1112 | skipping to change at line 1112 | |||
arma_inline ea_type get_ea() const { return Proxy_htrans2 ::get_ea(); } | arma_inline ea_type get_ea() const { return Proxy_htrans2 ::get_ea(); } | |||
arma_inline aligned_ea_type get_aligned_ea() const { return Proxy_htrans2 ::get_aligned_ea(); } | arma_inline aligned_ea_type get_aligned_ea() const { return Proxy_htrans2 ::get_aligned_ea(); } | |||
template<typename eT2> | template<typename eT2> | |||
arma_inline bool is_alias(const Mat<eT2>& X) const { return Proxy_htrans2 ::is_alias(X); } | arma_inline bool is_alias(const Mat<eT2>& X) const { return Proxy_htrans2 ::is_alias(X); } | |||
arma_inline bool is_aligned() const { return Proxy_htrans2::is_aligned(); } | arma_inline bool is_aligned() const { return Proxy_htrans2::is_aligned(); } | |||
}; | }; | |||
template<typename T1> | ||||
class Proxy< Op<T1, op_vectorise_col> > | ||||
{ | ||||
public: | ||||
typedef typename T1::elem_type elem_type; | ||||
typedef typename get_pod_type<elem_type>::result pod_type; | ||||
typedef Mat<elem_type> stored_type; | ||||
typedef const elem_type* ea_type; | ||||
typedef const Mat<elem_type>& aligned_ea_type; | ||||
static const bool prefer_at_accessor = false; | ||||
static const bool has_subview = true; | ||||
static const bool is_fixed = false; | ||||
static const bool fake_mat = true; | ||||
static const bool is_row = false; | ||||
static const bool is_col = true; | ||||
arma_aligned const unwrap<T1> U; | ||||
arma_aligned const Mat<elem_type> Q; | ||||
inline explicit Proxy(const Op<T1, op_vectorise_col>& A) | ||||
: U(A.m) | ||||
, Q(const_cast<elem_type*>(U.M.memptr()), U.M.n_elem, 1, false, false) | ||||
{ | ||||
arma_extra_debug_sigprint(); | ||||
} | ||||
arma_inline uword get_n_rows() const { return Q.n_rows; } | ||||
arma_inline uword get_n_cols() const { return 1; } | ||||
arma_inline uword get_n_elem() const { return Q.n_elem; } | ||||
arma_inline elem_type operator[] (const uword i) const { r | ||||
eturn Q[i]; } | ||||
arma_inline elem_type at (const uword row, const uword) const { r | ||||
eturn Q[row]; } | ||||
arma_inline elem_type at_alt (const uword i) const { r | ||||
eturn Q.at_alt(i); } | ||||
arma_inline ea_type get_ea() const { return Q.memptr(); } | ||||
arma_inline aligned_ea_type get_aligned_ea() const { return Q; } | ||||
template<typename eT2> | ||||
arma_inline bool is_alias(const Mat<eT2>& X) const { return ( void_ptr(&X | ||||
) == void_ptr(&(U.M)) ); } | ||||
arma_inline bool is_aligned() const { return memory::is_aligned(Q.memptr( | ||||
)); } | ||||
}; | ||||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
class Proxy< Glue<T1, T2, glue_type> > | class Proxy< Glue<T1, T2, glue_type> > | |||
{ | { | |||
public: | public: | |||
typedef typename T1::elem_type elem_type; | typedef typename T1::elem_type elem_type; | |||
typedef typename get_pod_type<elem_type>::result pod_type; | typedef typename get_pod_type<elem_type>::result pod_type; | |||
typedef Mat<elem_type> stored_type; | typedef Mat<elem_type> stored_type; | |||
typedef const elem_type* ea_type; | typedef const elem_type* ea_type; | |||
typedef const Mat<elem_type>& aligned_ea_type; | typedef const Mat<elem_type>& aligned_ea_type; | |||
End of changes. 3 change blocks. | ||||
1 lines changed or deleted | 52 lines changed or added | |||
ProxyCube.hpp | ProxyCube.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup ProxyCube | //! \addtogroup ProxyCube | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
class ProxyCube | class ProxyCube | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Row_bones.hpp | Row_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Row | //! \addtogroup Row | |||
//! @{ | //! @{ | |||
//! Class for row vectors (matrices with only one row) | //! Class for row vectors (matrices with only one row) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
Row_meat.hpp | Row_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup Row | //! \addtogroup Row | |||
//! @{ | //! @{ | |||
//! construct an empty row vector | //! construct an empty row vector | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
SpBase_bones.hpp | SpBase_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup SpBase | //! \addtogroup SpBase | |||
//! @{ | //! @{ | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
struct SpBase | struct SpBase | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
SpBase_meat.hpp | SpBase_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup SpBase | //! \addtogroup SpBase | |||
//! @{ | //! @{ | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
SpMat_meat.hpp | SpMat_meat.hpp | |||
---|---|---|---|---|
skipping to change at line 601 | skipping to change at line 601 | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
typedef typename T1::elem_type T; | typedef typename T1::elem_type T; | |||
// Make sure eT is complex and T is not (compile-time check). | // Make sure eT is complex and T is not (compile-time check). | |||
arma_type_check(( is_complex<eT>::value == false )); | arma_type_check(( is_complex<eT>::value == false )); | |||
arma_type_check(( is_complex< T>::value == true )); | arma_type_check(( is_complex< T>::value == true )); | |||
// Compile-time abort if types are not compatible. | // Compile-time abort if types are not compatible. | |||
arma_type_check(( is_same_type< std::complex<T>, eT >::value == false )); | arma_type_check(( is_same_type< std::complex<T>, eT >::no )); | |||
const unwrap_spmat<T1> tmp1(A.get_ref()); | const unwrap_spmat<T1> tmp1(A.get_ref()); | |||
const unwrap_spmat<T2> tmp2(B.get_ref()); | const unwrap_spmat<T2> tmp2(B.get_ref()); | |||
const SpMat<T>& X = tmp1.M; | const SpMat<T>& X = tmp1.M; | |||
const SpMat<T>& Y = tmp2.M; | const SpMat<T>& Y = tmp2.M; | |||
arma_debug_assert_same_size(X.n_rows, X.n_cols, Y.n_rows, Y.n_cols, "SpMa t()"); | arma_debug_assert_same_size(X.n_rows, X.n_cols, Y.n_rows, Y.n_cols, "SpMa t()"); | |||
const uword l_n_rows = X.n_rows; | const uword l_n_rows = X.n_rows; | |||
skipping to change at line 1317 | skipping to change at line 1317 | |||
, n_cols(0) | , n_cols(0) | |||
, n_elem(0) | , n_elem(0) | |||
, n_nonzero(0) | , n_nonzero(0) | |||
, vec_state(0) | , vec_state(0) | |||
, values(NULL) // set in application of sparse operation | , values(NULL) // set in application of sparse operation | |||
, row_indices(NULL) | , row_indices(NULL) | |||
, col_ptrs(NULL) | , col_ptrs(NULL) | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
spop_type::apply(*this, X); | spop_type::apply(*this, X); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename spop_type> | template<typename T1, typename spop_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator=(const SpOp<T1, spop_type>& X) | SpMat<eT>::operator=(const SpOp<T1, spop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
spop_type::apply(*this, X); | spop_type::apply(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename spop_type> | template<typename T1, typename spop_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator+=(const SpOp<T1, spop_type>& X) | SpMat<eT>::operator+=(const SpOp<T1, spop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator+=(m); | return (*this).operator+=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename spop_type> | template<typename T1, typename spop_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator-=(const SpOp<T1, spop_type>& X) | SpMat<eT>::operator-=(const SpOp<T1, spop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator-=(m); | return (*this).operator-=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename spop_type> | template<typename T1, typename spop_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator*=(const SpOp<T1, spop_type>& X) | SpMat<eT>::operator*=(const SpOp<T1, spop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator*=(m); | return (*this).operator*=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename spop_type> | template<typename T1, typename spop_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator%=(const SpOp<T1, spop_type>& X) | SpMat<eT>::operator%=(const SpOp<T1, spop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator%=(m); | return (*this).operator%=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename spop_type> | template<typename T1, typename spop_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator/=(const SpOp<T1, spop_type>& X) | SpMat<eT>::operator/=(const SpOp<T1, spop_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator/=(m); | return (*this).operator/=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename spglue_type> | template<typename T1, typename T2, typename spglue_type> | |||
inline | inline | |||
SpMat<eT>::SpMat(const SpGlue<T1, T2, spglue_type>& X) | SpMat<eT>::SpMat(const SpGlue<T1, T2, spglue_type>& X) | |||
skipping to change at line 1427 | skipping to change at line 1427 | |||
, n_cols(0) | , n_cols(0) | |||
, n_elem(0) | , n_elem(0) | |||
, n_nonzero(0) | , n_nonzero(0) | |||
, vec_state(0) | , vec_state(0) | |||
, values(NULL) // extra element set in application of sparse glue | , values(NULL) // extra element set in application of sparse glue | |||
, row_indices(NULL) | , row_indices(NULL) | |||
, col_ptrs(NULL) | , col_ptrs(NULL) | |||
{ | { | |||
arma_extra_debug_sigprint_this(this); | arma_extra_debug_sigprint_this(this); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
spglue_type::apply(*this, X); | spglue_type::apply(*this, X); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename spop_type> | template<typename T1, typename spop_type> | |||
inline | inline | |||
SpMat<eT>::SpMat(const mtSpOp<eT, T1, spop_type>& X) | SpMat<eT>::SpMat(const mtSpOp<eT, T1, spop_type>& X) | |||
: n_rows(0) | : n_rows(0) | |||
, n_cols(0) | , n_cols(0) | |||
skipping to change at line 1536 | skipping to change at line 1536 | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename spglue_type> | template<typename T1, typename T2, typename spglue_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator=(const SpGlue<T1, T2, spglue_type>& X) | SpMat<eT>::operator=(const SpGlue<T1, T2, spglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
spglue_type::apply(*this, X); | spglue_type::apply(*this, X); | |||
return *this; | return *this; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename spglue_type> | template<typename T1, typename T2, typename spglue_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator+=(const SpGlue<T1, T2, spglue_type>& X) | SpMat<eT>::operator+=(const SpGlue<T1, T2, spglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator+=(m); | return (*this).operator+=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename spglue_type> | template<typename T1, typename T2, typename spglue_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator-=(const SpGlue<T1, T2, spglue_type>& X) | SpMat<eT>::operator-=(const SpGlue<T1, T2, spglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator-=(m); | return (*this).operator-=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename spglue_type> | template<typename T1, typename T2, typename spglue_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator*=(const SpGlue<T1, T2, spglue_type>& X) | SpMat<eT>::operator*=(const SpGlue<T1, T2, spglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator*=(m); | return (*this).operator*=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename spglue_type> | template<typename T1, typename T2, typename spglue_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator%=(const SpGlue<T1, T2, spglue_type>& X) | SpMat<eT>::operator%=(const SpGlue<T1, T2, spglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator%=(m); | return (*this).operator%=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
template<typename T1, typename T2, typename spglue_type> | template<typename T1, typename T2, typename spglue_type> | |||
inline | inline | |||
const SpMat<eT>& | const SpMat<eT>& | |||
SpMat<eT>::operator/=(const SpGlue<T1, T2, spglue_type>& X) | SpMat<eT>::operator/=(const SpGlue<T1, T2, spglue_type>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type< eT, typename T1::elem_type >::value == fa lse )); | arma_type_check(( is_same_type< eT, typename T1::elem_type >::no )); | |||
const SpMat<eT> m(X); | const SpMat<eT> m(X); | |||
return (*this).operator/=(m); | return (*this).operator/=(m); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
arma_inline | arma_inline | |||
SpSubview<eT> | SpSubview<eT> | |||
SpMat<eT>::row(const uword row_num) | SpMat<eT>::row(const uword row_num) | |||
End of changes. 15 change blocks. | ||||
15 lines changed or deleted | 15 lines changed or added | |||
access.hpp | access.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup access | //! \addtogroup access | |||
//! @{ | //! @{ | |||
class access | class access | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
arma_config.hpp | arma_config.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup arma_config | //! \addtogroup arma_config | |||
//! @{ | //! @{ | |||
struct arma_config | struct arma_config | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
arma_ostream_bones.hpp | arma_ostream_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup arma_ostream | //! \addtogroup arma_ostream | |||
//! @{ | //! @{ | |||
class arma_ostream_state | class arma_ostream_state | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
arma_ostream_meat.hpp | arma_ostream_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup arma_ostream | //! \addtogroup arma_ostream | |||
//! @{ | //! @{ | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
arma_static_check.hpp | arma_static_check.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup arma_static_check | //! \addtogroup arma_static_check | |||
//! @{ | //! @{ | |||
template<bool ERROR___INCORRECT_OR_UNSUPPORTED_TYPE> | template<bool ERROR___INCORRECT_OR_UNSUPPORTED_TYPE> | |||
struct arma_type_check_cxx1998 | struct arma_type_check_cxx1998 | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
arma_version.hpp | arma_version.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2013 Conrad Sanderson | // Copyright (C) 2009-2013 Conrad Sanderson | |||
// Copyright (C) 2009-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup arma_version | //! \addtogroup arma_version | |||
//! @{ | //! @{ | |||
#define ARMA_VERSION_MAJOR 3 | #define ARMA_VERSION_MAJOR 3 | |||
#define ARMA_VERSION_MINOR 900 | #define ARMA_VERSION_MINOR 909 | |||
#define ARMA_VERSION_PATCH 7 | #define ARMA_VERSION_PATCH 1 | |||
#define ARMA_VERSION_NAME "Bavarian Sunflower" | #define ARMA_VERSION_NAME "development version" | |||
struct arma_version | struct arma_version | |||
{ | { | |||
static const unsigned int major = ARMA_VERSION_MAJOR; | static const unsigned int major = ARMA_VERSION_MAJOR; | |||
static const unsigned int minor = ARMA_VERSION_MINOR; | static const unsigned int minor = ARMA_VERSION_MINOR; | |||
static const unsigned int patch = ARMA_VERSION_PATCH; | static const unsigned int patch = ARMA_VERSION_PATCH; | |||
static | static | |||
inline | inline | |||
std::string | std::string | |||
End of changes. 3 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added | |||
armadillo | armadillo | |||
---|---|---|---|---|
skipping to change at line 32 | skipping to change at line 32 | |||
#include <complex> | #include <complex> | |||
#include <vector> | #include <vector> | |||
#include "armadillo_bits/config.hpp" | #include "armadillo_bits/config.hpp" | |||
#include "armadillo_bits/compiler_setup.hpp" | #include "armadillo_bits/compiler_setup.hpp" | |||
#include "armadillo_bits/undefine_conflicts.hpp" | #include "armadillo_bits/undefine_conflicts.hpp" | |||
#if defined(ARMA_USE_CXX11) | #if defined(ARMA_USE_CXX11) | |||
#include <initializer_list> | #include <initializer_list> | |||
#include <cstdint> | #include <cstdint> | |||
// TODO: extend wall_clock class to use C++11 chrono library | ||||
#endif | #endif | |||
#if !defined(ARMA_HAVE_GETTIMEOFDAY) && !defined(ARMA_USE_BOOST_DATE) | #if !defined(ARMA_HAVE_GETTIMEOFDAY) && !defined(ARMA_USE_BOOST_DATE) | |||
#include <ctime> | #include <ctime> | |||
#endif | #endif | |||
#if defined(ARMA_HAVE_GETTIMEOFDAY) | #if defined(ARMA_HAVE_GETTIMEOFDAY) | |||
#include <sys/time.h> | #include <sys/time.h> | |||
#undef ARMA_USE_BOOST_DATE | #undef ARMA_USE_BOOST_DATE | |||
#endif | #endif | |||
skipping to change at line 55 | skipping to change at line 56 | |||
#endif | #endif | |||
#if defined(ARMA_USE_TBB_ALLOC) | #if defined(ARMA_USE_TBB_ALLOC) | |||
#include <tbb/scalable_allocator.h> | #include <tbb/scalable_allocator.h> | |||
#endif | #endif | |||
#if defined(ARMA_USE_MKL_ALLOC) | #if defined(ARMA_USE_MKL_ALLOC) | |||
#include <mkl_service.h> | #include <mkl_service.h> | |||
#endif | #endif | |||
#if defined(ARMA_HAVE_STD_TR1) | #if !defined(ARMA_USE_CXX11) | |||
// TODO: add handling of this functionality when use of C++11 is enabled | #if defined(ARMA_HAVE_STD_TR1) | |||
#include <tr1/cmath> | #include <tr1/cmath> | |||
#include <tr1/complex> | #include <tr1/complex> | |||
#elif defined(ARMA_USE_BOOST) | #elif defined(ARMA_USE_BOOST) | |||
#include <boost/math/complex.hpp> | #include <boost/math/complex.hpp> | |||
#include <boost/math/special_functions/acosh.hpp> | #include <boost/math/special_functions/acosh.hpp> | |||
#include <boost/math/special_functions/asinh.hpp> | #include <boost/math/special_functions/asinh.hpp> | |||
#include <boost/math/special_functions/atanh.hpp> | #include <boost/math/special_functions/atanh.hpp> | |||
#endif | ||||
#endif | #endif | |||
#if defined(ARMA_USE_BOOST) | #if defined(ARMA_EXTRA_DEBUG) | |||
#if defined(ARMA_EXTRA_DEBUG) | #if !defined(ARMA_HAVE_STD_SNPRINTF) | |||
#include <boost/format.hpp> | #if defined(ARMA_USE_CXX11) | |||
#include <boost/current_function.hpp> | #include <cstdio> | |||
#define ARMA_USE_BOOST_FORMAT | #define ARMA_HAVE_STD_SNPRINTF | |||
#elif defined(ARMA_USE_BOOST) | ||||
#include <boost/format.hpp> | ||||
#define ARMA_USE_BOOST_FORMAT | ||||
#endif | ||||
#endif | #endif | |||
#endif | #endif | |||
#include "armadillo_bits/include_atlas.hpp" | #include "armadillo_bits/include_atlas.hpp" | |||
#if defined(ARMA_USE_HDF5) | #if defined(ARMA_USE_HDF5) | |||
#include <hdf5.h> | #include <hdf5.h> | |||
#endif | #endif | |||
//! \namespace arma namespace for Armadillo classes and functions | //! \namespace arma namespace for Armadillo classes and functions | |||
skipping to change at line 195 | skipping to change at line 201 | |||
#include "armadillo_bits/op_min_bones.hpp" | #include "armadillo_bits/op_min_bones.hpp" | |||
#include "armadillo_bits/op_mean_bones.hpp" | #include "armadillo_bits/op_mean_bones.hpp" | |||
#include "armadillo_bits/op_median_bones.hpp" | #include "armadillo_bits/op_median_bones.hpp" | |||
#include "armadillo_bits/op_sort_bones.hpp" | #include "armadillo_bits/op_sort_bones.hpp" | |||
#include "armadillo_bits/op_sum_bones.hpp" | #include "armadillo_bits/op_sum_bones.hpp" | |||
#include "armadillo_bits/op_stddev_bones.hpp" | #include "armadillo_bits/op_stddev_bones.hpp" | |||
#include "armadillo_bits/op_strans_bones.hpp" | #include "armadillo_bits/op_strans_bones.hpp" | |||
#include "armadillo_bits/op_var_bones.hpp" | #include "armadillo_bits/op_var_bones.hpp" | |||
#include "armadillo_bits/op_repmat_bones.hpp" | #include "armadillo_bits/op_repmat_bones.hpp" | |||
#include "armadillo_bits/op_reshape_bones.hpp" | #include "armadillo_bits/op_reshape_bones.hpp" | |||
#include "armadillo_bits/op_vectorise_bones.hpp" | ||||
#include "armadillo_bits/op_resize_bones.hpp" | #include "armadillo_bits/op_resize_bones.hpp" | |||
#include "armadillo_bits/op_cov_bones.hpp" | #include "armadillo_bits/op_cov_bones.hpp" | |||
#include "armadillo_bits/op_cor_bones.hpp" | #include "armadillo_bits/op_cor_bones.hpp" | |||
#include "armadillo_bits/op_shuffle_bones.hpp" | #include "armadillo_bits/op_shuffle_bones.hpp" | |||
#include "armadillo_bits/op_prod_bones.hpp" | #include "armadillo_bits/op_prod_bones.hpp" | |||
#include "armadillo_bits/op_pinv_bones.hpp" | #include "armadillo_bits/op_pinv_bones.hpp" | |||
#include "armadillo_bits/op_dotext_bones.hpp" | #include "armadillo_bits/op_dotext_bones.hpp" | |||
#include "armadillo_bits/op_flip_bones.hpp" | #include "armadillo_bits/op_flip_bones.hpp" | |||
#include "armadillo_bits/op_princomp_bones.hpp" | #include "armadillo_bits/op_princomp_bones.hpp" | |||
#include "armadillo_bits/op_misc_bones.hpp" | #include "armadillo_bits/op_misc_bones.hpp" | |||
skipping to change at line 372 | skipping to change at line 379 | |||
#include "armadillo_bits/fn_var.hpp" | #include "armadillo_bits/fn_var.hpp" | |||
#include "armadillo_bits/fn_sort.hpp" | #include "armadillo_bits/fn_sort.hpp" | |||
#include "armadillo_bits/fn_sort_index.hpp" | #include "armadillo_bits/fn_sort_index.hpp" | |||
#include "armadillo_bits/fn_strans.hpp" | #include "armadillo_bits/fn_strans.hpp" | |||
#include "armadillo_bits/fn_chol.hpp" | #include "armadillo_bits/fn_chol.hpp" | |||
#include "armadillo_bits/fn_qr.hpp" | #include "armadillo_bits/fn_qr.hpp" | |||
#include "armadillo_bits/fn_svd.hpp" | #include "armadillo_bits/fn_svd.hpp" | |||
#include "armadillo_bits/fn_solve.hpp" | #include "armadillo_bits/fn_solve.hpp" | |||
#include "armadillo_bits/fn_repmat.hpp" | #include "armadillo_bits/fn_repmat.hpp" | |||
#include "armadillo_bits/fn_reshape.hpp" | #include "armadillo_bits/fn_reshape.hpp" | |||
#include "armadillo_bits/fn_vectorise.hpp" | ||||
#include "armadillo_bits/fn_resize.hpp" | #include "armadillo_bits/fn_resize.hpp" | |||
#include "armadillo_bits/fn_cov.hpp" | #include "armadillo_bits/fn_cov.hpp" | |||
#include "armadillo_bits/fn_cor.hpp" | #include "armadillo_bits/fn_cor.hpp" | |||
#include "armadillo_bits/fn_shuffle.hpp" | #include "armadillo_bits/fn_shuffle.hpp" | |||
#include "armadillo_bits/fn_prod.hpp" | #include "armadillo_bits/fn_prod.hpp" | |||
#include "armadillo_bits/fn_eps.hpp" | #include "armadillo_bits/fn_eps.hpp" | |||
#include "armadillo_bits/fn_pinv.hpp" | #include "armadillo_bits/fn_pinv.hpp" | |||
#include "armadillo_bits/fn_rank.hpp" | #include "armadillo_bits/fn_rank.hpp" | |||
#include "armadillo_bits/fn_kron.hpp" | #include "armadillo_bits/fn_kron.hpp" | |||
#include "armadillo_bits/fn_flip.hpp" | #include "armadillo_bits/fn_flip.hpp" | |||
skipping to change at line 410 | skipping to change at line 418 | |||
#include "armadillo_bits/fn_spones.hpp" | #include "armadillo_bits/fn_spones.hpp" | |||
#include "armadillo_bits/fn_sprandn.hpp" | #include "armadillo_bits/fn_sprandn.hpp" | |||
#include "armadillo_bits/fn_sprandu.hpp" | #include "armadillo_bits/fn_sprandu.hpp" | |||
// misc stuff | // misc stuff | |||
#include "armadillo_bits/hdf5_misc.hpp" | #include "armadillo_bits/hdf5_misc.hpp" | |||
#include "armadillo_bits/fft_engine.hpp" | #include "armadillo_bits/fft_engine.hpp" | |||
// | // | |||
// class meat | // classes implementing various forms of dense matrix multiplication | |||
#include "armadillo_bits/mul_gemv.hpp" | ||||
#include "armadillo_bits/mul_gemm.hpp" | ||||
#include "armadillo_bits/mul_gemm_mixed.hpp" | ||||
#include "armadillo_bits/mul_syrk.hpp" | ||||
#include "armadillo_bits/mul_herk.hpp" | ||||
#include "armadillo_bits/gemv.hpp" | // | |||
#include "armadillo_bits/gemm.hpp" | // class meat | |||
#include "armadillo_bits/gemm_mixed.hpp" | ||||
#include "armadillo_bits/eop_core_meat.hpp" | #include "armadillo_bits/eop_core_meat.hpp" | |||
#include "armadillo_bits/eglue_core_meat.hpp" | #include "armadillo_bits/eglue_core_meat.hpp" | |||
#include "armadillo_bits/cond_rel_meat.hpp" | #include "armadillo_bits/cond_rel_meat.hpp" | |||
#include "armadillo_bits/arrayops_meat.hpp" | #include "armadillo_bits/arrayops_meat.hpp" | |||
#include "armadillo_bits/podarray_meat.hpp" | #include "armadillo_bits/podarray_meat.hpp" | |||
#include "armadillo_bits/auxlib_meat.hpp" | #include "armadillo_bits/auxlib_meat.hpp" | |||
#include "armadillo_bits/injector_meat.hpp" | #include "armadillo_bits/injector_meat.hpp" | |||
skipping to change at line 470 | skipping to change at line 483 | |||
#include "armadillo_bits/op_min_meat.hpp" | #include "armadillo_bits/op_min_meat.hpp" | |||
#include "armadillo_bits/op_mean_meat.hpp" | #include "armadillo_bits/op_mean_meat.hpp" | |||
#include "armadillo_bits/op_median_meat.hpp" | #include "armadillo_bits/op_median_meat.hpp" | |||
#include "armadillo_bits/op_sort_meat.hpp" | #include "armadillo_bits/op_sort_meat.hpp" | |||
#include "armadillo_bits/op_sum_meat.hpp" | #include "armadillo_bits/op_sum_meat.hpp" | |||
#include "armadillo_bits/op_stddev_meat.hpp" | #include "armadillo_bits/op_stddev_meat.hpp" | |||
#include "armadillo_bits/op_strans_meat.hpp" | #include "armadillo_bits/op_strans_meat.hpp" | |||
#include "armadillo_bits/op_var_meat.hpp" | #include "armadillo_bits/op_var_meat.hpp" | |||
#include "armadillo_bits/op_repmat_meat.hpp" | #include "armadillo_bits/op_repmat_meat.hpp" | |||
#include "armadillo_bits/op_reshape_meat.hpp" | #include "armadillo_bits/op_reshape_meat.hpp" | |||
#include "armadillo_bits/op_vectorise_meat.hpp" | ||||
#include "armadillo_bits/op_resize_meat.hpp" | #include "armadillo_bits/op_resize_meat.hpp" | |||
#include "armadillo_bits/op_cov_meat.hpp" | #include "armadillo_bits/op_cov_meat.hpp" | |||
#include "armadillo_bits/op_cor_meat.hpp" | #include "armadillo_bits/op_cor_meat.hpp" | |||
#include "armadillo_bits/op_shuffle_meat.hpp" | #include "armadillo_bits/op_shuffle_meat.hpp" | |||
#include "armadillo_bits/op_prod_meat.hpp" | #include "armadillo_bits/op_prod_meat.hpp" | |||
#include "armadillo_bits/op_pinv_meat.hpp" | #include "armadillo_bits/op_pinv_meat.hpp" | |||
#include "armadillo_bits/op_dotext_meat.hpp" | #include "armadillo_bits/op_dotext_meat.hpp" | |||
#include "armadillo_bits/op_flip_meat.hpp" | #include "armadillo_bits/op_flip_meat.hpp" | |||
#include "armadillo_bits/op_princomp_meat.hpp" | #include "armadillo_bits/op_princomp_meat.hpp" | |||
#include "armadillo_bits/op_misc_meat.hpp" | #include "armadillo_bits/op_misc_meat.hpp" | |||
End of changes. 8 change blocks. | ||||
18 lines changed or deleted | 32 lines changed or added | |||
arrayops_bones.hpp | arrayops_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011-2013 Conrad Sanderson | // Copyright (C) 2011-2013 Conrad Sanderson | |||
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup arrayops | //! \addtogroup arrayops | |||
//! @{ | //! @{ | |||
class arrayops | class arrayops | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
arrayops_meat.hpp | arrayops_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011-2013 Conrad Sanderson | // Copyright (C) 2011-2013 Conrad Sanderson | |||
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup arrayops | //! \addtogroup arrayops | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
arma_hot | arma_hot | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
atlas_bones.hpp | atlas_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
#ifdef ARMA_USE_ATLAS | #ifdef ARMA_USE_ATLAS | |||
//! \namespace atlas namespace for ATLAS functions (imported from the globa l namespace) | //! \namespace atlas namespace for ATLAS functions (imported from the globa l namespace) | |||
namespace atlas | namespace atlas | |||
{ | { | |||
using ::CblasColMajor; | using ::CblasColMajor; | |||
using ::CblasNoTrans; | using ::CblasNoTrans; | |||
using ::CblasTrans; | using ::CblasTrans; | |||
using ::CblasConjTrans; | using ::CblasConjTrans; | |||
using ::CblasLower; | ||||
using ::CblasUpper; | ||||
#if defined(ARMA_USE_WRAPPER) | #if defined(ARMA_USE_WRAPPER) | |||
extern "C" | extern "C" | |||
{ | { | |||
float wrapper_cblas_sdot(const int N, const float *X, const int incX, const float *Y, const int incY); | float wrapper_cblas_sdot(const int N, const float *X, const int incX, const float *Y, const int incY); | |||
double wrapper_cblas_ddot(const int N, const double *X, const int incX, const double *Y, const int incY); | double wrapper_cblas_ddot(const int N, const double *X, const int incX, const double *Y, const int incY); | |||
void wrapper_cblas_cdotu_sub(const int N, const void *X, const int incX , const void *Y, const int incY, void *dotu); | void wrapper_cblas_cdotu_sub(const int N, const void *X, const int incX , const void *Y, const int incY, void *dotu); | |||
void wrapper_cblas_zdotu_sub(const int N, const void *X, const int incX , const void *Y, const int incY, void *dotu); | void wrapper_cblas_zdotu_sub(const int N, const void *X, const int incX , const void *Y, const int incY, void *dotu); | |||
skipping to change at line 57 | skipping to change at line 59 | |||
const double *A, const int lda, const double * B, const int ldb, const double beta, double *C, const int ldc); | const double *A, const int lda, const double * B, const int ldb, const double beta, double *C, const int ldc); | |||
void wrapper_cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS _TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, | void wrapper_cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS _TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, | |||
const int M, const int N, const int K, const v oid *alpha, | const int M, const int N, const int K, const v oid *alpha, | |||
const void *A, const int lda, const void *B, c onst int ldb, const void *beta, void *C, const int ldc); | const void *A, const int lda, const void *B, c onst int ldb, const void *beta, void *C, const int ldc); | |||
void wrapper_cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS _TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, | void wrapper_cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS _TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, | |||
const int M, const int N, const int K, const v oid *alpha, | const int M, const int N, const int K, const v oid *alpha, | |||
const void *A, const int lda, const void *B, c onst int ldb, const void *beta, void *C, const int ldc); | const void *A, const int lda, const void *B, c onst int ldb, const void *beta, void *C, const int ldc); | |||
void wrapper_cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS | ||||
_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, | ||||
const int N, const int K, const float alpha, | ||||
const float *A, const int lda, const float bet | ||||
a, float *C, const int ldc); | ||||
void wrapper_cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS | ||||
_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, | ||||
const int N, const int K, const double alpha, | ||||
const double *A, const int lda, const double b | ||||
eta, double *C, const int ldc); | ||||
void wrapper_cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS | ||||
_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, | ||||
const int N, const int K, const float alpha, | ||||
const void *A, const int lda, const float beta | ||||
, void *C, const int ldc); | ||||
void wrapper_cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS | ||||
_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, | ||||
const int N, const int K, const double alpha, | ||||
const void *A, const int lda, const double bet | ||||
a, void *C, const int ldc); | ||||
int wrapper_clapack_sgetrf(const enum CBLAS_ORDER Order, const int M, c onst int N, float *A, const int lda, int *ipiv); | int wrapper_clapack_sgetrf(const enum CBLAS_ORDER Order, const int M, c onst int N, float *A, const int lda, int *ipiv); | |||
int wrapper_clapack_dgetrf(const enum CBLAS_ORDER Order, const int M, c onst int N, double *A, const int lda, int *ipiv); | int wrapper_clapack_dgetrf(const enum CBLAS_ORDER Order, const int M, c onst int N, double *A, const int lda, int *ipiv); | |||
int wrapper_clapack_cgetrf(const enum CBLAS_ORDER Order, const int M, c onst int N, void *A, const int lda, int *ipiv); | int wrapper_clapack_cgetrf(const enum CBLAS_ORDER Order, const int M, c onst int N, void *A, const int lda, int *ipiv); | |||
int wrapper_clapack_zgetrf(const enum CBLAS_ORDER Order, const int M, c onst int N, void *A, const int lda, int *ipiv); | int wrapper_clapack_zgetrf(const enum CBLAS_ORDER Order, const int M, c onst int N, void *A, const int lda, int *ipiv); | |||
int wrapper_clapack_sgetri(const enum CBLAS_ORDER Order, const int N, f loat *A, const int lda, const int *ipiv); | int wrapper_clapack_sgetri(const enum CBLAS_ORDER Order, const int N, f loat *A, const int lda, const int *ipiv); | |||
int wrapper_clapack_dgetri(const enum CBLAS_ORDER Order, const int N, d ouble *A, const int lda, const int *ipiv); | int wrapper_clapack_dgetri(const enum CBLAS_ORDER Order, const int N, d ouble *A, const int lda, const int *ipiv); | |||
int wrapper_clapack_cgetri(const enum CBLAS_ORDER Order, const int N, v oid *A, const int lda, const int *ipiv); | int wrapper_clapack_cgetri(const enum CBLAS_ORDER Order, const int N, v oid *A, const int lda, const int *ipiv); | |||
int wrapper_clapack_zgetri(const enum CBLAS_ORDER Order, const int N, v oid *A, const int lda, const int *ipiv); | int wrapper_clapack_zgetri(const enum CBLAS_ORDER Order, const int N, v oid *A, const int lda, const int *ipiv); | |||
End of changes. 3 change blocks. | ||||
2 lines changed or deleted | 28 lines changed or added | |||
atlas_wrapper.hpp | atlas_wrapper.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
#ifdef ARMA_USE_ATLAS | #ifdef ARMA_USE_ATLAS | |||
//! \namespace atlas namespace for ATLAS functions (imported from the globa l namespace) | //! \namespace atlas namespace for ATLAS functions (imported from the globa l namespace) | |||
namespace atlas | namespace atlas | |||
{ | { | |||
skipping to change at line 158 | skipping to change at line 158 | |||
else | else | |||
if(is_supported_complex_double<eT>::value == true) | if(is_supported_complex_double<eT>::value == true) | |||
{ | { | |||
typedef std::complex<double> T; | typedef std::complex<double> T; | |||
arma_atlas(cblas_zgemm)(Order, TransA, TransB, M, N, K, (const T*)&al pha, (const T*)A, lda, (const T*)B, ldb, (const T*)&beta, (T*)C, ldc); | arma_atlas(cblas_zgemm)(Order, TransA, TransB, M, N, K, (const T*)&al pha, (const T*)A, lda, (const T*)B, ldb, (const T*)&beta, (T*)C, ldc); | |||
} | } | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
void | ||||
cblas_syrk | ||||
( | ||||
const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CB | ||||
LAS_TRANSPOSE Trans, | ||||
const int N, const int K, const double alpha, | ||||
const double* A, const int lda, const double beta, double* C, const int | ||||
ldc | ||||
) | ||||
{ | ||||
arma_type_check((is_supported_blas_type<eT>::value == false)); | ||||
if(is_float<eT>::value == true) | ||||
{ | ||||
typedef float T; | ||||
arma_atlas(cblas_ssyrk)(Order, Uplo, Trans, N, K, (const T)alpha, (co | ||||
nst T*)A, lda, (const T)beta, (T*)C, ldc); | ||||
} | ||||
else | ||||
if(is_double<eT>::value == true) | ||||
{ | ||||
typedef double T; | ||||
arma_atlas(cblas_dsyrk)(Order, Uplo, Trans, N, K, (const T)alpha, (co | ||||
nst T*)A, lda, (const T)beta, (T*)C, ldc); | ||||
} | ||||
} | ||||
template<typename T> | ||||
inline | ||||
void | ||||
cblas_herk | ||||
( | ||||
const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CB | ||||
LAS_TRANSPOSE Trans, | ||||
const int N, const int K, const T alpha, | ||||
const std::complex<T>* A, const int lda, const T beta, std::complex<T>* | ||||
C, const int ldc | ||||
) | ||||
{ | ||||
arma_type_check((is_supported_blas_type<T>::value == false)); | ||||
if(is_float<T>::value == true) | ||||
{ | ||||
typedef float TT; | ||||
typedef std::complex<float> cx_TT; | ||||
arma_atlas(cblas_cherk)(Order, Uplo, Trans, N, K, (const TT)alpha, (c | ||||
onst cx_TT*)A, lda, (const TT)beta, (cx_TT*)C, ldc); | ||||
} | ||||
else | ||||
if(is_double<T>::value == true) | ||||
{ | ||||
typedef double TT; | ||||
typedef std::complex<double> cx_TT; | ||||
arma_atlas(cblas_zherk)(Order, Uplo, Trans, N, K, (const TT)alpha, (c | ||||
onst cx_TT*)A, lda, (const TT)beta, (cx_TT*)C, ldc); | ||||
} | ||||
} | ||||
template<typename eT> | ||||
inline | ||||
int | int | |||
clapack_getrf | clapack_getrf | |||
( | ( | |||
const enum CBLAS_ORDER Order, const int M, const int N, | const enum CBLAS_ORDER Order, const int M, const int N, | |||
eT *A, const int lda, int *ipiv | eT *A, const int lda, int *ipiv | |||
) | ) | |||
{ | { | |||
arma_type_check((is_supported_blas_type<eT>::value == false)); | arma_type_check((is_supported_blas_type<eT>::value == false)); | |||
if(is_float<eT>::value == true) | if(is_float<eT>::value == true) | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 64 lines changed or added | |||
auxlib_bones.hpp | auxlib_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009 Edmund Highcock | // Copyright (C) 2009 Edmund Highcock | |||
// Copyright (C) 2011 James Sanders | // Copyright (C) 2011 James Sanders | |||
// Copyright (C) 2012 Eric Jon Sundstrom | // Copyright (C) 2012 Eric Jon Sundstrom | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup auxlib | //! \addtogroup auxlib | |||
//! @{ | //! @{ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
auxlib_meat.hpp | auxlib_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009 Edmund Highcock | // Copyright (C) 2009 Edmund Highcock | |||
// Copyright (C) 2011 James Sanders | // Copyright (C) 2011 James Sanders | |||
// Copyright (C) 2011 Stanislav Funiak | // Copyright (C) 2011 Stanislav Funiak | |||
// Copyright (C) 2012 Eric Jon Sundstrom | // Copyright (C) 2012 Eric Jon Sundstrom | |||
// Copyright (C) 2012 Michael McNeil Forbes | // Copyright (C) 2012 Michael McNeil Forbes | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
blas_bones.hpp | blas_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
#ifdef ARMA_USE_BLAS | #ifdef ARMA_USE_BLAS | |||
#if !defined(ARMA_BLAS_CAPITALS) | #if !defined(ARMA_BLAS_CAPITALS) | |||
#define arma_sdot sdot | #define arma_sdot sdot | |||
skipping to change at line 25 | skipping to change at line 25 | |||
#define arma_sgemv sgemv | #define arma_sgemv sgemv | |||
#define arma_dgemv dgemv | #define arma_dgemv dgemv | |||
#define arma_cgemv cgemv | #define arma_cgemv cgemv | |||
#define arma_zgemv zgemv | #define arma_zgemv zgemv | |||
#define arma_sgemm sgemm | #define arma_sgemm sgemm | |||
#define arma_dgemm dgemm | #define arma_dgemm dgemm | |||
#define arma_cgemm cgemm | #define arma_cgemm cgemm | |||
#define arma_zgemm zgemm | #define arma_zgemm zgemm | |||
#define arma_ssyrk ssyrk | ||||
#define arma_dsyrk dsyrk | ||||
#define arma_cherk cherk | ||||
#define arma_zherk zherk | ||||
#else | #else | |||
#define arma_sdot SDOT | #define arma_sdot SDOT | |||
#define arma_ddot DDOT | #define arma_ddot DDOT | |||
#define arma_sgemv SGEMV | #define arma_sgemv SGEMV | |||
#define arma_dgemv DGEMV | #define arma_dgemv DGEMV | |||
#define arma_cgemv CGEMV | #define arma_cgemv CGEMV | |||
#define arma_zgemv ZGEMV | #define arma_zgemv ZGEMV | |||
#define arma_sgemm SGEMM | #define arma_sgemm SGEMM | |||
#define arma_dgemm DGEMM | #define arma_dgemm DGEMM | |||
#define arma_cgemm CGEMM | #define arma_cgemm CGEMM | |||
#define arma_zgemm ZGEMM | #define arma_zgemm ZGEMM | |||
#define arma_ssyrk SSYRK | ||||
#define arma_dsyrk DSYRK | ||||
#define arma_cherk CHERK | ||||
#define arma_zherk ZHERK | ||||
#endif | #endif | |||
extern "C" | extern "C" | |||
{ | { | |||
float arma_fortran(arma_sdot)(blas_int* n, const float* x, blas_int* in cx, const float* y, blas_int* incy); | float arma_fortran(arma_sdot)(blas_int* n, const float* x, blas_int* in cx, const float* y, blas_int* incy); | |||
double arma_fortran(arma_ddot)(blas_int* n, const double* x, blas_int* in cx, const double* y, blas_int* incy); | double arma_fortran(arma_ddot)(blas_int* n, const double* x, blas_int* in cx, const double* y, blas_int* incy); | |||
void arma_fortran(arma_sgemv)(const char* transA, const blas_int* m, cons t blas_int* n, const float* alpha, const float* A, const blas_int* ldA, c onst float* x, const blas_int* incx, const float* beta, float* y, const blas_int* incy); | void arma_fortran(arma_sgemv)(const char* transA, const blas_int* m, cons t blas_int* n, const float* alpha, const float* A, const blas_int* ldA, c onst float* x, const blas_int* incx, const float* beta, float* y, const blas_int* incy); | |||
void arma_fortran(arma_dgemv)(const char* transA, const blas_int* m, cons t blas_int* n, const double* alpha, const double* A, const blas_int* ldA, c onst double* x, const blas_int* incx, const double* beta, double* y, const blas_int* incy); | void arma_fortran(arma_dgemv)(const char* transA, const blas_int* m, cons t blas_int* n, const double* alpha, const double* A, const blas_int* ldA, c onst double* x, const blas_int* incx, const double* beta, double* y, const blas_int* incy); | |||
void arma_fortran(arma_cgemv)(const char* transA, const blas_int* m, cons t blas_int* n, const void* alpha, const void* A, const blas_int* ldA, c onst void* x, const blas_int* incx, const void* beta, void* y, const blas_int* incy); | void arma_fortran(arma_cgemv)(const char* transA, const blas_int* m, cons t blas_int* n, const void* alpha, const void* A, const blas_int* ldA, c onst void* x, const blas_int* incx, const void* beta, void* y, const blas_int* incy); | |||
void arma_fortran(arma_zgemv)(const char* transA, const blas_int* m, cons t blas_int* n, const void* alpha, const void* A, const blas_int* ldA, c onst void* x, const blas_int* incx, const void* beta, void* y, const blas_int* incy); | void arma_fortran(arma_zgemv)(const char* transA, const blas_int* m, cons t blas_int* n, const void* alpha, const void* A, const blas_int* ldA, c onst void* x, const blas_int* incx, const void* beta, void* y, const blas_int* incy); | |||
void arma_fortran(arma_sgemm)(const char* transA, const char* transB, con st blas_int* m, const blas_int* n, const blas_int* k, const float* alpha, const float* A, const blas_int* ldA, const float* B, const blas_int* ldB, const float* beta, float* C, const blas_int* ldC); | void arma_fortran(arma_sgemm)(const char* transA, const char* transB, con st blas_int* m, const blas_int* n, const blas_int* k, const float* alpha, const float* A, const blas_int* ldA, const float* B, const blas_int* ldB, const float* beta, float* C, const blas_int* ldC); | |||
void arma_fortran(arma_dgemm)(const char* transA, const char* transB, con st blas_int* m, const blas_int* n, const blas_int* k, const double* alpha, const double* A, const blas_int* ldA, const double* B, const blas_int* ldB, const double* beta, double* C, const blas_int* ldC); | void arma_fortran(arma_dgemm)(const char* transA, const char* transB, con st blas_int* m, const blas_int* n, const blas_int* k, const double* alpha, const double* A, const blas_int* ldA, const double* B, const blas_int* ldB, const double* beta, double* C, const blas_int* ldC); | |||
void arma_fortran(arma_cgemm)(const char* transA, const char* transB, con st blas_int* m, const blas_int* n, const blas_int* k, const void* alpha, const void* A, const blas_int* ldA, const void* B, const blas_int* ldB, const void* beta, void* C, const blas_int* ldC); | void arma_fortran(arma_cgemm)(const char* transA, const char* transB, con st blas_int* m, const blas_int* n, const blas_int* k, const void* alpha, const void* A, const blas_int* ldA, const void* B, const blas_int* ldB, const void* beta, void* C, const blas_int* ldC); | |||
void arma_fortran(arma_zgemm)(const char* transA, const char* transB, con st blas_int* m, const blas_int* n, const blas_int* k, const void* alpha, const void* A, const blas_int* ldA, const void* B, const blas_int* ldB, const void* beta, void* C, const blas_int* ldC); | void arma_fortran(arma_zgemm)(const char* transA, const char* transB, con st blas_int* m, const blas_int* n, const blas_int* k, const void* alpha, const void* A, const blas_int* ldA, const void* B, const blas_int* ldB, const void* beta, void* C, const blas_int* ldC); | |||
void arma_fortran(arma_ssyrk)(const char* uplo, const char* transA, const | ||||
blas_int* n, const blas_int* k, const float* alpha, const float* A, cons | ||||
t blas_int* ldA, const float* beta, float* C, const blas_int* ldC); | ||||
void arma_fortran(arma_dsyrk)(const char* uplo, const char* transA, const | ||||
blas_int* n, const blas_int* k, const double* alpha, const double* A, cons | ||||
t blas_int* ldA, const double* beta, double* C, const blas_int* ldC); | ||||
void arma_fortran(arma_cherk)(const char* uplo, const char* transA, const | ||||
blas_int* n, const blas_int* k, const float* alpha, const void* A, cons | ||||
t blas_int* ldA, const float* beta, void* C, const blas_int* ldC); | ||||
void arma_fortran(arma_zherk)(const char* uplo, const char* transA, const | ||||
blas_int* n, const blas_int* k, const double* alpha, const void* A, cons | ||||
t blas_int* ldA, const double* beta, void* C, const blas_int* ldC); | ||||
// void arma_fortran(arma_dswap)(const blas_int* n, double* x, const bl as_int* incx, double* y, const blas_int* incy); | // void arma_fortran(arma_dswap)(const blas_int* n, double* x, const bl as_int* incx, double* y, const blas_int* incy); | |||
// void arma_fortran(arma_dscal)(const blas_int* n, const double* alpha , double* x, const blas_int* incx); | // void arma_fortran(arma_dscal)(const blas_int* n, const double* alpha , double* x, const blas_int* incx); | |||
// void arma_fortran(arma_dcopy)(const blas_int* n, const double* x, co nst blas_int* incx, double* y, const blas_int* incy); | // void arma_fortran(arma_dcopy)(const blas_int* n, const double* x, co nst blas_int* incx, double* y, const blas_int* incy); | |||
// void arma_fortran(arma_daxpy)(const blas_int* n, const double* alpha , const double* x, const blas_int* incx, double* y, const blas_int* incy); | // void arma_fortran(arma_daxpy)(const blas_int* n, const double* alpha , const double* x, const blas_int* incx, double* y, const blas_int* incy); | |||
// void arma_fortran(arma_dger )(const blas_int* m, const blas_int* n, const double* alpha, const double* x, const blas_int* incx, const double* y , const blas_int* incy, double* A, const blas_int* ldA); | // void arma_fortran(arma_dger )(const blas_int* m, const blas_int* n, const double* alpha, const double* x, const blas_int* incx, const double* y , const blas_int* incy, double* A, const blas_int* ldA); | |||
} | } | |||
#endif | #endif | |||
End of changes. 4 change blocks. | ||||
2 lines changed or deleted | 28 lines changed or added | |||
blas_wrapper.hpp | blas_wrapper.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
#ifdef ARMA_USE_BLAS | #ifdef ARMA_USE_BLAS | |||
//! \namespace blas namespace for BLAS functions | //! \namespace blas namespace for BLAS functions | |||
namespace blas | namespace blas | |||
{ | { | |||
skipping to change at line 82 | skipping to change at line 82 | |||
if(is_supported_complex_double<eT>::value == true) | if(is_supported_complex_double<eT>::value == true) | |||
{ | { | |||
typedef std::complex<double> T; | typedef std::complex<double> T; | |||
arma_fortran(arma_zgemm)(transA, transB, m, n, k, (const T*)alpha, (c onst T*)A, ldA, (const T*)B, ldB, (const T*)beta, (T*)C, ldC); | arma_fortran(arma_zgemm)(transA, transB, m, n, k, (const T*)alpha, (c onst T*)A, ldA, (const T*)B, ldB, (const T*)beta, (T*)C, ldC); | |||
} | } | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
void | ||||
syrk(const char* uplo, const char* transA, const blas_int* n, const blas_ | ||||
int* k, const eT* alpha, const eT* A, const blas_int* ldA, const eT* beta, | ||||
eT* C, const blas_int* ldC) | ||||
{ | ||||
arma_type_check((is_supported_blas_type<eT>::value == false)); | ||||
if(is_float<eT>::value == true) | ||||
{ | ||||
typedef float T; | ||||
arma_fortran(arma_ssyrk)(uplo, transA, n, k, (const T*)alpha, (const | ||||
T*)A, ldA, (const T*)beta, (T*)C, ldC); | ||||
} | ||||
else | ||||
if(is_double<eT>::value == true) | ||||
{ | ||||
typedef double T; | ||||
arma_fortran(arma_dsyrk)(uplo, transA, n, k, (const T*)alpha, (const | ||||
T*)A, ldA, (const T*)beta, (T*)C, ldC); | ||||
} | ||||
} | ||||
template<typename T> | ||||
inline | ||||
void | ||||
herk(const char* uplo, const char* transA, const blas_int* n, const blas_ | ||||
int* k, const T* alpha, const std::complex<T>* A, const blas_int* ldA, cons | ||||
t T* beta, std::complex<T>* C, const blas_int* ldC) | ||||
{ | ||||
arma_type_check((is_supported_blas_type<T>::value == false)); | ||||
if(is_float<T>::value == true) | ||||
{ | ||||
typedef float TT; | ||||
typedef std::complex<float> cx_TT; | ||||
arma_fortran(arma_cherk)(uplo, transA, n, k, (const TT*)alpha, (const | ||||
cx_TT*)A, ldA, (const TT*)beta, (cx_TT*)C, ldC); | ||||
} | ||||
else | ||||
if(is_double<T>::value == true) | ||||
{ | ||||
typedef double TT; | ||||
typedef std::complex<double> cx_TT; | ||||
arma_fortran(arma_zherk)(uplo, transA, n, k, (const TT*)alpha, (const | ||||
cx_TT*)A, ldA, (const TT*)beta, (cx_TT*)C, ldC); | ||||
} | ||||
} | ||||
template<typename eT> | ||||
inline | ||||
eT | eT | |||
dot(const uword n_elem, const eT* x, const eT* y) | dot(const uword n_elem, const eT* x, const eT* y) | |||
{ | { | |||
arma_type_check((is_supported_blas_type<eT>::value == false)); | arma_type_check((is_supported_blas_type<eT>::value == false)); | |||
if(is_float<eT>::value == true) | if(is_float<eT>::value == true) | |||
{ | { | |||
#if defined(ARMA_BLAS_SDOT_BUG) | #if defined(ARMA_BLAS_SDOT_BUG) | |||
{ | { | |||
if(n_elem == 0) { return eT(0); } | if(n_elem == 0) { return eT(0); } | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 54 lines changed or added | |||
cmath_wrap.hpp | cmath_wrap.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup cmath_wrap | //! \addtogroup cmath_wrap | |||
//! @{ | //! @{ | |||
// | // | |||
// wrappers for isfinite | // wrappers for isfinite | |||
skipping to change at line 30 | skipping to change at line 30 | |||
arma_ignore(val); | arma_ignore(val); | |||
return true; | return true; | |||
} | } | |||
template<> | template<> | |||
arma_inline | arma_inline | |||
bool | bool | |||
arma_isfinite(float x) | arma_isfinite(float x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_ISFINITE) | #if defined(ARMA_HAVE_STD_ISFINITE) || defined(ARMA_USE_CXX11) | |||
{ | { | |||
return (std::isfinite(x) != 0); | return (std::isfinite(x) != 0); | |||
} | } | |||
#else | #else | |||
{ | { | |||
const bool x_is_inf = ( (x == x) && ((x - x) != float(0)) ); | const bool x_is_inf = ( (x == x) && ((x - x) != float(0)) ); | |||
const bool x_is_nan = (x != x); | const bool x_is_nan = (x != x); | |||
return ( (x_is_inf == false) && (x_is_nan == false) ); | return ( (x_is_inf == false) && (x_is_nan == false) ); | |||
} | } | |||
#endif | #endif | |||
} | } | |||
template<> | template<> | |||
arma_inline | arma_inline | |||
bool | bool | |||
arma_isfinite(double x) | arma_isfinite(double x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_ISFINITE) | #if defined(ARMA_HAVE_STD_ISFINITE) || defined(ARMA_USE_CXX11) | |||
{ | { | |||
return (std::isfinite(x) != 0); | return (std::isfinite(x) != 0); | |||
} | } | |||
#else | #else | |||
{ | { | |||
const bool x_is_inf = ( (x == x) && ((x - x) != double(0)) ); | const bool x_is_inf = ( (x == x) && ((x - x) != double(0)) ); | |||
const bool x_is_nan = (x != x); | const bool x_is_nan = (x != x); | |||
return ( (x_is_inf == false) && (x_is_nan == false) ); | return ( (x_is_inf == false) && (x_is_nan == false) ); | |||
} | } | |||
skipping to change at line 82 | skipping to change at line 82 | |||
else | else | |||
{ | { | |||
return true; | return true; | |||
} | } | |||
} | } | |||
// | // | |||
// wrappers for trigonometric functions | // wrappers for trigonometric functions | |||
// | // | |||
// Wherever possible, try to use TR1 versions of the functions below, | // Wherever possible, try to use TR1 or C++11 versions of the functions bel ow, | |||
// otherwise fall back to Boost Math. | // otherwise fall back to Boost Math. | |||
// | // | |||
// complex acos | // complex acos | |||
// complex asin | // complex asin | |||
// complex atan | // complex atan | |||
// | // | |||
// real acosh | // real acosh | |||
// real asinh | // real asinh | |||
// real atanh | // real atanh | |||
// | // | |||
skipping to change at line 108 | skipping to change at line 108 | |||
// If TR1 not present and Boost math not present, | // If TR1 not present and Boost math not present, | |||
// we have our own rudimentary versions of: | // we have our own rudimentary versions of: | |||
// | // | |||
// real acosh | // real acosh | |||
// real asinh | // real asinh | |||
// real atanh | // real atanh | |||
#if defined(ARMA_USE_BOOST) | #if defined(ARMA_USE_BOOST) | |||
#define arma_boost_wrap(trig_fn, val) ( (boost::math::trig_fn)(val) ) | #define arma_boost_wrap(trig_fn, val) ( (boost::math::trig_fn)(val) ) | |||
#else | #else | |||
#define arma_boost_wrap(trig_fn, val) ( arma_stop( #trig_fn "(): need Boo st libraries" ), val ) | #define arma_boost_wrap(trig_fn, val) ( arma_stop( #trig_fn "(): need C++ 11 or Boost libraries" ), val ) | |||
#endif | #endif | |||
template<typename T> | template<typename T> | |||
arma_inline | arma_inline | |||
std::complex<T> | std::complex<T> | |||
arma_acos(const std::complex<T>& x) | arma_acos(const std::complex<T>& x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_TR1) | #if defined(ARMA_HAVE_STD_TR1) | |||
{ | { | |||
return std::tr1::acos(x); | return std::tr1::acos(x); | |||
} | } | |||
#elif defined(ARMA_USE_CXX11) | ||||
{ | ||||
return std::acos(x); | ||||
} | ||||
#else | #else | |||
{ | { | |||
return arma_boost_wrap(acos, x); | return arma_boost_wrap(acos, x); | |||
} | } | |||
#endif | #endif | |||
} | } | |||
template<typename T> | template<typename T> | |||
arma_inline | arma_inline | |||
std::complex<T> | std::complex<T> | |||
arma_asin(const std::complex<T>& x) | arma_asin(const std::complex<T>& x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_TR1) | #if defined(ARMA_HAVE_STD_TR1) | |||
{ | { | |||
return std::tr1::asin(x); | return std::tr1::asin(x); | |||
} | } | |||
#elif defined(ARMA_USE_CXX11) | ||||
{ | ||||
return std::asin(x); | ||||
} | ||||
#else | #else | |||
{ | { | |||
return arma_boost_wrap(asin, x); | return arma_boost_wrap(asin, x); | |||
} | } | |||
#endif | #endif | |||
} | } | |||
template<typename T> | template<typename T> | |||
arma_inline | arma_inline | |||
std::complex<T> | std::complex<T> | |||
arma_atan(const std::complex<T>& x) | arma_atan(const std::complex<T>& x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_TR1) | #if defined(ARMA_HAVE_STD_TR1) | |||
{ | { | |||
return std::tr1::atan(x); | return std::tr1::atan(x); | |||
} | } | |||
#elif defined(ARMA_USE_CXX11) | ||||
{ | ||||
return std::atan(x); | ||||
} | ||||
#else | #else | |||
{ | { | |||
return arma_boost_wrap(atan, x); | return arma_boost_wrap(atan, x); | |||
} | } | |||
#endif | #endif | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
arma_inline | arma_inline | |||
eT | eT | |||
arma_acosh(const eT x) | arma_acosh(const eT x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_TR1) | #if defined(ARMA_HAVE_STD_TR1) | |||
{ | { | |||
return std::tr1::acosh(x); | return std::tr1::acosh(x); | |||
} | } | |||
#elif defined(ARMA_USE_CXX11) | ||||
{ | ||||
return std::acosh(x); | ||||
} | ||||
#elif defined(ARMA_USE_BOOST) | #elif defined(ARMA_USE_BOOST) | |||
{ | { | |||
return boost::math::acosh(x); | return boost::math::acosh(x); | |||
} | } | |||
#else | #else | |||
{ | { | |||
if(x >= eT(1)) | if(x >= eT(1)) | |||
{ | { | |||
// http://functions.wolfram.com/ElementaryFunctions/ArcCosh/02/ | // http://functions.wolfram.com/ElementaryFunctions/ArcCosh/02/ | |||
return std::log( x + std::sqrt(x*x - eT(1)) ); | return std::log( x + std::sqrt(x*x - eT(1)) ); | |||
skipping to change at line 203 | skipping to change at line 219 | |||
template<typename eT> | template<typename eT> | |||
arma_inline | arma_inline | |||
eT | eT | |||
arma_asinh(const eT x) | arma_asinh(const eT x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_TR1) | #if defined(ARMA_HAVE_STD_TR1) | |||
{ | { | |||
return std::tr1::asinh(x); | return std::tr1::asinh(x); | |||
} | } | |||
#elif defined(ARMA_USE_CXX11) | ||||
{ | ||||
return std::asinh(x); | ||||
} | ||||
#elif defined(ARMA_USE_BOOST) | #elif defined(ARMA_USE_BOOST) | |||
{ | { | |||
return boost::math::asinh(x); | return boost::math::asinh(x); | |||
} | } | |||
#else | #else | |||
{ | { | |||
// http://functions.wolfram.com/ElementaryFunctions/ArcSinh/02/ | // http://functions.wolfram.com/ElementaryFunctions/ArcSinh/02/ | |||
return std::log( x + std::sqrt(x*x + eT(1)) ); | return std::log( x + std::sqrt(x*x + eT(1)) ); | |||
} | } | |||
#endif | #endif | |||
skipping to change at line 224 | skipping to change at line 244 | |||
template<typename eT> | template<typename eT> | |||
arma_inline | arma_inline | |||
eT | eT | |||
arma_atanh(const eT x) | arma_atanh(const eT x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_TR1) | #if defined(ARMA_HAVE_STD_TR1) | |||
{ | { | |||
return std::tr1::atanh(x); | return std::tr1::atanh(x); | |||
} | } | |||
#elif defined(ARMA_USE_CXX11) | ||||
{ | ||||
return std::atanh(x); | ||||
} | ||||
#elif defined(ARMA_USE_BOOST) | #elif defined(ARMA_USE_BOOST) | |||
{ | { | |||
return boost::math::atanh(x); | return boost::math::atanh(x); | |||
} | } | |||
#else | #else | |||
{ | { | |||
if( (x >= eT(-1)) && (x <= eT(+1)) ) | if( (x >= eT(-1)) && (x <= eT(+1)) ) | |||
{ | { | |||
// http://functions.wolfram.com/ElementaryFunctions/ArcTanh/02/ | // http://functions.wolfram.com/ElementaryFunctions/ArcTanh/02/ | |||
return std::log( ( eT(1)+x ) / ( eT(1)-x ) ) / eT(2); | return std::log( ( eT(1)+x ) / ( eT(1)-x ) ) / eT(2); | |||
skipping to change at line 259 | skipping to change at line 283 | |||
template<typename T> | template<typename T> | |||
arma_inline | arma_inline | |||
std::complex<T> | std::complex<T> | |||
arma_acosh(const std::complex<T>& x) | arma_acosh(const std::complex<T>& x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_TR1) | #if defined(ARMA_HAVE_STD_TR1) | |||
{ | { | |||
return std::tr1::acosh(x); | return std::tr1::acosh(x); | |||
} | } | |||
#elif defined(ARMA_USE_CXX11) | ||||
{ | ||||
return std::acosh(x); | ||||
} | ||||
#else | #else | |||
{ | { | |||
return arma_boost_wrap(acosh, x); | return arma_boost_wrap(acosh, x); | |||
} | } | |||
#endif | #endif | |||
} | } | |||
template<typename T> | template<typename T> | |||
arma_inline | arma_inline | |||
std::complex<T> | std::complex<T> | |||
arma_asinh(const std::complex<T>& x) | arma_asinh(const std::complex<T>& x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_TR1) | #if defined(ARMA_HAVE_STD_TR1) | |||
{ | { | |||
return std::tr1::asinh(x); | return std::tr1::asinh(x); | |||
} | } | |||
#elif defined(ARMA_USE_CXX11) | ||||
{ | ||||
return std::asinh(x); | ||||
} | ||||
#else | #else | |||
{ | { | |||
return arma_boost_wrap(asinh, x); | return arma_boost_wrap(asinh, x); | |||
} | } | |||
#endif | #endif | |||
} | } | |||
template<typename T> | template<typename T> | |||
arma_inline | arma_inline | |||
std::complex<T> | std::complex<T> | |||
arma_atanh(const std::complex<T>& x) | arma_atanh(const std::complex<T>& x) | |||
{ | { | |||
#if defined(ARMA_HAVE_STD_TR1) | #if defined(ARMA_HAVE_STD_TR1) | |||
{ | { | |||
return std::tr1::atanh(x); | return std::tr1::atanh(x); | |||
} | } | |||
#elif defined(ARMA_USE_CXX11) | ||||
{ | ||||
return std::atanh(x); | ||||
} | ||||
#else | #else | |||
{ | { | |||
return arma_boost_wrap(atanh, x); | return arma_boost_wrap(atanh, x); | |||
} | } | |||
#endif | #endif | |||
} | } | |||
#undef arma_boost_wrap | #undef arma_boost_wrap | |||
//! @} | //! @} | |||
End of changes. 14 change blocks. | ||||
6 lines changed or deleted | 42 lines changed or added | |||
compiler_setup.hpp | compiler_setup.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
#define arma_hot | #define arma_hot | |||
#define arma_cold | #define arma_cold | |||
#define arma_pure | #define arma_pure | |||
#define arma_const | #define arma_const | |||
#define arma_aligned | #define arma_aligned | |||
skipping to change at line 68 | skipping to change at line 68 | |||
#define ARMA_USE_U64S64 | #define ARMA_USE_U64S64 | |||
#endif | #endif | |||
#endif | #endif | |||
#if defined(ARMA_64BIT_WORD) | #if defined(ARMA_64BIT_WORD) | |||
#if !defined(ARMA_USE_U64S64) | #if !defined(ARMA_USE_U64S64) | |||
#define ARMA_USE_U64S64 | #define ARMA_USE_U64S64 | |||
#endif | #endif | |||
#endif | #endif | |||
#if defined (__GNUG__) | ||||
#define ARMA_FNSIG __PRETTY_FUNCTION__ | ||||
#elif defined (_MSC_VER) | ||||
#define ARMA_FNSIG __FUNCSIG__ | ||||
#elif defined(__INTEL_COMPILER) | ||||
#define ARMA_FNSIG __FUNCTION__ | ||||
#elif defined(ARMA_USE_CXX11) | ||||
#define ARMA_FNSIG __func__ | ||||
#else | ||||
#define ARMA_FNSIG "(unknown)" | ||||
#endif | ||||
#if defined(__INTEL_COMPILER) | #if defined(__INTEL_COMPILER) | |||
#if (__INTEL_COMPILER < 1000) | #if (__INTEL_COMPILER < 1000) | |||
#error "*** Need a newer compiler ***" | #error "*** Need a newer compiler ***" | |||
#endif | #endif | |||
#if (__INTEL_COMPILER <= 1110) | #if (__INTEL_COMPILER <= 1110) | |||
#undef ARMA_HAVE_STD_ISFINITE | #undef ARMA_HAVE_STD_ISFINITE | |||
#endif | #endif | |||
End of changes. 3 change blocks. | ||||
1 lines changed or deleted | 13 lines changed or added | |||
compiler_setup_post.hpp | compiler_setup_post.hpp | |||
---|---|---|---|---|
// Copyright (C) 2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2013 Conrad Sanderson | // Copyright (C) 2013 Conrad Sanderson | |||
// Copyright (C) 2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
#if defined(_MSC_VER) | #if defined(_MSC_VER) | |||
#pragma warning(pop) | #pragma warning(pop) | |||
#endif | #endif | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
config.hpp | config.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
#if !defined(ARMA_USE_LAPACK) | #if !defined(ARMA_USE_LAPACK) | |||
#define ARMA_USE_LAPACK | #define ARMA_USE_LAPACK | |||
//// Uncomment the above line if you have LAPACK or a high-speed replacemen t for LAPACK, | //// Uncomment the above line if you have LAPACK or a high-speed replacemen t for LAPACK, | |||
//// such as Intel MKL, AMD ACML, or the Accelerate framework. | //// such as Intel MKL, AMD ACML, or the Accelerate framework. | |||
//// LAPACK is required for matrix decompositions (eg. SVD) and matrix inve rse. | //// LAPACK is required for matrix decompositions (eg. SVD) and matrix inve rse. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
constants.hpp | constants.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup constants | //! \addtogroup constants | |||
//! @{ | //! @{ | |||
namespace priv | namespace priv | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
constants_compat.hpp | constants_compat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup constants_compat | //! \addtogroup constants_compat | |||
//! @{ | //! @{ | |||
// the Math and Phy classes are kept for compatibility with old code; | // the Math and Phy classes are kept for compatibility with old code; | |||
// for new code, use the Datum class instead | // for new code, use the Datum class instead | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
debug.hpp | debug.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Stanislav Funiak | // Copyright (C) 2011 Stanislav Funiak | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup debug | //! \addtogroup debug | |||
//! @{ | //! @{ | |||
template<typename T> | template<typename T> | |||
skipping to change at line 960 | skipping to change at line 960 | |||
{ | { | |||
if(A.n_cols != B.n_rows) | if(A.n_cols != B.n_rows) | |||
{ | { | |||
arma_stop( arma_incompat_size_string(A.n_rows, A.n_cols, B.n_rows, B.n_ cols, x) ); | arma_stop( arma_incompat_size_string(A.n_rows, A.n_cols, B.n_rows, B.n_ cols, x) ); | |||
} | } | |||
} | } | |||
// | // | |||
// macros | // macros | |||
#define ARMA_STRING1(x) #x | // #define ARMA_STRING1(x) #x | |||
#define ARMA_STRING2(x) ARMA_STRING1(x) | // #define ARMA_STRING2(x) ARMA_STRING1(x) | |||
#define ARMA_FILELINE __FILE__ ": " ARMA_STRING2(__LINE__) | // #define ARMA_FILELINE __FILE__ ": " ARMA_STRING2(__LINE__) | |||
#if defined (__GNUG__) | ||||
#define ARMA_FNSIG __PRETTY_FUNCTION__ | ||||
#elif defined (_MSC_VER) | ||||
#define ARMA_FNSIG __FUNCSIG__ | ||||
#elif defined (ARMA_USE_BOOST) | ||||
#define ARMA_FNSIG BOOST_CURRENT_FUNCTION | ||||
#elif defined (ARMA_USE_CXX11) | ||||
#define ARMA_FNSIG __func__ | ||||
#else | ||||
#define ARMA_FNSIG "(unknown)" | ||||
#endif | ||||
#if !defined(ARMA_NO_DEBUG) && !defined(NDEBUG) | #if !defined(ARMA_NO_DEBUG) && !defined(NDEBUG) | |||
#define arma_debug_print arma_print | #define arma_debug_print arma_print | |||
#define arma_debug_warn arma_warn | #define arma_debug_warn arma_warn | |||
#define arma_debug_check arma_check | #define arma_debug_check arma_check | |||
#define arma_debug_set_error arma_set_error | #define arma_debug_set_error arma_set_error | |||
#define arma_debug_assert_same_size arma_assert_same_size | #define arma_debug_assert_same_size arma_assert_same_size | |||
#define arma_debug_assert_mul_size arma_assert_mul_size | #define arma_debug_assert_mul_size arma_assert_mul_size | |||
#define arma_debug_assert_trans_mul_size arma_assert_trans_mul_size | #define arma_debug_assert_trans_mul_size arma_assert_trans_mul_size | |||
End of changes. 3 change blocks. | ||||
16 lines changed or deleted | 4 lines changed or added | |||
eGlueCube_bones.hpp | eGlueCube_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eGlueCube | //! \addtogroup eGlueCube | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
class eGlueCube : public BaseCube<typename T1::elem_type, eGlueCube<T1, T2, eglue_type> > | class eGlueCube : public BaseCube<typename T1::elem_type, eGlueCube<T1, T2, eglue_type> > | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
eGlueCube_meat.hpp | eGlueCube_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eGlueCube | //! \addtogroup eGlueCube | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
arma_inline | arma_inline | |||
skipping to change at line 83 | skipping to change at line 83 | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
arma_inline | arma_inline | |||
typename T1::elem_type | typename T1::elem_type | |||
eGlueCube<T1,T2,eglue_type>::operator[] (const uword i) const | eGlueCube<T1,T2,eglue_type>::operator[] (const uword i) const | |||
{ | { | |||
// the optimiser will keep only one return statement | // the optimiser will keep only one return statement | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1 | if(is_same_type<eglue_type, eglue_plus >::yes) { return P1[i] + P2[i | |||
[i] + P2[i]; } | ]; } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_minus>::yes) { return P1[i] - P2[i | |||
[i] - P2[i]; } | ]; } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_div >::yes) { return P1[i] / P2[i | |||
[i] / P2[i]; } | ]; } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_schur>::yes) { return P1[i] * P2[i | |||
[i] * P2[i]; } | ]; } | |||
else return eT(0); | else return eT(0); | |||
} | } | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
arma_inline | arma_inline | |||
typename T1::elem_type | typename T1::elem_type | |||
eGlueCube<T1,T2,eglue_type>::at(const uword row, const uword col, const uwo rd slice) const | eGlueCube<T1,T2,eglue_type>::at(const uword row, const uword col, const uwo rd slice) const | |||
{ | { | |||
// the optimiser will keep only one return statement | // the optimiser will keep only one return statement | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1 | if(is_same_type<eglue_type, eglue_plus >::yes) { return P1.at(row,co | |||
.at(row,col,slice) + P2.at(row,col,slice); } | l,slice) + P2.at(row,col,slice); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_minus>::yes) { return P1.at(row,co | |||
.at(row,col,slice) - P2.at(row,col,slice); } | l,slice) - P2.at(row,col,slice); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_div >::yes) { return P1.at(row,co | |||
.at(row,col,slice) / P2.at(row,col,slice); } | l,slice) / P2.at(row,col,slice); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_schur>::yes) { return P1.at(row,co | |||
.at(row,col,slice) * P2.at(row,col,slice); } | l,slice) * P2.at(row,col,slice); } | |||
else return eT(0); | else return eT(0); | |||
} | } | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
arma_inline | arma_inline | |||
typename T1::elem_type | typename T1::elem_type | |||
eGlueCube<T1,T2,eglue_type>::at_alt(const uword i) const | eGlueCube<T1,T2,eglue_type>::at_alt(const uword i) const | |||
{ | { | |||
// the optimiser will keep only one return statement | // the optimiser will keep only one return statement | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1 | if(is_same_type<eglue_type, eglue_plus >::yes) { return P1.at_alt(i) | |||
.at_alt(i) + P2.at_alt(i); } | + P2.at_alt(i); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_minus>::yes) { return P1.at_alt(i) | |||
.at_alt(i) - P2.at_alt(i); } | - P2.at_alt(i); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_div >::yes) { return P1.at_alt(i) | |||
.at_alt(i) / P2.at_alt(i); } | / P2.at_alt(i); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_schur>::yes) { return P1.at_alt(i) | |||
.at_alt(i) * P2.at_alt(i); } | * P2.at_alt(i); } | |||
else return eT(0); | else return eT(0); | |||
} | } | |||
//! @} | //! @} | |||
End of changes. 5 change blocks. | ||||
25 lines changed or deleted | 25 lines changed or added | |||
eGlue_bones.hpp | eGlue_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eGlue | //! \addtogroup eGlue | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
class eGlue : public Base<typename T1::elem_type, eGlue<T1, T2, eglue_type> > | class eGlue : public Base<typename T1::elem_type, eGlue<T1, T2, eglue_type> > | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
eGlue_meat.hpp | eGlue_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eGlue | //! \addtogroup eGlue | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
arma_inline | arma_inline | |||
skipping to change at line 68 | skipping to change at line 68 | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
arma_inline | arma_inline | |||
typename T1::elem_type | typename T1::elem_type | |||
eGlue<T1,T2,eglue_type>::operator[] (const uword ii) const | eGlue<T1,T2,eglue_type>::operator[] (const uword ii) const | |||
{ | { | |||
// the optimiser will keep only one return statement | // the optimiser will keep only one return statement | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1 | if(is_same_type<eglue_type, eglue_plus >::yes) { return P1[ii] + P2[ | |||
[ii] + P2[ii]; } | ii]; } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_minus>::yes) { return P1[ii] - P2[ | |||
[ii] - P2[ii]; } | ii]; } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_div >::yes) { return P1[ii] / P2[ | |||
[ii] / P2[ii]; } | ii]; } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_schur>::yes) { return P1[ii] * P2[ | |||
[ii] * P2[ii]; } | ii]; } | |||
else return eT(0); | else return eT(0); | |||
} | } | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
arma_inline | arma_inline | |||
typename T1::elem_type | typename T1::elem_type | |||
eGlue<T1,T2,eglue_type>::at(const uword row, const uword col) const | eGlue<T1,T2,eglue_type>::at(const uword row, const uword col) const | |||
{ | { | |||
// the optimiser will keep only one return statement | // the optimiser will keep only one return statement | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1 | if(is_same_type<eglue_type, eglue_plus >::yes) { return P1.at(row,co | |||
.at(row,col) + P2.at(row,col); } | l) + P2.at(row,col); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_minus>::yes) { return P1.at(row,co | |||
.at(row,col) - P2.at(row,col); } | l) - P2.at(row,col); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_div >::yes) { return P1.at(row,co | |||
.at(row,col) / P2.at(row,col); } | l) / P2.at(row,col); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_schur>::yes) { return P1.at(row,co | |||
.at(row,col) * P2.at(row,col); } | l) * P2.at(row,col); } | |||
else return eT(0); | else return eT(0); | |||
} | } | |||
template<typename T1, typename T2, typename eglue_type> | template<typename T1, typename T2, typename eglue_type> | |||
arma_inline | arma_inline | |||
typename T1::elem_type | typename T1::elem_type | |||
eGlue<T1,T2,eglue_type>::at_alt(const uword ii) const | eGlue<T1,T2,eglue_type>::at_alt(const uword ii) const | |||
{ | { | |||
// the optimiser will keep only one return statement | // the optimiser will keep only one return statement | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1 | if(is_same_type<eglue_type, eglue_plus >::yes) { return P1.at_alt(ii | |||
.at_alt(ii) + P2.at_alt(ii); } | ) + P2.at_alt(ii); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_minus>::yes) { return P1.at_alt(ii | |||
.at_alt(ii) - P2.at_alt(ii); } | ) - P2.at_alt(ii); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_div >::yes) { return P1.at_alt(ii | |||
.at_alt(ii) / P2.at_alt(ii); } | ) / P2.at_alt(ii); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1 | else if(is_same_type<eglue_type, eglue_schur>::yes) { return P1.at_alt(ii | |||
.at_alt(ii) * P2.at_alt(ii); } | ) * P2.at_alt(ii); } | |||
else return eT(0); | else return eT(0); | |||
} | } | |||
//! @} | //! @} | |||
End of changes. 5 change blocks. | ||||
25 lines changed or deleted | 25 lines changed or added | |||
eOpCube_bones.hpp | eOpCube_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eOpCube | //! \addtogroup eOpCube | |||
//! @{ | //! @{ | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
class eOpCube : public BaseCube<typename T1::elem_type, eOpCube<T1, eop_typ e> > | class eOpCube : public BaseCube<typename T1::elem_type, eOpCube<T1, eop_typ e> > | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
eOpCube_meat.hpp | eOpCube_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eOpCube | //! \addtogroup eOpCube | |||
//! @{ | //! @{ | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
eOpCube<T1, eop_type>::eOpCube(const BaseCube<typename T1::elem_type, T1>& in_m) | eOpCube<T1, eop_type>::eOpCube(const BaseCube<typename T1::elem_type, T1>& in_m) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
eOp_bones.hpp | eOp_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eOp | //! \addtogroup eOp | |||
//! @{ | //! @{ | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
class eOp : public Base<typename T1::elem_type, eOp<T1, eop_type> > | class eOp : public Base<typename T1::elem_type, eOp<T1, eop_type> > | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
eOp_meat.hpp | eOp_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eOp | //! \addtogroup eOp | |||
//! @{ | //! @{ | |||
template<typename T1, typename eop_type> | template<typename T1, typename eop_type> | |||
eOp<T1, eop_type>::eOp(const T1& in_m) | eOp<T1, eop_type>::eOp(const T1& in_m) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
eglue_core_bones.hpp | eglue_core_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eglue_core | //! \addtogroup eglue_core | |||
//! @{ | //! @{ | |||
template<typename eglue_type> | template<typename eglue_type> | |||
struct eglue_core | struct eglue_core | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
eglue_core_meat.hpp | eglue_core_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eglue_core | //! \addtogroup eglue_core | |||
//! @{ | //! @{ | |||
#undef arma_applier_1u | #undef arma_applier_1u | |||
#undef arma_applier_1a | #undef arma_applier_1a | |||
skipping to change at line 173 | skipping to change at line 173 | |||
//if( memory::is_aligned(out_mem) ) | //if( memory::is_aligned(out_mem) ) | |||
if( memory::is_aligned(out_mem) && ((Proxy<T1>::is_fixed && Proxy<T2>:: is_fixed) ? (x.get_n_elem() >= 32) : true) ) | if( memory::is_aligned(out_mem) && ((Proxy<T1>::is_fixed && Proxy<T2>:: is_fixed) ? (x.get_n_elem() >= 32) : true) ) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(=, +); } | 1a(=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(=, -); } | 1a(=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(=, /); } | 1a(=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(=, *); } | 1a(=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(=, +); } | 1u(=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(=, -); } | 1u(=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(=, /); } | 1u(=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(=, *); } | 1u(=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(=, +); } | (=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(=, -); } | (=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(=, /); } | (=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(=, *); } | (=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const uword n_rows = x.get_n_rows(); | const uword n_rows = x.get_n_rows(); | |||
const uword n_cols = x.get_n_cols(); | const uword n_cols = x.get_n_cols(); | |||
const Proxy<T1>& P1 = x.P1; | const Proxy<T1>& P1 = x.P1; | |||
const Proxy<T2>& P2 = x.P2; | const Proxy<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_2(=, | |||
plier_2(=, +); } | +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_2(=, | |||
plier_2(=, -); } | -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_2(=, | |||
plier_2(=, /); } | /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_2(=, | |||
plier_2(=, *); } | *); } | |||
} | } | |||
} | } | |||
template<typename eglue_type> | template<typename eglue_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
eglue_core<eglue_type>::apply_inplace_plus(Mat<typename T1::elem_type>& out , const eGlue<T1, T2, eglue_type>& x) | eglue_core<eglue_type>::apply_inplace_plus(Mat<typename T1::elem_type>& out , const eGlue<T1, T2, eglue_type>& x) | |||
{ | { | |||
skipping to change at line 248 | skipping to change at line 248 | |||
if(memory::is_aligned(out_mem)) | if(memory::is_aligned(out_mem)) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(+=, +); } | 1a(+=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(+=, -); } | 1a(+=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(+=, /); } | 1a(+=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(+=, *); } | 1a(+=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(+=, +); } | 1u(+=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(+=, -); } | 1u(+=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(+=, /); } | 1u(+=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(+=, *); } | 1u(+=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(+=, +); } | (+=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(+=, -); } | (+=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(+=, /); } | (+=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(+=, *); } | (+=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const Proxy<T1>& P1 = x.P1; | const Proxy<T1>& P1 = x.P1; | |||
const Proxy<T2>& P2 = x.P2; | const Proxy<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_2(+= | |||
plier_2(+=, +); } | , +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_2(+= | |||
plier_2(+=, -); } | , -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_2(+= | |||
plier_2(+=, /); } | , /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_2(+= | |||
plier_2(+=, *); } | , *); } | |||
} | } | |||
} | } | |||
template<typename eglue_type> | template<typename eglue_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
eglue_core<eglue_type>::apply_inplace_minus(Mat<typename T1::elem_type>& ou t, const eGlue<T1, T2, eglue_type>& x) | eglue_core<eglue_type>::apply_inplace_minus(Mat<typename T1::elem_type>& ou t, const eGlue<T1, T2, eglue_type>& x) | |||
{ | { | |||
skipping to change at line 320 | skipping to change at line 320 | |||
if(memory::is_aligned(out_mem)) | if(memory::is_aligned(out_mem)) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(-=, +); } | 1a(-=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(-=, -); } | 1a(-=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(-=, /); } | 1a(-=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(-=, *); } | 1a(-=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(-=, +); } | 1u(-=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(-=, -); } | 1u(-=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(-=, /); } | 1u(-=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(-=, *); } | 1u(-=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(-=, +); } | (-=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(-=, -); } | (-=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(-=, /); } | (-=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(-=, *); } | (-=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const Proxy<T1>& P1 = x.P1; | const Proxy<T1>& P1 = x.P1; | |||
const Proxy<T2>& P2 = x.P2; | const Proxy<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_2(-= | |||
plier_2(-=, +); } | , +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_2(-= | |||
plier_2(-=, -); } | , -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_2(-= | |||
plier_2(-=, /); } | , /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_2(-= | |||
plier_2(-=, *); } | , *); } | |||
} | } | |||
} | } | |||
template<typename eglue_type> | template<typename eglue_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
eglue_core<eglue_type>::apply_inplace_schur(Mat<typename T1::elem_type>& ou t, const eGlue<T1, T2, eglue_type>& x) | eglue_core<eglue_type>::apply_inplace_schur(Mat<typename T1::elem_type>& ou t, const eGlue<T1, T2, eglue_type>& x) | |||
{ | { | |||
skipping to change at line 392 | skipping to change at line 392 | |||
if(memory::is_aligned(out_mem)) | if(memory::is_aligned(out_mem)) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(*=, +); } | 1a(*=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(*=, -); } | 1a(*=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(*=, /); } | 1a(*=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(*=, *); } | 1a(*=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(*=, +); } | 1u(*=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(*=, -); } | 1u(*=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(*=, /); } | 1u(*=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(*=, *); } | 1u(*=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(*=, +); } | (*=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(*=, -); } | (*=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(*=, /); } | (*=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(*=, *); } | (*=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const Proxy<T1>& P1 = x.P1; | const Proxy<T1>& P1 = x.P1; | |||
const Proxy<T2>& P2 = x.P2; | const Proxy<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_2(*= | |||
plier_2(*=, +); } | , +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_2(*= | |||
plier_2(*=, -); } | , -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_2(*= | |||
plier_2(*=, /); } | , /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_2(*= | |||
plier_2(*=, *); } | , *); } | |||
} | } | |||
} | } | |||
template<typename eglue_type> | template<typename eglue_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
eglue_core<eglue_type>::apply_inplace_div(Mat<typename T1::elem_type>& out, const eGlue<T1, T2, eglue_type>& x) | eglue_core<eglue_type>::apply_inplace_div(Mat<typename T1::elem_type>& out, const eGlue<T1, T2, eglue_type>& x) | |||
{ | { | |||
skipping to change at line 464 | skipping to change at line 464 | |||
if(memory::is_aligned(out_mem)) | if(memory::is_aligned(out_mem)) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename Proxy<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename Proxy<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(/=, +); } | 1a(/=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(/=, -); } | 1a(/=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(/=, /); } | 1a(/=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(/=, *); } | 1a(/=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(/=, +); } | 1u(/=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(/=, -); } | 1u(/=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(/=, /); } | 1u(/=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(/=, *); } | 1u(/=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(/=, +); } | (/=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(/=, -); } | (/=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(/=, /); } | (/=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(/=, *); } | (/=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const Proxy<T1>& P1 = x.P1; | const Proxy<T1>& P1 = x.P1; | |||
const Proxy<T2>& P2 = x.P2; | const Proxy<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_2(/= | |||
plier_2(/=, +); } | , +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_2(/= | |||
plier_2(/=, -); } | , -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_2(/= | |||
plier_2(/=, /); } | , /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_2(/= | |||
plier_2(/=, *); } | , *); } | |||
} | } | |||
} | } | |||
// | // | |||
// cubes | // cubes | |||
template<typename eglue_type> | template<typename eglue_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
skipping to change at line 537 | skipping to change at line 537 | |||
if(memory::is_aligned(out_mem)) | if(memory::is_aligned(out_mem)) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(=, +); } | 1a(=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(=, -); } | 1a(=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(=, /); } | 1a(=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(=, *); } | 1a(=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(=, +); } | 1u(=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(=, -); } | 1u(=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(=, /); } | 1u(=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(=, *); } | 1u(=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(=, +); } | (=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(=, -); } | (=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(=, /); } | (=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(=, *); } | (=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const uword n_rows = x.get_n_rows(); | const uword n_rows = x.get_n_rows(); | |||
const uword n_cols = x.get_n_cols(); | const uword n_cols = x.get_n_cols(); | |||
const uword n_slices = x.get_n_slices(); | const uword n_slices = x.get_n_slices(); | |||
const ProxyCube<T1>& P1 = x.P1; | const ProxyCube<T1>& P1 = x.P1; | |||
const ProxyCube<T2>& P2 = x.P2; | const ProxyCube<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_3(=, | |||
plier_3(=, +); } | +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_3(=, | |||
plier_3(=, -); } | -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_3(=, | |||
plier_3(=, /); } | /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_3(=, | |||
plier_3(=, *); } | *); } | |||
} | } | |||
} | } | |||
template<typename eglue_type> | template<typename eglue_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
eglue_core<eglue_type>::apply_inplace_plus(Cube<typename T1::elem_type>& ou t, const eGlueCube<T1, T2, eglue_type>& x) | eglue_core<eglue_type>::apply_inplace_plus(Cube<typename T1::elem_type>& ou t, const eGlueCube<T1, T2, eglue_type>& x) | |||
{ | { | |||
skipping to change at line 614 | skipping to change at line 614 | |||
if(memory::is_aligned(out_mem)) | if(memory::is_aligned(out_mem)) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(+=, +); } | 1a(+=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(+=, -); } | 1a(+=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(+=, /); } | 1a(+=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(+=, *); } | 1a(+=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(+=, +); } | 1u(+=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(+=, -); } | 1u(+=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(+=, /); } | 1u(+=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(+=, *); } | 1u(+=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(+=, +); } | (+=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(+=, -); } | (+=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(+=, /); } | (+=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(+=, *); } | (+=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const ProxyCube<T1>& P1 = x.P1; | const ProxyCube<T1>& P1 = x.P1; | |||
const ProxyCube<T2>& P2 = x.P2; | const ProxyCube<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_3(+= | |||
plier_3(+=, +); } | , +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_3(+= | |||
plier_3(+=, -); } | , -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_3(+= | |||
plier_3(+=, /); } | , /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_3(+= | |||
plier_3(+=, *); } | , *); } | |||
} | } | |||
} | } | |||
template<typename eglue_type> | template<typename eglue_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
eglue_core<eglue_type>::apply_inplace_minus(Cube<typename T1::elem_type>& o ut, const eGlueCube<T1, T2, eglue_type>& x) | eglue_core<eglue_type>::apply_inplace_minus(Cube<typename T1::elem_type>& o ut, const eGlueCube<T1, T2, eglue_type>& x) | |||
{ | { | |||
skipping to change at line 687 | skipping to change at line 687 | |||
if(memory::is_aligned(out_mem)) | if(memory::is_aligned(out_mem)) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(-=, +); } | 1a(-=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(-=, -); } | 1a(-=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(-=, /); } | 1a(-=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(-=, *); } | 1a(-=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(-=, +); } | 1u(-=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(-=, -); } | 1u(-=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(-=, /); } | 1u(-=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(-=, *); } | 1u(-=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(-=, +); } | (-=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(-=, -); } | (-=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(-=, /); } | (-=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(-=, *); } | (-=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const ProxyCube<T1>& P1 = x.P1; | const ProxyCube<T1>& P1 = x.P1; | |||
const ProxyCube<T2>& P2 = x.P2; | const ProxyCube<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_3(-= | |||
plier_3(-=, +); } | , +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_3(-= | |||
plier_3(-=, -); } | , -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_3(-= | |||
plier_3(-=, /); } | , /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_3(-= | |||
plier_3(-=, *); } | , *); } | |||
} | } | |||
} | } | |||
template<typename eglue_type> | template<typename eglue_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
eglue_core<eglue_type>::apply_inplace_schur(Cube<typename T1::elem_type>& o ut, const eGlueCube<T1, T2, eglue_type>& x) | eglue_core<eglue_type>::apply_inplace_schur(Cube<typename T1::elem_type>& o ut, const eGlueCube<T1, T2, eglue_type>& x) | |||
{ | { | |||
skipping to change at line 760 | skipping to change at line 760 | |||
if(memory::is_aligned(out_mem)) | if(memory::is_aligned(out_mem)) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(*=, +); } | 1a(*=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(*=, -); } | 1a(*=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(*=, /); } | 1a(*=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(*=, *); } | 1a(*=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(*=, +); } | 1u(*=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(*=, -); } | 1u(*=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(*=, /); } | 1u(*=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(*=, *); } | 1u(*=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(*=, +); } | (*=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(*=, -); } | (*=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(*=, /); } | (*=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(*=, *); } | (*=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const ProxyCube<T1>& P1 = x.P1; | const ProxyCube<T1>& P1 = x.P1; | |||
const ProxyCube<T2>& P2 = x.P2; | const ProxyCube<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_3(*= | |||
plier_3(*=, +); } | , +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_3(*= | |||
plier_3(*=, -); } | , -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_3(*= | |||
plier_3(*=, /); } | , /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_3(*= | |||
plier_3(*=, *); } | , *); } | |||
} | } | |||
} | } | |||
template<typename eglue_type> | template<typename eglue_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
eglue_core<eglue_type>::apply_inplace_div(Cube<typename T1::elem_type>& out , const eGlueCube<T1, T2, eglue_type>& x) | eglue_core<eglue_type>::apply_inplace_div(Cube<typename T1::elem_type>& out , const eGlueCube<T1, T2, eglue_type>& x) | |||
{ | { | |||
skipping to change at line 833 | skipping to change at line 833 | |||
if(memory::is_aligned(out_mem)) | if(memory::is_aligned(out_mem)) | |||
{ | { | |||
memory::mark_as_aligned(out_mem); | memory::mark_as_aligned(out_mem); | |||
if(x.P1.is_aligned() && x.P2.is_aligned()) | if(x.P1.is_aligned() && x.P2.is_aligned()) | |||
{ | { | |||
typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | typename ProxyCube<T1>::aligned_ea_type P1 = x.P1.get_aligned_ea(); | |||
typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | typename ProxyCube<T2>::aligned_ea_type P2 = x.P2.get_aligned_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1a(/=, +); } | 1a(/=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1a(/=, -); } | 1a(/=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1a(/=, /); } | 1a(/=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1a(/=, *); } | 1a(/=, *); } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arm | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_ | |||
a_applier_1u(/=, +); } | 1u(/=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arm | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_ | |||
a_applier_1u(/=, -); } | 1u(/=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arm | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_ | |||
a_applier_1u(/=, /); } | 1u(/=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arm | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_ | |||
a_applier_1u(/=, *); } | 1u(/=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | typename ProxyCube<T1>::ea_type P1 = x.P1.get_ea(); | |||
typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | typename ProxyCube<T2>::ea_type P2 = x.P2.get_ea(); | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_1u | |||
applier_1u(/=, +); } | (/=, +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_1u | |||
applier_1u(/=, -); } | (/=, -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_1u | |||
applier_1u(/=, /); } | (/=, /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_1u | |||
applier_1u(/=, *); } | (/=, *); } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const ProxyCube<T1>& P1 = x.P1; | const ProxyCube<T1>& P1 = x.P1; | |||
const ProxyCube<T2>& P2 = x.P2; | const ProxyCube<T2>& P2 = x.P2; | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_ap | if(is_same_type<eglue_type, eglue_plus >::yes) { arma_applier_3(/= | |||
plier_3(/=, +); } | , +); } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_minus>::yes) { arma_applier_3(/= | |||
plier_3(/=, -); } | , -); } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_div >::yes) { arma_applier_3(/= | |||
plier_3(/=, /); } | , /); } | |||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { arma_ap | else if(is_same_type<eglue_type, eglue_schur>::yes) { arma_applier_3(/= | |||
plier_3(/=, *); } | , *); } | |||
} | } | |||
} | } | |||
#undef arma_applier_1u | #undef arma_applier_1u | |||
#undef arma_applier_1a | #undef arma_applier_1a | |||
#undef arma_applier_2 | #undef arma_applier_2 | |||
#undef arma_applier_3 | #undef arma_applier_3 | |||
//! @} | //! @} | |||
End of changes. 42 change blocks. | ||||
321 lines changed or deleted | 321 lines changed or added | |||
eop_aux.hpp | eop_aux.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eop_aux | //! \addtogroup eop_aux | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
struct eop_aux_randu | struct eop_aux_randu | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
eop_core_bones.hpp | eop_core_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eop_core | //! \addtogroup eop_core | |||
//! @{ | //! @{ | |||
template<typename eop_type> | template<typename eop_type> | |||
class eop_core | class eop_core | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
eop_core_meat.hpp | eop_core_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup eop_core | //! \addtogroup eop_core | |||
//! @{ | //! @{ | |||
#undef arma_applier_1u | #undef arma_applier_1u | |||
#undef arma_applier_1a | #undef arma_applier_1a | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
field_bones.hpp | field_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Ian Cullinan | // Copyright (C) 2009-2010 Ian Cullinan | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup field | //! \addtogroup field | |||
//! @{ | //! @{ | |||
struct field_prealloc_n_elem | struct field_prealloc_n_elem | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
field_meat.hpp | field_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Ian Cullinan | // Copyright (C) 2009-2010 Ian Cullinan | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup field | //! \addtogroup field | |||
//! @{ | //! @{ | |||
template<typename oT> | template<typename oT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_accu.hpp | fn_accu.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_accu | //! \addtogroup fn_accu | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_as_scalar.hpp | fn_as_scalar.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_as_scalar | //! \addtogroup fn_as_scalar | |||
//! @{ | //! @{ | |||
template<uword N> | template<uword N> | |||
struct as_scalar_redirect | struct as_scalar_redirect | |||
skipping to change at line 61 | skipping to change at line 61 | |||
typename T1::elem_type | typename T1::elem_type | |||
as_scalar_redirect<2>::apply(const Glue<T1, T2, glue_times>& X) | as_scalar_redirect<2>::apply(const Glue<T1, T2, glue_times>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
// T1 must result in a matrix with one row | // T1 must result in a matrix with one row | |||
// T2 must result in a matrix with one column | // T2 must result in a matrix with one column | |||
const bool has_all_mat = is_Mat<T1>::value && is_Mat<T | const bool has_all_mat = (is_Mat<T1>::value || is_Mat_trans<T1>::v | |||
2>::value; | alue) && (is_Mat<T2>::value || is_Mat_trans<T2>::value); | |||
const bool prefer_at_accessor = Proxy<T1>::prefer_at_accessor || Proxy<T2 | const bool prefer_at_accessor = Proxy<T1>::prefer_at_accessor | |||
>::prefer_at_accessor; | || Proxy<T2>::prefer_at_accessor; | |||
const bool do_partial_unwrap = has_all_mat || prefer_at_accessor; | const bool do_partial_unwrap = has_all_mat || prefer_at_accessor; | |||
if(do_partial_unwrap == true) | if(do_partial_unwrap == true) | |||
{ | { | |||
const partial_unwrap<T1> tmp1(X.A); | const partial_unwrap<T1> tmp1(X.A); | |||
const partial_unwrap<T2> tmp2(X.B); | const partial_unwrap<T2> tmp2(X.B); | |||
typedef typename partial_unwrap<T1>::stored_type TA; | typedef typename partial_unwrap<T1>::stored_type TA; | |||
typedef typename partial_unwrap<T2>::stored_type TB; | typedef typename partial_unwrap<T2>::stored_type TB; | |||
skipping to change at line 339 | skipping to change at line 339 | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
const eT a = as_scalar(X.P1.Q); | const eT a = as_scalar(X.P1.Q); | |||
const eT b = as_scalar(X.P2.Q); | const eT b = as_scalar(X.P2.Q); | |||
// the optimiser will keep only one return statement | // the optimiser will keep only one return statement | |||
if(is_same_type<eglue_type, eglue_plus >::value == true) { return a | if(is_same_type<eglue_type, eglue_plus >::yes) { return a + b; } | |||
+ b; } | else if(is_same_type<eglue_type, eglue_minus>::yes) { return a - b; } | |||
else if(is_same_type<eglue_type, eglue_minus>::value == true) { return a | else if(is_same_type<eglue_type, eglue_div >::yes) { return a / b; } | |||
- b; } | else if(is_same_type<eglue_type, eglue_schur>::yes) { return a * b; } | |||
else if(is_same_type<eglue_type, eglue_div >::value == true) { return a | ||||
/ b; } | ||||
else if(is_same_type<eglue_type, eglue_schur>::value == true) { return a | ||||
* b; } | ||||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
arma_warn_unused | arma_warn_unused | |||
typename T1::elem_type | typename T1::elem_type | |||
as_scalar(const BaseCube<typename T1::elem_type,T1>& X) | as_scalar(const BaseCube<typename T1::elem_type,T1>& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
End of changes. 4 change blocks. | ||||
13 lines changed or deleted | 9 lines changed or added | |||
fn_chol.hpp | fn_chol.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_chol | //! \addtogroup fn_chol | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_conv.hpp | fn_conv.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_conv | //! \addtogroup fn_conv | |||
//! @{ | //! @{ | |||
//! Convolution, which is also equivalent to polynomial multiplication and FIR digital filtering. | //! Convolution, which is also equivalent to polynomial multiplication and FIR digital filtering. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_conv_to.hpp | fn_conv_to.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_conv_to | //! \addtogroup fn_conv_to | |||
//! @{ | //! @{ | |||
//! conversion from Armadillo Base and BaseCube objects to scalars | //! conversion from Armadillo Base and BaseCube objects to scalars | |||
//! (kept only for compatibility with old code; use as_scalar() instead for Base objects like Mat) | //! (kept only for compatibility with old code; use as_scalar() instead for Base objects like Mat) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_cor.hpp | fn_cor.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_cor | //! \addtogroup fn_cor | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_cov.hpp | fn_cov.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_cov | //! \addtogroup fn_cov | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_cross.hpp | fn_cross.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_cross | //! \addtogroup fn_cross | |||
//! @{ | //! @{ | |||
//! cross product (only valid for 3 dimensional vectors) | //! cross product (only valid for 3 dimensional vectors) | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_cumsum.hpp | fn_cumsum.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_cumsum | //! \addtogroup fn_cumsum | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_det.hpp | fn_det.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_det | //! \addtogroup fn_det | |||
//! @{ | //! @{ | |||
//! determinant of mat | //! determinant of mat | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_diagmat.hpp | fn_diagmat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_diagmat | //! \addtogroup fn_diagmat | |||
//! @{ | //! @{ | |||
//! interpret a matrix or a vector as a diagonal matrix (i.e. off-diagonal entries are zero) | //! interpret a matrix or a vector as a diagonal matrix (i.e. off-diagonal entries are zero) | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_diagvec.hpp | fn_diagvec.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_diagvec | //! \addtogroup fn_diagvec | |||
//! @{ | //! @{ | |||
//! extract a diagonal from a matrix | //! extract a diagonal from a matrix | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_dot.hpp | fn_dot.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_dot | //! \addtogroup fn_dot | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_eig.hpp | fn_eig.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009 Edmund Highcock | // Copyright (C) 2009 Edmund Highcock | |||
// Copyright (C) 2011 Stanislav Funiak | // Copyright (C) 2011 Stanislav Funiak | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_eig | //! \addtogroup fn_eig | |||
//! @{ | //! @{ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_elem.hpp | fn_elem.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_elem | //! \addtogroup fn_elem | |||
//! @{ | //! @{ | |||
// | // | |||
// find | // find | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_eps.hpp | fn_eps.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_eps | //! \addtogroup fn_eps | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_eye.hpp | fn_eye.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_eye | //! \addtogroup fn_eye | |||
//! @{ | //! @{ | |||
arma_inline | arma_inline | |||
const Gen<mat, gen_ones_diag> | const Gen<mat, gen_ones_diag> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_flip.hpp | fn_flip.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_flip | //! \addtogroup fn_flip | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_hist.hpp | fn_hist.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
const mtOp<uword,T1,op_hist> | const mtOp<uword,T1,op_hist> | |||
hist | hist | |||
( | ( | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_histc.hpp | fn_histc.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Boris Sabanin | // Copyright (C) 2012 Boris Sabanin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
const mtGlue<uword,T1,T2,glue_histc> | const mtGlue<uword,T1,T2,glue_histc> | |||
histc | histc | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_inv.hpp | fn_inv.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_inv | //! \addtogroup fn_inv | |||
//! @{ | //! @{ | |||
//! delayed matrix inverse (general matrices) | //! delayed matrix inverse (general matrices) | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_join.hpp | fn_join.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_join | //! \addtogroup fn_join | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_kron.hpp | fn_kron.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_kron | //! \addtogroup fn_kron | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_log_det.hpp | fn_log_det.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2011 Conrad Sanderson | // Copyright (C) 2010-2011 Conrad Sanderson | |||
// Copyright (C) 2010-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_log_det | //! \addtogroup fn_log_det | |||
//! @{ | //! @{ | |||
//! log determinant of mat | //! log determinant of mat | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_lu.hpp | fn_lu.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_lu | //! \addtogroup fn_lu | |||
//! @{ | //! @{ | |||
//! immediate lower upper decomposition, permutation info is embedded into L (similar to Matlab/Octave) | //! immediate lower upper decomposition, permutation info is embedded into L (similar to Matlab/Octave) | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_max.hpp | fn_max.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_max | //! \addtogroup fn_max | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! Delayed 'maximum values' operation. | //! Delayed 'maximum values' operation. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_mean.hpp | fn_mean.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_mean | //! \addtogroup fn_mean | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_median.hpp | fn_median.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_median | //! \addtogroup fn_median | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_min.hpp | fn_min.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_min | //! \addtogroup fn_min | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! Delayed 'minimum values' operation. | //! Delayed 'minimum values' operation. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_misc.hpp | fn_misc.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_misc | //! \addtogroup fn_misc | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! Generate a vector with 'num' elements. | //! Generate a vector with 'num' elements. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_norm.hpp | fn_norm.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_norm | //! \addtogroup fn_norm | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_hot | arma_hot | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_ones.hpp | fn_ones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_ones | //! \addtogroup fn_ones | |||
//! @{ | //! @{ | |||
arma_inline | arma_inline | |||
const Gen<vec, gen_ones_full> | const Gen<vec, gen_ones_full> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_pinv.hpp | fn_pinv.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_pinv | //! \addtogroup fn_pinv | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_princomp.hpp | fn_princomp.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Dimitrios Bouzas | // Copyright (C) 2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_princomp | //! \addtogroup fn_princomp | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_prod.hpp | fn_prod.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_prod | //! \addtogroup fn_prod | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! Delayed product of elements of a matrix along a specified dimension (ei ther rows or columns). | //! Delayed product of elements of a matrix along a specified dimension (ei ther rows or columns). | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_qr.hpp | fn_qr.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_qr | //! \addtogroup fn_qr | |||
//! @{ | //! @{ | |||
//! QR decomposition | //! QR decomposition | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_randn.hpp | fn_randn.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_randn | //! \addtogroup fn_randn | |||
//! @{ | //! @{ | |||
inline | inline | |||
double | double | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_randu.hpp | fn_randu.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_randu | //! \addtogroup fn_randu | |||
//! @{ | //! @{ | |||
inline | inline | |||
double | double | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_rank.hpp | fn_rank.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// Copyright (C) 2011 Stanislav Funiak | // Copyright (C) 2011 Stanislav Funiak | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_rank | //! \addtogroup fn_rank | |||
//! @{ | //! @{ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_repmat.hpp | fn_repmat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_repmat | //! \addtogroup fn_repmat | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_reshape.hpp | fn_reshape.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_reshape | //! \addtogroup fn_reshape | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_resize.hpp | fn_resize.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Conrad Sanderson | // Copyright (C) 2011 Conrad Sanderson | |||
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_resize | //! \addtogroup fn_resize | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_shuffle.hpp | fn_shuffle.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_shuffle | //! \addtogroup fn_shuffle | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_solve.hpp | fn_solve.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_solve | //! \addtogroup fn_solve | |||
//! @{ | //! @{ | |||
//! Solve a system of linear equations, i.e., A*X = B, where X is unknown. | //! Solve a system of linear equations, i.e., A*X = B, where X is unknown. | |||
//! For a square matrix A, this function is conceptually the same as X = in v(A)*B, | //! For a square matrix A, this function is conceptually the same as X = in v(A)*B, | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_sort.hpp | fn_sort.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_sort | //! \addtogroup fn_sort | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_sort_index.hpp | fn_sort_index.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_sort_index | //! \addtogroup fn_sort_index | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
struct arma_sort_index_packet | struct arma_sort_index_packet | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_stddev.hpp | fn_stddev.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_stddev | //! \addtogroup fn_stddev | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_strans.hpp | fn_strans.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011-2012 Conrad Sanderson | // Copyright (C) 2011-2012 Conrad Sanderson | |||
// Copyright (C) 2011-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_strans | //! \addtogroup fn_strans | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_sum.hpp | fn_sum.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_sum | //! \addtogroup fn_sum | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! Delayed sum of elements of a matrix along a specified dimension (either rows or columns). | //! Delayed sum of elements of a matrix along a specified dimension (either rows or columns). | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_svd.hpp | fn_svd.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_svd | //! \addtogroup fn_svd | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_syl_lyap.hpp | fn_syl_lyap.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011-2012 Conrad Sanderson | // Copyright (C) 2011-2012 Conrad Sanderson | |||
// Copyright (C) 2011-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_syl_lyap | //! \addtogroup fn_syl_lyap | |||
//! @{ | //! @{ | |||
//! find the solution of the Sylvester equation AX + XB = C | //! find the solution of the Sylvester equation AX + XB = C | |||
template<typename T1, typename T2, typename T3> | template<typename T1, typename T2, typename T3> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_symmat.hpp | fn_symmat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Conrad Sanderson | // Copyright (C) 2011 Conrad Sanderson | |||
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_symmat | //! \addtogroup fn_symmat | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_toeplitz.hpp | fn_toeplitz.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_toeplitz | //! \addtogroup fn_toeplitz | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_trace.hpp | fn_trace.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_trace | //! \addtogroup fn_trace | |||
//! @{ | //! @{ | |||
//! Immediate trace (sum of diagonal elements) of a square dense matrix | //! Immediate trace (sum of diagonal elements) of a square dense matrix | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_trans.hpp | fn_trans.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_trans | //! \addtogroup fn_trans | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_trig.hpp | fn_trig.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_trig | //! \addtogroup fn_trig | |||
//! @{ | //! @{ | |||
// | // | |||
// trigonometric functions: | // trigonometric functions: | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_trimat.hpp | fn_trimat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_trimat | //! \addtogroup fn_trimat | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_trunc_exp.hpp | fn_trunc_exp.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_trunc_exp | //! \addtogroup fn_trunc_exp | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_trunc_log.hpp | fn_trunc_log.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_trunc_log | //! \addtogroup fn_trunc_log | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_unique.hpp | fn_unique.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Arnold Wiliem | // Copyright (C) 2012 Arnold Wiliem | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
const Op<T1,op_unique> | const Op<T1,op_unique> | |||
unique | unique | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_var.hpp | fn_var.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_var | //! \addtogroup fn_var | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_zeros.hpp | fn_zeros.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup fn_zeros | //! \addtogroup fn_zeros | |||
//! @{ | //! @{ | |||
//! Generate a vector with all elements set to zero | //! Generate a vector with all elements set to zero | |||
arma_inline | arma_inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
format_wrap.hpp | format_wrap.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup format_wrap | //! \addtogroup format_wrap | |||
//! @{ | //! @{ | |||
//! \namespace arma_boost namespace for functions and classes which partial ly emulate Boost functionality | //! \namespace arma_boost namespace for functions and classes which partial ly emulate Boost functionality | |||
namespace arma_boost | namespace arma_boost | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
forward_bones.hpp | forward_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
using std::cout; | using std::cout; | |||
using std::cerr; | using std::cerr; | |||
using std::endl; | using std::endl; | |||
using std::ios; | using std::ios; | |||
skipping to change at line 61 | skipping to change at line 61 | |||
class op_strans; | class op_strans; | |||
class op_htrans; | class op_htrans; | |||
class op_htrans2; | class op_htrans2; | |||
class op_inv; | class op_inv; | |||
class op_sum; | class op_sum; | |||
class op_abs; | class op_abs; | |||
class op_diagmat; | class op_diagmat; | |||
class op_trimat; | class op_trimat; | |||
class op_diagvec; | class op_diagvec; | |||
class op_vectorise_col; | ||||
class eop_conj; | class eop_conj; | |||
class glue_times; | class glue_times; | |||
class glue_times_diag; | class glue_times_diag; | |||
class glue_rel_lt; | class glue_rel_lt; | |||
class glue_rel_gt; | class glue_rel_gt; | |||
class glue_rel_lteq; | class glue_rel_lteq; | |||
class glue_rel_gteq; | class glue_rel_gteq; | |||
End of changes. 3 change blocks. | ||||
1 lines changed or deleted | 2 lines changed or added | |||
glue_conv_bones.hpp | glue_conv_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_conv | //! \addtogroup glue_conv | |||
//! @{ | //! @{ | |||
class glue_conv | class glue_conv | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_conv_meat.hpp | glue_conv_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_conv | //! \addtogroup glue_conv | |||
//! @{ | //! @{ | |||
//! rudimentary implementation of the convolution operation | //! rudimentary implementation of the convolution operation | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_cor_bones.hpp | glue_cor_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_cor | //! \addtogroup glue_cor | |||
//! @{ | //! @{ | |||
class glue_cor | class glue_cor | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_cor_meat.hpp | glue_cor_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_cor | //! \addtogroup glue_cor | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_cov_bones.hpp | glue_cov_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_cov | //! \addtogroup glue_cov | |||
//! @{ | //! @{ | |||
class glue_cov | class glue_cov | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_cov_meat.hpp | glue_cov_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_cov | //! \addtogroup glue_cov | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_cross_bones.hpp | glue_cross_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_cross | //! \addtogroup glue_cross | |||
//! @{ | //! @{ | |||
class glue_cross | class glue_cross | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_cross_meat.hpp | glue_cross_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_cross | //! \addtogroup glue_cross | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_hist_bones.hpp | glue_hist_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
class glue_hist | class glue_hist | |||
{ | { | |||
public: | public: | |||
template<typename T1, typename T2> inline static void apply(Mat<uword>& out, const mtGlue<uword,T1,T2,glue_hist>& in); | template<typename T1, typename T2> inline static void apply(Mat<uword>& out, const mtGlue<uword,T1,T2,glue_hist>& in); | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_hist_meat.hpp | glue_hist_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012-2013 Conrad Sanderson | // Copyright (C) 2012-2013 Conrad Sanderson | |||
// Copyright (C) 2012-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
void | void | |||
glue_hist::apply(Mat<uword>& out, const mtGlue<uword,T1,T2,glue_hist>& in) | glue_hist::apply(Mat<uword>& out, const mtGlue<uword,T1,T2,glue_hist>& in) | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_histc_bones.hpp | glue_histc_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Boris Sabanin | // Copyright (C) 2012 Boris Sabanin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
class glue_histc | class glue_histc | |||
{ | { | |||
public: | public: | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_histc_meat.hpp | glue_histc_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012-2013 Conrad Sanderson | // Copyright (C) 2012-2013 Conrad Sanderson | |||
// Copyright (C) 2012-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Boris Sabanin | // Copyright (C) 2012 Boris Sabanin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
void | void | |||
glue_histc::apply(Mat<uword>& out, const mtGlue<uword,T1,T2,glue_histc>& in ) | glue_histc::apply(Mat<uword>& out, const mtGlue<uword,T1,T2,glue_histc>& in ) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_join_bones.hpp | glue_join_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_join | //! \addtogroup glue_join | |||
//! @{ | //! @{ | |||
class glue_join | class glue_join | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_join_meat.hpp | glue_join_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_join | //! \addtogroup glue_join | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_kron_bones.hpp | glue_kron_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_kron | //! \addtogroup glue_kron | |||
//! @{ | //! @{ | |||
class glue_kron | class glue_kron | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_kron_meat.hpp | glue_kron_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_kron | //! \addtogroup glue_kron | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_mixed_bones.hpp | glue_mixed_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_mixed | //! \addtogroup glue_mixed | |||
//! @{ | //! @{ | |||
class glue_mixed_times | class glue_mixed_times | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_mixed_meat.hpp | glue_mixed_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2013 Conrad Sanderson | // Copyright (C) 2009-2013 Conrad Sanderson | |||
// Copyright (C) 2009-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_mixed | //! \addtogroup glue_mixed | |||
//! @{ | //! @{ | |||
//! matrix multiplication with different element types | //! matrix multiplication with different element types | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_relational_bones.hpp | glue_relational_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_relational | //! \addtogroup glue_relational | |||
//! @{ | //! @{ | |||
class glue_rel_lt | class glue_rel_lt | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_relational_meat.hpp | glue_relational_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_relational | //! \addtogroup glue_relational | |||
//! @{ | //! @{ | |||
#undef operator_rel | #undef operator_rel | |||
#undef operator_str | #undef operator_str | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_solve_bones.hpp | glue_solve_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_solve | //! \addtogroup glue_solve | |||
//! @{ | //! @{ | |||
class glue_solve | class glue_solve | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_solve_meat.hpp | glue_solve_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_solve | //! \addtogroup glue_solve | |||
//! @{ | //! @{ | |||
template<typename eT, typename T2> | template<typename eT, typename T2> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_times_bones.hpp | glue_times_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_times | //! \addtogroup glue_times | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! Template metaprogram depth_lhs | //! Template metaprogram depth_lhs | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_times_meat.hpp | glue_times_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_times | //! \addtogroup glue_times | |||
//! @{ | //! @{ | |||
template<bool is_eT_blas_type> | template<bool is_eT_blas_type> | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
skipping to change at line 276 | skipping to change at line 276 | |||
} | } | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
glue_times::apply_inplace_plus(Mat<typename T1::elem_type>& out, const Glue <T1, T2, glue_times>& X, const sword sign) | glue_times::apply_inplace_plus(Mat<typename T1::elem_type>& out, const Glue <T1, T2, glue_times>& X, const sword sign) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
typedef typename T1::elem_type eT; | typedef typename T1::elem_type eT; | |||
typedef typename get_pod_type<eT>::result T; | ||||
const partial_unwrap_check<T1> tmp1(X.A, out); | const partial_unwrap_check<T1> tmp1(X.A, out); | |||
const partial_unwrap_check<T2> tmp2(X.B, out); | const partial_unwrap_check<T2> tmp2(X.B, out); | |||
typedef typename partial_unwrap_check<T1>::stored_type TA; | typedef typename partial_unwrap_check<T1>::stored_type TA; | |||
typedef typename partial_unwrap_check<T2>::stored_type TB; | typedef typename partial_unwrap_check<T2>::stored_type TB; | |||
const TA& A = tmp1.M; | const TA& A = tmp1.M; | |||
const TB& B = tmp2.M; | const TB& B = tmp2.M; | |||
const bool do_trans_A = partial_unwrap_check<T1>::do_trans; | const bool do_trans_A = partial_unwrap_check<T1>::do_trans; | |||
const bool do_trans_B = partial_unwrap_check<T2>::do_trans; | const bool do_trans_B = partial_unwrap_check<T2>::do_trans; | |||
const bool use_alpha = partial_unwrap_check<T1>::do_times || partial_unwr ap_check<T2>::do_times || (sign < sword(0)); | const bool use_alpha = partial_unwrap_check<T1>::do_times || partial_unwr ap_check<T2>::do_times || (sign < sword(0)); | |||
const eT alpha = use_alpha ? ( tmp1.get_val() * tmp2.get_val() * ( (sign > sword(0)) ? eT(1) : eT(-1) ) ) : eT(0); | const eT alpha = use_alpha ? ( tmp1.get_val() * tmp2.get_val() * ( (sign > sword(0)) ? eT(1) : eT(-1) ) ) : eT(0); | |||
arma_debug_assert_mul_size(A, B, do_trans_A, do_trans_B, "matrix multipli cation"); | arma_debug_assert_mul_size(A, B, do_trans_A, do_trans_B, "matrix multipli cation"); | |||
const uword result_n_rows = (do_trans_A == false) ? (TA::is_row ? 1 : A.n _rows) : (TA::is_col ? 1 : A.n_cols); | const uword result_n_rows = (do_trans_A == false) ? (TA::is_row ? 1 : A.n _rows) : (TA::is_col ? 1 : A.n_cols); | |||
const uword result_n_cols = (do_trans_B == false) ? (TB::is_col ? 1 : B.n _cols) : (TB::is_row ? 1 : B.n_rows); | const uword result_n_cols = (do_trans_B == false) ? (TB::is_col ? 1 : B.n _cols) : (TB::is_row ? 1 : B.n_rows); | |||
arma_debug_assert_same_size(out.n_rows, out.n_cols, result_n_rows, result _n_cols, "addition"); | arma_debug_assert_same_size(out.n_rows, out.n_cols, result_n_rows, result _n_cols, "addition"); | |||
if(out.n_elem > 0) | if(out.n_elem == 0) | |||
{ | { | |||
if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == fal | return; | |||
se) ) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, false, true>::apply(out.memptr(), B, A.memptr(), | ||||
alpha, eT(1)); | ||||
} | ||||
else | ||||
if( (B.n_cols == 1) || (TB::is_col) ) | ||||
{ | ||||
gemv<false, false, true>::apply(out.memptr(), A, B.memptr(), | ||||
alpha, eT(1)); | ||||
} | ||||
else | ||||
{ | ||||
gemm<false, false, false, true>::apply(out, A, B, alpha, eT(1)); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == tru | ||||
e) ) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, true, true>::apply(out.memptr(), B, A.memptr(), | ||||
alpha, eT(1)); | ||||
} | ||||
else | ||||
if( (B.n_cols == 1) || (TB::is_col) ) | ||||
{ | ||||
gemv<false, true, true>::apply(out.memptr(), A, B.memptr(), | ||||
alpha, eT(1)); | ||||
} | ||||
else | ||||
{ | ||||
gemm<false, false, true, true>::apply(out, A, B, alpha, eT(1)); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == fals | ||||
e) ) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, false, true>::apply(out.memptr(), B, A.memptr(), | ||||
alpha, eT(1)); | ||||
} | ||||
else | ||||
if( (B.n_cols == 1) || (TB::is_col) ) | ||||
{ | ||||
gemv<true, false, true>::apply(out.memptr(), A, B.memptr(), | ||||
alpha, eT(1)); | ||||
} | ||||
else | ||||
{ | ||||
gemm<true, false, false, true>::apply(out, A, B, alpha, eT(1)); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == true | ||||
) ) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, true, true>::apply(out.memptr(), B, A.memptr(), a | ||||
lpha, eT(1)); | ||||
} | ||||
else | ||||
if( (B.n_cols == 1) || (TB::is_col) ) | ||||
{ | ||||
gemv<true, true, true>::apply(out.memptr(), A, B.memptr(), a | ||||
lpha, eT(1)); | ||||
} | ||||
else | ||||
{ | ||||
gemm<true, false, true, true>::apply(out, A, B, alpha, eT(1)); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == fals | ||||
e) ) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, false, true>::apply(out.memptr(), B, A.memptr(), | ||||
alpha, eT(1)); | ||||
} | ||||
else | ||||
if( ((B.n_rows == 1) || (TB::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, false, true>::apply(out.memptr(), A, B.memptr(), | ||||
alpha, eT(1)); | ||||
} | ||||
else | ||||
{ | ||||
gemm<false, true, false, true>::apply(out, A, B, alpha, eT(1)); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == true | ||||
) ) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, true, true>::apply(out.memptr(), B, A.memptr(), a | ||||
lpha, eT(1)); | ||||
} | ||||
else | ||||
if( ((B.n_rows == 1) || (TB::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, true, true>::apply(out.memptr(), A, B.memptr(), a | ||||
lpha, eT(1)); | ||||
} | ||||
else | ||||
{ | ||||
gemm<false, true, true, true>::apply(out, A, B, alpha, eT(1)); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == false | ||||
) ) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, false, true>::apply(out.memptr(), B, A.memptr(), a | ||||
lpha, eT(1)); | ||||
} | ||||
else | ||||
if( ((B.n_rows == 1) || (TB::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, false, true>::apply(out.memptr(), A, B.memptr(), a | ||||
lpha, eT(1)); | ||||
} | ||||
else | ||||
{ | ||||
gemm<true, true, false, true>::apply(out, A, B, alpha, eT(1)); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == true) | ||||
) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, true, true>::apply(out.memptr(), B, A.memptr(), al | ||||
pha, eT(1)); | ||||
} | ||||
else | ||||
if( ((B.n_rows == 1) || (TB::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, true, true>::apply(out.memptr(), A, B.memptr(), al | ||||
pha, eT(1)); | ||||
} | ||||
else | ||||
{ | ||||
gemm<true, true, true, true>::apply(out, A, B, alpha, eT(1)); | ||||
} | ||||
} | ||||
} | } | |||
if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == false | ||||
) ) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_cx<eT>::no) ) { gemv | ||||
<true, false, true>::apply(out.memptr(), B, A.memptr(), alpha, eT(1 | ||||
)); } | ||||
else if( (B.n_cols == 1) || (TB::is_col) ) { gemv | ||||
<false, false, true>::apply(out.memptr(), A, B.memptr(), alpha, eT(1 | ||||
)); } | ||||
else { gemm | ||||
<false, false, false, true>::apply(out, A, B, alpha, eT(1 | ||||
)); } | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == true) | ||||
) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_cx<eT>::no) ) { gemv | ||||
<true, true, true>::apply(out.memptr(), B, A.memptr(), alpha, eT(1) | ||||
); } | ||||
else if( (B.n_cols == 1) || (TB::is_col) ) { gemv | ||||
<false, true, true>::apply(out.memptr(), A, B.memptr(), alpha, eT(1) | ||||
); } | ||||
else { gemm | ||||
<false, false, true, true>::apply(out, A, B, alpha, eT(1) | ||||
); } | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == false) | ||||
) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_cx<eT>::no) ) { gem | ||||
v<true, false, true>::apply(out.memptr(), B, A.memptr(), alpha, eT(1 | ||||
)); } | ||||
else if( (B.n_cols == 1) || (TB::is_col) ) { gem | ||||
v<true, false, true>::apply(out.memptr(), A, B.memptr(), alpha, eT(1 | ||||
)); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::no) ) { syr | ||||
k<true, false, true>::apply(out, A, alpha, eT(1 | ||||
)); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::yes) ) { her | ||||
k<true, false, true>::apply(out, A, T(0), T(1 | ||||
)); } | ||||
else { gem | ||||
m<true, false, false, true>::apply(out, A, B, alpha, eT(1 | ||||
)); } | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == true) | ||||
) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_cx<eT>::no) ) { gemv | ||||
<true, true, true>::apply(out.memptr(), B, A.memptr(), alpha, eT(1)) | ||||
; } | ||||
else if( (B.n_cols == 1) || (TB::is_col) ) { gemv | ||||
<true, true, true>::apply(out.memptr(), A, B.memptr(), alpha, eT(1)) | ||||
; } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::no) ) { syrk | ||||
<true, true, true>::apply(out, A, alpha, eT(1)) | ||||
; } | ||||
else { gemm | ||||
<true, false, true, true>::apply(out, A, B, alpha, eT(1)) | ||||
; } | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == false) | ||||
) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_cx<eT>::no) ) { gem | ||||
v<false, false, true>::apply(out.memptr(), B, A.memptr(), alpha, eT(1 | ||||
)); } | ||||
else if( ((B.n_rows == 1) || (TB::is_row)) && (is_cx<eT>::no) ) { gem | ||||
v<false, false, true>::apply(out.memptr(), A, B.memptr(), alpha, eT(1 | ||||
)); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::no) ) { syr | ||||
k<false, false, true>::apply(out, A, alpha, eT(1 | ||||
)); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::yes) ) { her | ||||
k<false, false, true>::apply(out, A, T(0), T(1 | ||||
)); } | ||||
else { gem | ||||
m<false, true, false, true>::apply(out, A, B, alpha, eT(1 | ||||
)); } | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == true) | ||||
) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_cx<eT>::no) ) { gemv | ||||
<false, true, true>::apply(out.memptr(), B, A.memptr(), alpha, eT(1)) | ||||
; } | ||||
else if( ((B.n_rows == 1) || (TB::is_row)) && (is_cx<eT>::no) ) { gemv | ||||
<false, true, true>::apply(out.memptr(), A, B.memptr(), alpha, eT(1)) | ||||
; } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::no) ) { syrk | ||||
<false, true, true>::apply(out, A, alpha, eT(1)) | ||||
; } | ||||
else { gemm | ||||
<false, true, true, true>::apply(out, A, B, alpha, eT(1)) | ||||
; } | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == false) | ||||
) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_cx<eT>::no) ) { gemv | ||||
<false, false, true>::apply(out.memptr(), B, A.memptr(), alpha, eT(1)) | ||||
; } | ||||
else if( ((B.n_rows == 1) || (TB::is_row)) && (is_cx<eT>::no) ) { gemv | ||||
<true, false, true>::apply(out.memptr(), A, B.memptr(), alpha, eT(1)) | ||||
; } | ||||
else { gemm | ||||
<true, true, false, true>::apply(out, A, B, alpha, eT(1)) | ||||
; } | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == true) ) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_cx<eT>::no) ) { gemv | ||||
<false, true, true>::apply(out.memptr(), B, A.memptr(), alpha, eT(1)); | ||||
} | ||||
else if( ((B.n_rows == 1) || (TB::is_row)) && (is_cx<eT>::no) ) { gemv | ||||
<true, true, true>::apply(out.memptr(), A, B.memptr(), alpha, eT(1)); | ||||
} | ||||
else { gemm | ||||
<true, true, true, true>::apply(out, A, B, alpha, eT(1)); | ||||
} | ||||
} | ||||
} | } | |||
template<typename eT, const bool do_trans_A, const bool do_trans_B, typenam e TA, typename TB> | template<typename eT, const bool do_trans_A, const bool do_trans_B, typenam e TA, typename TB> | |||
arma_inline | arma_inline | |||
uword | uword | |||
glue_times::mul_storage_cost(const TA& A, const TB& B) | glue_times::mul_storage_cost(const TA& A, const TB& B) | |||
{ | { | |||
const uword final_A_n_rows = (do_trans_A == false) ? ( TA::is_row ? 1 : A .n_rows ) : ( TA::is_col ? 1 : A.n_cols ); | const uword final_A_n_rows = (do_trans_A == false) ? ( TA::is_row ? 1 : A .n_rows ) : ( TA::is_col ? 1 : A.n_cols ); | |||
const uword final_B_n_cols = (do_trans_B == false) ? ( TB::is_col ? 1 : B .n_cols ) : ( TB::is_row ? 1 : B.n_rows ); | const uword final_B_n_cols = (do_trans_B == false) ? ( TB::is_col ? 1 : B .n_cols ) : ( TB::is_row ? 1 : B.n_rows ); | |||
skipping to change at line 482 | skipping to change at line 411 | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
//arma_debug_assert_mul_size(A, B, do_trans_A, do_trans_B, "matrix multip lication"); | //arma_debug_assert_mul_size(A, B, do_trans_A, do_trans_B, "matrix multip lication"); | |||
arma_debug_assert_trans_mul_size<do_trans_A, do_trans_B>(A.n_rows, A.n_co ls, B.n_rows, B.n_cols, "matrix multiplication"); | arma_debug_assert_trans_mul_size<do_trans_A, do_trans_B>(A.n_rows, A.n_co ls, B.n_rows, B.n_cols, "matrix multiplication"); | |||
const uword final_n_rows = (do_trans_A == false) ? (TA::is_row ? 1 : A.n_ rows) : (TA::is_col ? 1 : A.n_cols); | const uword final_n_rows = (do_trans_A == false) ? (TA::is_row ? 1 : A.n_ rows) : (TA::is_col ? 1 : A.n_cols); | |||
const uword final_n_cols = (do_trans_B == false) ? (TB::is_col ? 1 : B.n_ cols) : (TB::is_row ? 1 : B.n_rows); | const uword final_n_cols = (do_trans_B == false) ? (TB::is_col ? 1 : B.n_ cols) : (TB::is_row ? 1 : B.n_rows); | |||
out.set_size(final_n_rows, final_n_cols); | out.set_size(final_n_rows, final_n_cols); | |||
if( (A.n_elem > 0) && (B.n_elem > 0) ) | if( (A.n_elem == 0) || (B.n_elem == 0) ) | |||
{ | { | |||
if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == fal | out.zeros(); | |||
se) ) | return; | |||
{ | } | |||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == false | |||
{ | ) ) | |||
gemv<true, false, false>::apply(out.memptr(), B, A.memptr() | { | |||
); | if( ((A.n_rows == 1) || (TA::is_row)) && (is_cx<eT>::no) ) { gemv | |||
} | <true, false, false>::apply(out.memptr(), B, A.memptr()); } | |||
else | else if( (B.n_cols == 1) || (TB::is_col) ) { gemv | |||
if( (B.n_cols == 1) || (TB::is_col) ) | <false, false, false>::apply(out.memptr(), A, B.memptr()); } | |||
{ | else { gemm | |||
gemv<false, false, false>::apply(out.memptr(), A, B.memptr() | <false, false, false, false>::apply(out, A, B ); } | |||
); | ||||
} | ||||
else | ||||
{ | ||||
gemm<false, false, false, false>::apply(out, A, B); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == tru | ||||
e) ) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, true, false>::apply(out.memptr(), B, A.memptr(), | ||||
alpha); | ||||
} | ||||
else | ||||
if( (B.n_cols == 1) || (TB::is_col) ) | ||||
{ | ||||
gemv<false, true, false>::apply(out.memptr(), A, B.memptr(), | ||||
alpha); | ||||
} | ||||
else | ||||
{ | ||||
gemm<false, false, true, false>::apply(out, A, B, alpha); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == fals | ||||
e) ) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, false, false>::apply(out.memptr(), B, A.memptr()) | ||||
; | ||||
} | ||||
else | ||||
if( (B.n_cols == 1) || (TB::is_col) ) | ||||
{ | ||||
gemv<true, false, false>::apply(out.memptr(), A, B.memptr()) | ||||
; | ||||
} | ||||
else | ||||
{ | ||||
gemm<true, false, false, false>::apply(out, A, B); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == true | ||||
) ) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, true, false>::apply(out.memptr(), B, A.memptr(), | ||||
alpha); | ||||
} | ||||
else | ||||
if( (B.n_cols == 1) || (TB::is_col) ) | ||||
{ | ||||
gemv<true, true, false>::apply(out.memptr(), A, B.memptr(), | ||||
alpha); | ||||
} | ||||
else | ||||
{ | ||||
gemm<true, false, true, false>::apply(out, A, B, alpha); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == fals | ||||
e) ) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, false, false>::apply(out.memptr(), B, A.memptr()) | ||||
; | ||||
} | ||||
else | ||||
if( ((B.n_rows == 1) || (TB::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, false, false>::apply(out.memptr(), A, B.memptr()) | ||||
; | ||||
} | ||||
else | ||||
{ | ||||
gemm<false, true, false, false>::apply(out, A, B); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == true | ||||
) ) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, true, false>::apply(out.memptr(), B, A.memptr(), | ||||
alpha); | ||||
} | ||||
else | ||||
if( ((B.n_rows == 1) || (TB::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, true, false>::apply(out.memptr(), A, B.memptr(), | ||||
alpha); | ||||
} | ||||
else | ||||
{ | ||||
gemm<false, true, true, false>::apply(out, A, B, alpha); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == false | ||||
) ) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, false, false>::apply(out.memptr(), B, A.memptr()); | ||||
} | ||||
else | ||||
if( ((B.n_rows == 1) || (TB::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, false, false>::apply(out.memptr(), A, B.memptr()); | ||||
} | ||||
else | ||||
{ | ||||
gemm<true, true, false, false>::apply(out, A, B); | ||||
} | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == true) | ||||
) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<false, true, false>::apply(out.memptr(), B, A.memptr(), a | ||||
lpha); | ||||
} | ||||
else | ||||
if( ((B.n_rows == 1) || (TB::is_row)) && (is_complex<eT>::value == fa | ||||
lse) ) | ||||
{ | ||||
gemv<true, true, false>::apply(out.memptr(), A, B.memptr(), a | ||||
lpha); | ||||
} | ||||
else | ||||
{ | ||||
gemm<true, true, true, false>::apply(out, A, B, alpha); | ||||
} | ||||
} | ||||
} | } | |||
else | else | |||
if( (do_trans_A == false) && (do_trans_B == false) && (use_alpha == true) ) | ||||
{ | { | |||
out.zeros(); | if( ((A.n_rows == 1) || (TA::is_row)) && (is_cx<eT>::no) ) { gemv | |||
<true, true, false>::apply(out.memptr(), B, A.memptr(), alpha); } | ||||
else if( (B.n_cols == 1) || (TB::is_col) ) { gemv | ||||
<false, true, false>::apply(out.memptr(), A, B.memptr(), alpha); } | ||||
else { gemm | ||||
<false, false, true, false>::apply(out, A, B, alpha); } | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == false) | ||||
) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_cx<eT>::no) ) { gem | ||||
v<true, false, false>::apply(out.memptr(), B, A.memptr()); } | ||||
else if( (B.n_cols == 1) || (TB::is_col) ) { gem | ||||
v<true, false, false>::apply(out.memptr(), A, B.memptr()); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::no) ) { syr | ||||
k<true, false, false>::apply(out, A ); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::yes) ) { her | ||||
k<true, false, false>::apply(out, A ); } | ||||
else { gem | ||||
m<true, false, false, false>::apply(out, A, B ); } | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == false) && (use_alpha == true) | ||||
) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_cx<eT>::no) ) { gemv | ||||
<true, true, false>::apply(out.memptr(), B, A.memptr(), alpha); } | ||||
else if( (B.n_cols == 1) || (TB::is_col) ) { gemv | ||||
<true, true, false>::apply(out.memptr(), A, B.memptr(), alpha); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::no) ) { syrk | ||||
<true, true, false>::apply(out, A, alpha); } | ||||
else { gemm | ||||
<true, false, true, false>::apply(out, A, B, alpha); } | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == false) | ||||
) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_cx<eT>::no) ) { gem | ||||
v<false, false, false>::apply(out.memptr(), B, A.memptr()); } | ||||
else if( ((B.n_rows == 1) || (TB::is_row)) && (is_cx<eT>::no) ) { gem | ||||
v<false, false, false>::apply(out.memptr(), A, B.memptr()); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::no) ) { syr | ||||
k<false, false, false>::apply(out, A ); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::yes) ) { her | ||||
k<false, false, false>::apply(out, A ); } | ||||
else { gem | ||||
m<false, true, false, false>::apply(out, A, B ); } | ||||
} | ||||
else | ||||
if( (do_trans_A == false) && (do_trans_B == true) && (use_alpha == true) | ||||
) | ||||
{ | ||||
if( ((A.n_rows == 1) || (TA::is_row)) && (is_cx<eT>::no) ) { gemv< | ||||
false, true, false>::apply(out.memptr(), B, A.memptr(), alpha); } | ||||
else if( ((B.n_rows == 1) || (TB::is_row)) && (is_cx<eT>::no) ) { gemv< | ||||
false, true, false>::apply(out.memptr(), A, B.memptr(), alpha); } | ||||
else if( (void_ptr(&A) == void_ptr(&B)) && (is_cx<eT>::no) ) { syrk< | ||||
false, true, false>::apply(out, A, alpha); } | ||||
else { gemm< | ||||
false, true, true, false>::apply(out, A, B, alpha); } | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == false) | ||||
) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_cx<eT>::no) ) { gemv | ||||
<false, false, false>::apply(out.memptr(), B, A.memptr()); } | ||||
else if( ((B.n_rows == 1) || (TB::is_row)) && (is_cx<eT>::no) ) { gemv | ||||
<true, false, false>::apply(out.memptr(), A, B.memptr()); } | ||||
else { gemm | ||||
<true, true, false, false>::apply(out, A, B ); } | ||||
} | ||||
else | ||||
if( (do_trans_A == true) && (do_trans_B == true) && (use_alpha == true) ) | ||||
{ | ||||
if( ((A.n_cols == 1) || (TA::is_col)) && (is_cx<eT>::no) ) { gemv | ||||
<false, true, false>::apply(out.memptr(), B, A.memptr(), alpha); } | ||||
else if( ((B.n_rows == 1) || (TB::is_row)) && (is_cx<eT>::no) ) { gemv | ||||
<true, true, false>::apply(out.memptr(), A, B.memptr(), alpha); } | ||||
else { gemm | ||||
<true, true, true, false>::apply(out, A, B, alpha); } | ||||
} | } | |||
} | } | |||
template | template | |||
< | < | |||
typename eT, | typename eT, | |||
const bool do_trans_A, | const bool do_trans_A, | |||
const bool do_trans_B, | const bool do_trans_B, | |||
const bool do_trans_C, | const bool do_trans_C, | |||
const bool use_alpha, | const bool use_alpha, | |||
End of changes. 11 change blocks. | ||||
345 lines changed or deleted | 232 lines changed or added | |||
glue_toeplitz_bones.hpp | glue_toeplitz_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_toeplitz | //! \addtogroup glue_toeplitz | |||
//! @{ | //! @{ | |||
class glue_toeplitz | class glue_toeplitz | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
glue_toeplitz_meat.hpp | glue_toeplitz_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup glue_toeplitz | //! \addtogroup glue_toeplitz | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
include_atlas.hpp | include_atlas.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
#if defined(ARMA_USE_ATLAS) | #if defined(ARMA_USE_ATLAS) | |||
#if !defined(ARMA_ATLAS_INCLUDE_DIR) | #if !defined(ARMA_ATLAS_INCLUDE_DIR) | |||
extern "C" | extern "C" | |||
{ | { | |||
#include <cblas.h> | #include <cblas.h> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_chol_bones.hpp | op_chol_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_chol | //! \addtogroup op_chol | |||
//! @{ | //! @{ | |||
class op_chol | class op_chol | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_chol_meat.hpp | op_chol_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_chol | //! \addtogroup op_chol | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_cor_bones.hpp | op_cor_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_cor | //! \addtogroup op_cor | |||
//! @{ | //! @{ | |||
class op_cor | class op_cor | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_cor_meat.hpp | op_cor_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_cor | //! \addtogroup op_cor | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_cov_bones.hpp | op_cov_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_cov | //! \addtogroup op_cov | |||
//! @{ | //! @{ | |||
class op_cov | class op_cov | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_cov_meat.hpp | op_cov_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_cov | //! \addtogroup op_cov | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_cumsum_bones.hpp | op_cumsum_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_cumsum | //! \addtogroup op_cumsum | |||
//! @{ | //! @{ | |||
class op_cumsum_mat | class op_cumsum_mat | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_cumsum_meat.hpp | op_cumsum_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_cumsum | //! \addtogroup op_cumsum | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_cx_scalar_bones.hpp | op_cx_scalar_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_cx_scalar | //! \addtogroup op_cx_scalar | |||
//! @{ | //! @{ | |||
class op_cx_scalar_times | class op_cx_scalar_times | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_cx_scalar_meat.hpp | op_cx_scalar_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_cx_scalar | //! \addtogroup op_cx_scalar | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_diagmat_bones.hpp | op_diagmat_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_diagmat | //! \addtogroup op_diagmat | |||
//! @{ | //! @{ | |||
class op_diagmat | class op_diagmat | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_diagmat_meat.hpp | op_diagmat_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_diagmat | //! \addtogroup op_diagmat | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_diagvec_bones.hpp | op_diagvec_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_diagvec | //! \addtogroup op_diagvec | |||
//! @{ | //! @{ | |||
class op_diagvec | class op_diagvec | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_diagvec_meat.hpp | op_diagvec_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_diagvec | //! \addtogroup op_diagvec | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_dot_bones.hpp | op_dot_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_dot | //! \addtogroup op_dot | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! dot product operation | //! dot product operation | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_dot_meat.hpp | op_dot_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_dot | //! \addtogroup op_dot | |||
//! @{ | //! @{ | |||
//! for two arrays, generic version for non-complex values | //! for two arrays, generic version for non-complex values | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_dotext_bones.hpp | op_dotext_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_dotext | //! \addtogroup op_dotext | |||
//! @{ | //! @{ | |||
class op_dotext | class op_dotext | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_dotext_meat.hpp | op_dotext_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_dotext | //! \addtogroup op_dotext | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_find_bones.hpp | op_find_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Dimitrios Bouzas | // Copyright (C) 2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_find | //! \addtogroup op_find | |||
//! @{ | //! @{ | |||
class op_find | class op_find | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_find_meat.hpp | op_find_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Dimitrios Bouzas | // Copyright (C) 2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_find | //! \addtogroup op_find | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
skipping to change at line 103 | skipping to change at line 103 | |||
uword i,j; | uword i,j; | |||
for(i=0, j=1; j < n_elem; i+=2, j+=2) | for(i=0, j=1; j < n_elem; i+=2, j+=2) | |||
{ | { | |||
const eT tpi = PA[i]; | const eT tpi = PA[i]; | |||
const eT tpj = PA[j]; | const eT tpj = PA[j]; | |||
bool not_zero_i; | bool not_zero_i; | |||
bool not_zero_j; | bool not_zero_j; | |||
if(is_same_type<op_type, op_rel_lt_pre >::value == true) { no | if(is_same_type<op_type, op_rel_lt_pre >::yes) { not_zero_i = | |||
t_zero_i = (val < tpi); } | (val < tpi); } | |||
else if(is_same_type<op_type, op_rel_lt_post >::value == true) { no | else if(is_same_type<op_type, op_rel_lt_post >::yes) { not_zero_i = | |||
t_zero_i = (tpi < val); } | (tpi < val); } | |||
else if(is_same_type<op_type, op_rel_gt_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_gt_pre >::yes) { not_zero_i = | |||
t_zero_i = (val > tpi); } | (val > tpi); } | |||
else if(is_same_type<op_type, op_rel_gt_post >::value == true) { no | else if(is_same_type<op_type, op_rel_gt_post >::yes) { not_zero_i = | |||
t_zero_i = (tpi > val); } | (tpi > val); } | |||
else if(is_same_type<op_type, op_rel_lteq_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_lteq_pre >::yes) { not_zero_i = | |||
t_zero_i = (val <= tpi); } | (val <= tpi); } | |||
else if(is_same_type<op_type, op_rel_lteq_post>::value == true) { no | else if(is_same_type<op_type, op_rel_lteq_post>::yes) { not_zero_i = | |||
t_zero_i = (tpi <= val); } | (tpi <= val); } | |||
else if(is_same_type<op_type, op_rel_gteq_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_gteq_pre >::yes) { not_zero_i = | |||
t_zero_i = (val >= tpi); } | (val >= tpi); } | |||
else if(is_same_type<op_type, op_rel_gteq_post>::value == true) { no | else if(is_same_type<op_type, op_rel_gteq_post>::yes) { not_zero_i = | |||
t_zero_i = (tpi >= val); } | (tpi >= val); } | |||
else if(is_same_type<op_type, op_rel_eq >::value == true) { no | else if(is_same_type<op_type, op_rel_eq >::yes) { not_zero_i = | |||
t_zero_i = (tpi == val); } | (tpi == val); } | |||
else if(is_same_type<op_type, op_rel_noteq >::value == true) { no | else if(is_same_type<op_type, op_rel_noteq >::yes) { not_zero_i = | |||
t_zero_i = (tpi != val); } | (tpi != val); } | |||
else not_zero_i = false; | else not_zero_i = false; | |||
if(is_same_type<op_type, op_rel_lt_pre >::value == true) { no | if(is_same_type<op_type, op_rel_lt_pre >::yes) { not_zero_j = | |||
t_zero_j = (val < tpj); } | (val < tpj); } | |||
else if(is_same_type<op_type, op_rel_lt_post >::value == true) { no | else if(is_same_type<op_type, op_rel_lt_post >::yes) { not_zero_j = | |||
t_zero_j = (tpj < val); } | (tpj < val); } | |||
else if(is_same_type<op_type, op_rel_gt_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_gt_pre >::yes) { not_zero_j = | |||
t_zero_j = (val > tpj); } | (val > tpj); } | |||
else if(is_same_type<op_type, op_rel_gt_post >::value == true) { no | else if(is_same_type<op_type, op_rel_gt_post >::yes) { not_zero_j = | |||
t_zero_j = (tpj > val); } | (tpj > val); } | |||
else if(is_same_type<op_type, op_rel_lteq_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_lteq_pre >::yes) { not_zero_j = | |||
t_zero_j = (val <= tpj); } | (val <= tpj); } | |||
else if(is_same_type<op_type, op_rel_lteq_post>::value == true) { no | else if(is_same_type<op_type, op_rel_lteq_post>::yes) { not_zero_j = | |||
t_zero_j = (tpj <= val); } | (tpj <= val); } | |||
else if(is_same_type<op_type, op_rel_gteq_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_gteq_pre >::yes) { not_zero_j = | |||
t_zero_j = (val >= tpj); } | (val >= tpj); } | |||
else if(is_same_type<op_type, op_rel_gteq_post>::value == true) { no | else if(is_same_type<op_type, op_rel_gteq_post>::yes) { not_zero_j = | |||
t_zero_j = (tpj >= val); } | (tpj >= val); } | |||
else if(is_same_type<op_type, op_rel_eq >::value == true) { no | else if(is_same_type<op_type, op_rel_eq >::yes) { not_zero_j = | |||
t_zero_j = (tpj == val); } | (tpj == val); } | |||
else if(is_same_type<op_type, op_rel_noteq >::value == true) { no | else if(is_same_type<op_type, op_rel_noteq >::yes) { not_zero_j = | |||
t_zero_j = (tpj != val); } | (tpj != val); } | |||
else not_zero_j = false; | else not_zero_j = false; | |||
if(not_zero_i == true) { indices_mem[n_nz] = i; ++n_nz; } | if(not_zero_i == true) { indices_mem[n_nz] = i; ++n_nz; } | |||
if(not_zero_j == true) { indices_mem[n_nz] = j; ++n_nz; } | if(not_zero_j == true) { indices_mem[n_nz] = j; ++n_nz; } | |||
} | } | |||
if(i < n_elem) | if(i < n_elem) | |||
{ | { | |||
bool not_zero; | bool not_zero; | |||
const eT tmp = PA[i]; | const eT tmp = PA[i]; | |||
if(is_same_type<op_type, op_rel_lt_pre >::value == true) { no | if(is_same_type<op_type, op_rel_lt_pre >::yes) { not_zero = ( | |||
t_zero = (val < tmp); } | val < tmp); } | |||
else if(is_same_type<op_type, op_rel_lt_post >::value == true) { no | else if(is_same_type<op_type, op_rel_lt_post >::yes) { not_zero = ( | |||
t_zero = (tmp < val); } | tmp < val); } | |||
else if(is_same_type<op_type, op_rel_gt_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_gt_pre >::yes) { not_zero = ( | |||
t_zero = (val > tmp); } | val > tmp); } | |||
else if(is_same_type<op_type, op_rel_gt_post >::value == true) { no | else if(is_same_type<op_type, op_rel_gt_post >::yes) { not_zero = ( | |||
t_zero = (tmp > val); } | tmp > val); } | |||
else if(is_same_type<op_type, op_rel_lteq_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_lteq_pre >::yes) { not_zero = ( | |||
t_zero = (val <= tmp); } | val <= tmp); } | |||
else if(is_same_type<op_type, op_rel_lteq_post>::value == true) { no | else if(is_same_type<op_type, op_rel_lteq_post>::yes) { not_zero = ( | |||
t_zero = (tmp <= val); } | tmp <= val); } | |||
else if(is_same_type<op_type, op_rel_gteq_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_gteq_pre >::yes) { not_zero = ( | |||
t_zero = (val >= tmp); } | val >= tmp); } | |||
else if(is_same_type<op_type, op_rel_gteq_post>::value == true) { no | else if(is_same_type<op_type, op_rel_gteq_post>::yes) { not_zero = ( | |||
t_zero = (tmp >= val); } | tmp >= val); } | |||
else if(is_same_type<op_type, op_rel_eq >::value == true) { no | else if(is_same_type<op_type, op_rel_eq >::yes) { not_zero = ( | |||
t_zero = (tmp == val); } | tmp == val); } | |||
else if(is_same_type<op_type, op_rel_noteq >::value == true) { no | else if(is_same_type<op_type, op_rel_noteq >::yes) { not_zero = ( | |||
t_zero = (tmp != val); } | tmp != val); } | |||
else not_zero = false; | else not_zero = false; | |||
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const uword n_rows = A.get_n_rows(); | const uword n_rows = A.get_n_rows(); | |||
const uword n_cols = A.get_n_cols(); | const uword n_cols = A.get_n_cols(); | |||
uword i = 0; | uword i = 0; | |||
for(uword col=0; col < n_cols; ++col) | for(uword col=0; col < n_cols; ++col) | |||
for(uword row=0; row < n_rows; ++row) | for(uword row=0; row < n_rows; ++row) | |||
{ | { | |||
const eT tmp = A.at(row,col); | const eT tmp = A.at(row,col); | |||
bool not_zero; | bool not_zero; | |||
if(is_same_type<op_type, op_rel_lt_pre >::value == true) { no | if(is_same_type<op_type, op_rel_lt_pre >::yes) { not_zero = ( | |||
t_zero = (val < tmp); } | val < tmp); } | |||
else if(is_same_type<op_type, op_rel_lt_post >::value == true) { no | else if(is_same_type<op_type, op_rel_lt_post >::yes) { not_zero = ( | |||
t_zero = (tmp < val); } | tmp < val); } | |||
else if(is_same_type<op_type, op_rel_gt_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_gt_pre >::yes) { not_zero = ( | |||
t_zero = (val > tmp); } | val > tmp); } | |||
else if(is_same_type<op_type, op_rel_gt_post >::value == true) { no | else if(is_same_type<op_type, op_rel_gt_post >::yes) { not_zero = ( | |||
t_zero = (tmp > val); } | tmp > val); } | |||
else if(is_same_type<op_type, op_rel_lteq_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_lteq_pre >::yes) { not_zero = ( | |||
t_zero = (val <= tmp); } | val <= tmp); } | |||
else if(is_same_type<op_type, op_rel_lteq_post>::value == true) { no | else if(is_same_type<op_type, op_rel_lteq_post>::yes) { not_zero = ( | |||
t_zero = (tmp <= val); } | tmp <= val); } | |||
else if(is_same_type<op_type, op_rel_gteq_pre >::value == true) { no | else if(is_same_type<op_type, op_rel_gteq_pre >::yes) { not_zero = ( | |||
t_zero = (val >= tmp); } | val >= tmp); } | |||
else if(is_same_type<op_type, op_rel_gteq_post>::value == true) { no | else if(is_same_type<op_type, op_rel_gteq_post>::yes) { not_zero = ( | |||
t_zero = (tmp >= val); } | tmp >= val); } | |||
else if(is_same_type<op_type, op_rel_eq >::value == true) { no | else if(is_same_type<op_type, op_rel_eq >::yes) { not_zero = ( | |||
t_zero = (tmp == val); } | tmp == val); } | |||
else if(is_same_type<op_type, op_rel_noteq >::value == true) { no | else if(is_same_type<op_type, op_rel_noteq >::yes) { not_zero = ( | |||
t_zero = (tmp != val); } | tmp != val); } | |||
else not_zero = false; | else not_zero = false; | |||
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | |||
++i; | ++i; | |||
} | } | |||
} | } | |||
return n_nz; | return n_nz; | |||
} | } | |||
skipping to change at line 223 | skipping to change at line 223 | |||
uword* indices_mem = indices.memptr(); | uword* indices_mem = indices.memptr(); | |||
uword n_nz = 0; | uword n_nz = 0; | |||
for(uword i=0; i<n_elem; ++i) | for(uword i=0; i<n_elem; ++i) | |||
{ | { | |||
const eT tmp = PA[i]; | const eT tmp = PA[i]; | |||
bool not_zero; | bool not_zero; | |||
if(is_same_type<op_type, op_rel_eq >::value == true) { not_zero | if(is_same_type<op_type, op_rel_eq >::yes) { not_zero = (tmp == | |||
= (tmp == val); } | val); } | |||
else if(is_same_type<op_type, op_rel_noteq>::value == true) { not_zero | else if(is_same_type<op_type, op_rel_noteq>::yes) { not_zero = (tmp != | |||
= (tmp != val); } | val); } | |||
else not_zero = false; | else not_zero = false; | |||
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | |||
} | } | |||
return n_nz; | return n_nz; | |||
} | } | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
skipping to change at line 278 | skipping to change at line 278 | |||
uword* indices_mem = indices.memptr(); | uword* indices_mem = indices.memptr(); | |||
uword n_nz = 0; | uword n_nz = 0; | |||
for(uword i=0; i<n_elem; ++i) | for(uword i=0; i<n_elem; ++i) | |||
{ | { | |||
const eT1 tmp1 = PA[i]; | const eT1 tmp1 = PA[i]; | |||
const eT2 tmp2 = PB[i]; | const eT2 tmp2 = PB[i]; | |||
bool not_zero; | bool not_zero; | |||
if(is_same_type<glue_type, glue_rel_lt >::value == true) { not | if(is_same_type<glue_type, glue_rel_lt >::yes) { not_zero = (t | |||
_zero = (tmp1 < tmp2); } | mp1 < tmp2); } | |||
else if(is_same_type<glue_type, glue_rel_gt >::value == true) { not | else if(is_same_type<glue_type, glue_rel_gt >::yes) { not_zero = (t | |||
_zero = (tmp1 > tmp2); } | mp1 > tmp2); } | |||
else if(is_same_type<glue_type, glue_rel_lteq >::value == true) { not | else if(is_same_type<glue_type, glue_rel_lteq >::yes) { not_zero = (t | |||
_zero = (tmp1 <= tmp2); } | mp1 <= tmp2); } | |||
else if(is_same_type<glue_type, glue_rel_gteq >::value == true) { not | else if(is_same_type<glue_type, glue_rel_gteq >::yes) { not_zero = (t | |||
_zero = (tmp1 >= tmp2); } | mp1 >= tmp2); } | |||
else if(is_same_type<glue_type, glue_rel_eq >::value == true) { not | else if(is_same_type<glue_type, glue_rel_eq >::yes) { not_zero = (t | |||
_zero = (tmp1 == tmp2); } | mp1 == tmp2); } | |||
else if(is_same_type<glue_type, glue_rel_noteq >::value == true) { not | else if(is_same_type<glue_type, glue_rel_noteq >::yes) { not_zero = (t | |||
_zero = (tmp1 != tmp2); } | mp1 != tmp2); } | |||
else not_zero = false; | else not_zero = false; | |||
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | |||
} | } | |||
return n_nz; | return n_nz; | |||
} | } | |||
template<typename T1, typename T2, typename glue_type> | template<typename T1, typename T2, typename glue_type> | |||
inline | inline | |||
skipping to change at line 331 | skipping to change at line 331 | |||
indices.set_size(n_elem, 1); | indices.set_size(n_elem, 1); | |||
uword* indices_mem = indices.memptr(); | uword* indices_mem = indices.memptr(); | |||
uword n_nz = 0; | uword n_nz = 0; | |||
for(uword i=0; i<n_elem; ++i) | for(uword i=0; i<n_elem; ++i) | |||
{ | { | |||
bool not_zero; | bool not_zero; | |||
if(is_same_type<glue_type, glue_rel_eq >::value == true) { not | if(is_same_type<glue_type, glue_rel_eq >::yes) { not_zero = (P | |||
_zero = (PA[i] == PB[i]); } | A[i] == PB[i]); } | |||
else if(is_same_type<glue_type, glue_rel_noteq >::value == true) { not | else if(is_same_type<glue_type, glue_rel_noteq >::yes) { not_zero = (P | |||
_zero = (PA[i] != PB[i]); } | A[i] != PB[i]); } | |||
else not_zero = false; | else not_zero = false; | |||
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; } | |||
} | } | |||
return n_nz; | return n_nz; | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 9 change blocks. | ||||
101 lines changed or deleted | 101 lines changed or added | |||
op_flip_bones.hpp | op_flip_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_flip | //! \addtogroup op_flip | |||
//! @{ | //! @{ | |||
class op_flipud | class op_flipud | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_flip_meat.hpp | op_flip_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_flip | //! \addtogroup op_flip | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_hist_bones.hpp | op_hist_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_hist | //! \addtogroup op_hist | |||
//! @{ | //! @{ | |||
class op_hist | class op_hist | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_hist_meat.hpp | op_hist_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_hist | //! \addtogroup op_hist | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_htrans_bones.hpp | op_htrans_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_htrans | //! \addtogroup op_htrans | |||
//! @{ | //! @{ | |||
//! 'hermitian transpose' operation | //! 'hermitian transpose' operation | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_htrans_meat.hpp | op_htrans_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_htrans | //! \addtogroup op_htrans | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_inv_bones.hpp | op_inv_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_inv | //! \addtogroup op_inv | |||
//! @{ | //! @{ | |||
//! 'invert matrix' operation (general matrices) | //! 'invert matrix' operation (general matrices) | |||
class op_inv | class op_inv | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_inv_meat.hpp | op_inv_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_inv | //! \addtogroup op_inv | |||
//! @{ | //! @{ | |||
//! immediate inverse of a matrix, storing the result in a dense matrix | //! immediate inverse of a matrix, storing the result in a dense matrix | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_max_bones.hpp | op_max_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_max | //! \addtogroup op_max | |||
//! @{ | //! @{ | |||
//! Class for finding maximum values in a matrix | //! Class for finding maximum values in a matrix | |||
class op_max | class op_max | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_max_meat.hpp | op_max_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_max | //! \addtogroup op_max | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! For each row or for each column, find the maximum value. | //! For each row or for each column, find the maximum value. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_mean_bones.hpp | op_mean_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_mean | //! \addtogroup op_mean | |||
//! @{ | //! @{ | |||
//! Class for finding mean values of a matrix | //! Class for finding mean values of a matrix | |||
class op_mean | class op_mean | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_mean_meat.hpp | op_mean_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_mean | //! \addtogroup op_mean | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! For each row or for each column, find the mean value. | //! For each row or for each column, find the mean value. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_median_bones.hpp | op_median_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_median | //! \addtogroup op_median | |||
//! @{ | //! @{ | |||
template<typename T> | template<typename T> | |||
struct arma_cx_median_packet | struct arma_cx_median_packet | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_median_meat.hpp | op_median_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2013 Conrad Sanderson | // Copyright (C) 2009-2013 Conrad Sanderson | |||
// Copyright (C) 2009-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2013 Ruslan Shestopalyuk | // Copyright (C) 2013 Ruslan Shestopalyuk | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_median | //! \addtogroup op_median | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
skipping to change at line 130 | skipping to change at line 130 | |||
//! Implementation for complex numbers | //! Implementation for complex numbers | |||
template<typename T, typename T1> | template<typename T, typename T1> | |||
inline | inline | |||
void | void | |||
op_median::apply(Mat< std::complex<T> >& out, const Op<T1,op_median>& in) | op_median::apply(Mat< std::complex<T> >& out, const Op<T1,op_median>& in) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
typedef typename std::complex<T> eT; | typedef typename std::complex<T> eT; | |||
arma_type_check(( is_same_type<eT, typename T1::elem_type>::value == fals e )); | arma_type_check(( is_same_type<eT, typename T1::elem_type>::no )); | |||
const unwrap_check<T1> tmp(in.m, out); | const unwrap_check<T1> tmp(in.m, out); | |||
const Mat<eT>& X = tmp.M; | const Mat<eT>& X = tmp.M; | |||
const uword X_n_rows = X.n_rows; | const uword X_n_rows = X.n_rows; | |||
const uword X_n_cols = X.n_cols; | const uword X_n_cols = X.n_cols; | |||
const uword dim = in.aux_uword_a; | const uword dim = in.aux_uword_a; | |||
arma_debug_check( (dim > 1), "median(): incorrect usage. dim must be 0 or 1"); | arma_debug_check( (dim > 1), "median(): incorrect usage. dim must be 0 or 1"); | |||
End of changes. 3 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
op_min_bones.hpp | op_min_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_min | //! \addtogroup op_min | |||
//! @{ | //! @{ | |||
//! Class for finding minimum values in a matrix | //! Class for finding minimum values in a matrix | |||
class op_min | class op_min | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_min_meat.hpp | op_min_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_min | //! \addtogroup op_min | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! For each row or for each column, find the minimum value. | //! For each row or for each column, find the minimum value. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_misc_bones.hpp | op_misc_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_misc | //! \addtogroup op_misc | |||
//! @{ | //! @{ | |||
class op_real | class op_real | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_misc_meat.hpp | op_misc_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_misc | //! \addtogroup op_misc | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_pinv_bones.hpp | op_pinv_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_pinv | //! \addtogroup op_pinv | |||
//! @{ | //! @{ | |||
class op_pinv | class op_pinv | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_pinv_meat.hpp | op_pinv_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// Copyright (C) 2011 Stanislav Funiak | // Copyright (C) 2011 Stanislav Funiak | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_pinv | //! \addtogroup op_pinv | |||
//! @{ | //! @{ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_princomp_bones.hpp | op_princomp_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Dimitrios Bouzas | // Copyright (C) 2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_princomp | //! \addtogroup op_princomp | |||
//! @{ | //! @{ | |||
class op_princomp | class op_princomp | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_princomp_meat.hpp | op_princomp_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Dimitrios Bouzas | // Copyright (C) 2010 Dimitrios Bouzas | |||
// Copyright (C) 2011 Stanislav Funiak | // Copyright (C) 2011 Stanislav Funiak | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_princomp | //! \addtogroup op_princomp | |||
//! @{ | //! @{ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_prod_bones.hpp | op_prod_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_prod | //! \addtogroup op_prod | |||
//! @{ | //! @{ | |||
//! Class for finding products of values in a matrix (e.g. along rows or c olumns) | //! Class for finding products of values in a matrix (e.g. along rows or c olumns) | |||
class op_prod | class op_prod | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_prod_meat.hpp | op_prod_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_prod | //! \addtogroup op_prod | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! Immediate product of elements of a matrix along a specified dimension ( either rows or columns). | //! Immediate product of elements of a matrix along a specified dimension ( either rows or columns). | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_relational_bones.hpp | op_relational_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_relational | //! \addtogroup op_relational | |||
//! @{ | //! @{ | |||
class op_rel_lt_pre | class op_rel_lt_pre | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_relational_meat.hpp | op_relational_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_relational | //! \addtogroup op_relational | |||
//! @{ | //! @{ | |||
#undef operator_rel | #undef operator_rel | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_repmat_bones.hpp | op_repmat_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_repmat | //! \addtogroup op_repmat | |||
//! @{ | //! @{ | |||
class op_repmat | class op_repmat | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_repmat_meat.hpp | op_repmat_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_repmat | //! \addtogroup op_repmat | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_reshape_bones.hpp | op_reshape_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_reshape | //! \addtogroup op_reshape | |||
//! @{ | //! @{ | |||
class op_reshape | class op_reshape | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_reshape_meat.hpp | op_reshape_meat.hpp | |||
---|---|---|---|---|
skipping to change at line 59 | skipping to change at line 59 | |||
const Mat<eT>& B = B_tmp.M; | const Mat<eT>& B = B_tmp.M; | |||
out.set_size(in_n_rows, in_n_cols); | out.set_size(in_n_rows, in_n_cols); | |||
eT* out_mem = out.memptr(); | eT* out_mem = out.memptr(); | |||
const uword B_n_rows = B.n_rows; | const uword B_n_rows = B.n_rows; | |||
const uword B_n_cols = B.n_cols; | const uword B_n_cols = B.n_cols; | |||
for(uword row=0; row<B_n_rows; ++row) | for(uword row=0; row<B_n_rows; ++row) | |||
for(uword col=0; col<B_n_cols; ++col) | ||||
{ | { | |||
*out_mem = B.at(row,col); | uword i,j; | |||
out_mem++; | for(i=0, j=1; j < B_n_cols; i+=2, j+=2) | |||
{ | ||||
const eT tmp_i = B.at(row,i); | ||||
const eT tmp_j = B.at(row,j); | ||||
*out_mem = tmp_i; out_mem++; | ||||
*out_mem = tmp_j; out_mem++; | ||||
} | ||||
if(i < B_n_cols) | ||||
{ | ||||
*out_mem = B.at(row,i); out_mem++; | ||||
} | ||||
} | } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
const unwrap_check< Mat<eT> > B_tmp(A, is_alias); | const unwrap_check< Mat<eT> > B_tmp(A, is_alias); | |||
const Mat<eT>& B = B_tmp.M; | const Mat<eT>& B = B_tmp.M; | |||
const uword n_elem_to_copy = (std::min)(B.n_elem, in_n_elem); | const uword n_elem_to_copy = (std::min)(B.n_elem, in_n_elem); | |||
End of changes. 2 change blocks. | ||||
3 lines changed or deleted | 14 lines changed or added | |||
op_resize_bones.hpp | op_resize_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Conrad Sanderson | // Copyright (C) 2011 Conrad Sanderson | |||
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_resize | //! \addtogroup op_resize | |||
//! @{ | //! @{ | |||
class op_resize | class op_resize | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_resize_meat.hpp | op_resize_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Conrad Sanderson | // Copyright (C) 2011 Conrad Sanderson | |||
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_resize | //! \addtogroup op_resize | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_shuffle_bones.hpp | op_shuffle_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_shuffle | //! \addtogroup op_shuffle | |||
//! @{ | //! @{ | |||
class op_shuffle | class op_shuffle | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_shuffle_meat.hpp | op_shuffle_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Dimitrios Bouzas | // Copyright (C) 2009-2010 Dimitrios Bouzas | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_shuffle | //! \addtogroup op_shuffle | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_sort_bones.hpp | op_sort_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_sort | //! \addtogroup op_sort | |||
//! @{ | //! @{ | |||
class op_sort | class op_sort | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_sort_meat.hpp | op_sort_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_sort | //! \addtogroup op_sort | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
class arma_ascend_sort_helper | class arma_ascend_sort_helper | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_stddev_bones.hpp | op_stddev_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_stddev | //! \addtogroup op_stddev | |||
//! @{ | //! @{ | |||
//! Class for finding the standard deviation | //! Class for finding the standard deviation | |||
class op_stddev | class op_stddev | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_stddev_meat.hpp | op_stddev_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_stddev | //! \addtogroup op_stddev | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! For each row or for each column, find the standard deviation. | //! For each row or for each column, find the standard deviation. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_strans_bones.hpp | op_strans_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_strans | //! \addtogroup op_strans | |||
//! @{ | //! @{ | |||
//! 'matrix transpose' operation (simple transpose, ie. without taking the conjugate of the elements) | //! 'matrix transpose' operation (simple transpose, ie. without taking the conjugate of the elements) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_strans_meat.hpp | op_strans_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_strans | //! \addtogroup op_strans | |||
//! @{ | //! @{ | |||
//! for tiny square matrices (size <= 4x4) | //! for tiny square matrices (size <= 4x4) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_sum_bones.hpp | op_sum_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_sum | //! \addtogroup op_sum | |||
//! @{ | //! @{ | |||
//! Class for finding sums of values in a matrix (e.g. along rows or colum ns) | //! Class for finding sums of values in a matrix (e.g. along rows or colum ns) | |||
class op_sum | class op_sum | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_sum_meat.hpp | op_sum_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_sum | //! \addtogroup op_sum | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! Immediate sum of elements of a matrix along a specified dimension (eith er rows or columns). | //! Immediate sum of elements of a matrix along a specified dimension (eith er rows or columns). | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_symmat_bones.hpp | op_symmat_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Conrad Sanderson | // Copyright (C) 2011 Conrad Sanderson | |||
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_symmat | //! \addtogroup op_symmat | |||
//! @{ | //! @{ | |||
class op_symmat | class op_symmat | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_symmat_meat.hpp | op_symmat_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011-2012 Conrad Sanderson | // Copyright (C) 2011-2012 Conrad Sanderson | |||
// Copyright (C) 2011-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_symmat | //! \addtogroup op_symmat | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_trimat_bones.hpp | op_trimat_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Ryan Curtin | // Copyright (C) 2011 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_trimat | //! \addtogroup op_trimat | |||
//! @{ | //! @{ | |||
class op_trimat | class op_trimat | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_trimat_meat.hpp | op_trimat_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Ryan Curtin | // Copyright (C) 2011 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_trimat | //! \addtogroup op_trimat | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_unique_bones.hpp | op_unique_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Arnold Wiliem | // Copyright (C) 2012 Arnold Wiliem | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_unique | //! \addtogroup op_unique | |||
//! @{ | //! @{ | |||
class op_unique | class op_unique | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_unique_meat.hpp | op_unique_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Arnold Wiliem | // Copyright (C) 2012 Arnold Wiliem | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_unique | //! \addtogroup op_unique | |||
//! @{ | //! @{ | |||
// TODO: add an efficient implementation for complex numbers | // TODO: add an efficient implementation for complex numbers | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_var_bones.hpp | op_var_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_var | //! \addtogroup op_var | |||
//! @{ | //! @{ | |||
//! Class for finding variance values of a matrix | //! Class for finding variance values of a matrix | |||
class op_var | class op_var | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
op_var_meat.hpp | op_var_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup op_var | //! \addtogroup op_var | |||
//! @{ | //! @{ | |||
//! \brief | //! \brief | |||
//! For each row or for each column, find the variance. | //! For each row or for each column, find the variance. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
operator_cube_div.hpp | operator_cube_div.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_cube_div | //! \addtogroup operator_cube_div | |||
//! @{ | //! @{ | |||
//! BaseCube / scalar | //! BaseCube / scalar | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
operator_cube_minus.hpp | operator_cube_minus.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_cube_minus | //! \addtogroup operator_cube_minus | |||
//! @{ | //! @{ | |||
//! unary - | //! unary - | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
operator_cube_plus.hpp | operator_cube_plus.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_cube_plus | //! \addtogroup operator_cube_plus | |||
//! @{ | //! @{ | |||
//! unary plus operation (does nothing, but is required for completeness) | //! unary plus operation (does nothing, but is required for completeness) | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
operator_cube_relational.hpp | operator_cube_relational.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_cube_relational | //! \addtogroup operator_cube_relational | |||
//! @{ | //! @{ | |||
// < : lt | // < : lt | |||
// > : gt | // > : gt | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
operator_cube_schur.hpp | operator_cube_schur.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_cube_schur | //! \addtogroup operator_cube_schur | |||
//! @{ | //! @{ | |||
// operator %, which we define it to do a schur product (element-wise multi plication) | // operator %, which we define it to do a schur product (element-wise multi plication) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
operator_cube_times.hpp | operator_cube_times.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_cube_times | //! \addtogroup operator_cube_times | |||
//! @{ | //! @{ | |||
//! BaseCube * scalar | //! BaseCube * scalar | |||
template<typename T1> | template<typename T1> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
operator_div.hpp | operator_div.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_div | //! \addtogroup operator_div | |||
//! @{ | //! @{ | |||
//! Base / scalar | //! Base / scalar | |||
skipping to change at line 50 | skipping to change at line 50 | |||
return eOp<T1, eop_scalar_div_pre>(X, k); | return eOp<T1, eop_scalar_div_pre>(X, k); | |||
} | } | |||
//! complex scalar / non-complex Base | //! complex scalar / non-complex Base | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_complex<typename T1::elem_type>::value == false), | (is_arma_type<T1>::value && is_cx<typename T1::elem_type>::no), | |||
const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _div_pre> | const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _div_pre> | |||
>::result | >::result | |||
operator/ | operator/ | |||
( | ( | |||
const std::complex<typename T1::pod_type>& k, | const std::complex<typename T1::pod_type>& k, | |||
const T1& X | const T1& X | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scala r_div_pre>('j', X, k); | return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scala r_div_pre>('j', X, k); | |||
} | } | |||
//! non-complex Base / complex scalar | //! non-complex Base / complex scalar | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_complex<typename T1::elem_type>::value == false), | (is_arma_type<T1>::value && is_cx<typename T1::elem_type>::no), | |||
const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _div_post> | const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _div_post> | |||
>::result | >::result | |||
operator/ | operator/ | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const std::complex<typename T1::pod_type>& k | const std::complex<typename T1::pod_type>& k | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
skipping to change at line 110 | skipping to change at line 110 | |||
return eGlue<T1, T2, eglue_div>(X, Y); | return eGlue<T1, T2, eglue_div>(X, Y); | |||
} | } | |||
//! element-wise division of Base objects with different element types | //! element-wise division of Base objects with different element types | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::value == false)), | (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::no)), | |||
const mtGlue<typename promote_type<typename T1::elem_type, typename T2::e lem_type>::result, T1, T2, glue_mixed_div> | const mtGlue<typename promote_type<typename T1::elem_type, typename T2::e lem_type>::result, T1, T2, glue_mixed_div> | |||
>::result | >::result | |||
operator/ | operator/ | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const T2& Y | const T2& Y | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
End of changes. 5 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added | |||
operator_minus.hpp | operator_minus.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_minus | //! \addtogroup operator_minus | |||
//! @{ | //! @{ | |||
//! unary - | //! unary - | |||
skipping to change at line 75 | skipping to change at line 75 | |||
return eOp<T1, eop_scalar_minus_pre>(X, k); | return eOp<T1, eop_scalar_minus_pre>(X, k); | |||
} | } | |||
//! complex scalar - non-complex Base | //! complex scalar - non-complex Base | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_complex<typename T1::elem_type>::value == false), | (is_arma_type<T1>::value && is_cx<typename T1::elem_type>::no), | |||
const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _minus_pre> | const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _minus_pre> | |||
>::result | >::result | |||
operator- | operator- | |||
( | ( | |||
const std::complex<typename T1::pod_type>& k, | const std::complex<typename T1::pod_type>& k, | |||
const T1& X | const T1& X | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scala r_minus_pre>('j', X, k); | return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scala r_minus_pre>('j', X, k); | |||
} | } | |||
//! non-complex Base - complex scalar | //! non-complex Base - complex scalar | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_complex<typename T1::elem_type>::value == false), | (is_arma_type<T1>::value && is_cx<typename T1::elem_type>::no), | |||
const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _minus_post> | const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _minus_post> | |||
>::result | >::result | |||
operator- | operator- | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const std::complex<typename T1::pod_type>& k | const std::complex<typename T1::pod_type>& k | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
skipping to change at line 135 | skipping to change at line 135 | |||
return eGlue<T1, T2, eglue_minus>(X, Y); | return eGlue<T1, T2, eglue_minus>(X, Y); | |||
} | } | |||
//! subtraction of Base objects with different element types | //! subtraction of Base objects with different element types | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::value == false)), | (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::no)), | |||
const mtGlue<typename promote_type<typename T1::elem_type, typename T2::e lem_type>::result, T1, T2, glue_mixed_minus> | const mtGlue<typename promote_type<typename T1::elem_type, typename T2::e lem_type>::result, T1, T2, glue_mixed_minus> | |||
>::result | >::result | |||
operator- | operator- | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const T2& Y | const T2& Y | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
End of changes. 5 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added | |||
operator_ostream.hpp | operator_ostream.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_ostream | //! \addtogroup operator_ostream | |||
//! @{ | //! @{ | |||
template<typename eT, typename T1> | template<typename eT, typename T1> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
operator_plus.hpp | operator_plus.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_plus | //! \addtogroup operator_plus | |||
//! @{ | //! @{ | |||
//! unary plus operation (does nothing, but is required for completeness) | //! unary plus operation (does nothing, but is required for completeness) | |||
skipping to change at line 54 | skipping to change at line 54 | |||
return eOp<T1, eop_scalar_plus>(X, k); // NOTE: order is swapped | return eOp<T1, eop_scalar_plus>(X, k); // NOTE: order is swapped | |||
} | } | |||
//! non-complex Base + complex scalar | //! non-complex Base + complex scalar | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_complex<typename T1::elem_type>::value == false), | (is_arma_type<T1>::value && is_cx<typename T1::elem_type>::no), | |||
const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _plus> | const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _plus> | |||
>::result | >::result | |||
operator+ | operator+ | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const std::complex<typename T1::pod_type>& k | const std::complex<typename T1::pod_type>& k | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scala r_plus>('j', X, k); | return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scala r_plus>('j', X, k); | |||
} | } | |||
//! complex scalar + non-complex Base | //! complex scalar + non-complex Base | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_complex<typename T1::elem_type>::value == false), | (is_arma_type<T1>::value && is_cx<typename T1::elem_type>::no), | |||
const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _plus> | const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _plus> | |||
>::result | >::result | |||
operator+ | operator+ | |||
( | ( | |||
const std::complex<typename T1::pod_type>& k, | const std::complex<typename T1::pod_type>& k, | |||
const T1& X | const T1& X | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
skipping to change at line 114 | skipping to change at line 114 | |||
return eGlue<T1, T2, eglue_plus>(X, Y); | return eGlue<T1, T2, eglue_plus>(X, Y); | |||
} | } | |||
//! addition of user-accessible Armadillo objects with different element ty pes | //! addition of user-accessible Armadillo objects with different element ty pes | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::value == false)), | (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::no)), | |||
const mtGlue<typename promote_type<typename T1::elem_type, typename T2::e lem_type>::result, T1, T2, glue_mixed_plus> | const mtGlue<typename promote_type<typename T1::elem_type, typename T2::e lem_type>::result, T1, T2, glue_mixed_plus> | |||
>::result | >::result | |||
operator+ | operator+ | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const T2& Y | const T2& Y | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
End of changes. 5 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added | |||
operator_relational.hpp | operator_relational.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2012 Conrad Sanderson | // Copyright (C) 2009-2012 Conrad Sanderson | |||
// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_relational | //! \addtogroup operator_relational | |||
//! @{ | //! @{ | |||
// < : lt | // < : lt | |||
// > : gt | // > : gt | |||
// <= : lteq | // <= : lteq | |||
// >= : gteq | // >= : gteq | |||
// == : eq | // == : eq | |||
// != : noteq | // != : noteq | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_arma_type<T2>::value && (is_complex<typena me T1::elem_type>::value == false) && (is_complex<typename T2::elem_type>:: value == false)), | (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_cx<typename T1 ::elem_type>::no) && (is_cx<typename T2::elem_type>::no)), | |||
const mtGlue<uword, T1, T2, glue_rel_lt> | const mtGlue<uword, T1, T2, glue_rel_lt> | |||
>::result | >::result | |||
operator< | operator< | |||
(const T1& X, const T2& Y) | (const T1& X, const T2& Y) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtGlue<uword, T1, T2, glue_rel_lt>( X, Y ); | return mtGlue<uword, T1, T2, glue_rel_lt>( X, Y ); | |||
} | } | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_arma_type<T2>::value && (is_complex<typena me T1::elem_type>::value == false) && (is_complex<typename T2::elem_type>:: value == false)), | (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_cx<typename T1 ::elem_type>::no) && (is_cx<typename T2::elem_type>::no)), | |||
const mtGlue<uword, T1, T2, glue_rel_gt> | const mtGlue<uword, T1, T2, glue_rel_gt> | |||
>::result | >::result | |||
operator> | operator> | |||
(const T1& X, const T2& Y) | (const T1& X, const T2& Y) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtGlue<uword, T1, T2, glue_rel_gt>( X, Y ); | return mtGlue<uword, T1, T2, glue_rel_gt>( X, Y ); | |||
} | } | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_arma_type<T2>::value && (is_complex<typena me T1::elem_type>::value == false) && (is_complex<typename T2::elem_type>:: value == false)), | (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_cx<typename T1 ::elem_type>::no) && (is_cx<typename T2::elem_type>::no)), | |||
const mtGlue<uword, T1, T2, glue_rel_lteq> | const mtGlue<uword, T1, T2, glue_rel_lteq> | |||
>::result | >::result | |||
operator<= | operator<= | |||
(const T1& X, const T2& Y) | (const T1& X, const T2& Y) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtGlue<uword, T1, T2, glue_rel_lteq>( X, Y ); | return mtGlue<uword, T1, T2, glue_rel_lteq>( X, Y ); | |||
} | } | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_arma_type<T2>::value && (is_complex<typena me T1::elem_type>::value == false) && (is_complex<typename T2::elem_type>:: value == false)), | (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_cx<typename T1 ::elem_type>::no) && (is_cx<typename T2::elem_type>::no)), | |||
const mtGlue<uword, T1, T2, glue_rel_gteq> | const mtGlue<uword, T1, T2, glue_rel_gteq> | |||
>::result | >::result | |||
operator>= | operator>= | |||
(const T1& X, const T2& Y) | (const T1& X, const T2& Y) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtGlue<uword, T1, T2, glue_rel_gteq>( X, Y ); | return mtGlue<uword, T1, T2, glue_rel_gteq>( X, Y ); | |||
} | } | |||
skipping to change at line 123 | skipping to change at line 123 | |||
// | // | |||
// | // | |||
// | // | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)), | (is_arma_type<T1>::value && (is_cx<typename T1::elem_type>::no)), | |||
const mtOp<uword, T1, op_rel_lt_pre> | const mtOp<uword, T1, op_rel_lt_pre> | |||
>::result | >::result | |||
operator< | operator< | |||
(const typename T1::elem_type val, const T1& X) | (const typename T1::elem_type val, const T1& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<uword, T1, op_rel_lt_pre>(X, val); | return mtOp<uword, T1, op_rel_lt_pre>(X, val); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)), | (is_arma_type<T1>::value && (is_cx<typename T1::elem_type>::no)), | |||
const mtOp<uword, T1, op_rel_lt_post> | const mtOp<uword, T1, op_rel_lt_post> | |||
>::result | >::result | |||
operator< | operator< | |||
(const T1& X, const typename T1::elem_type val) | (const T1& X, const typename T1::elem_type val) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<uword, T1, op_rel_lt_post>(X, val); | return mtOp<uword, T1, op_rel_lt_post>(X, val); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)), | (is_arma_type<T1>::value && (is_cx<typename T1::elem_type>::no)), | |||
const mtOp<uword, T1, op_rel_gt_pre> | const mtOp<uword, T1, op_rel_gt_pre> | |||
>::result | >::result | |||
operator> | operator> | |||
(const typename T1::elem_type val, const T1& X) | (const typename T1::elem_type val, const T1& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<uword, T1, op_rel_gt_pre>(X, val); | return mtOp<uword, T1, op_rel_gt_pre>(X, val); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)), | (is_arma_type<T1>::value && (is_cx<typename T1::elem_type>::no)), | |||
const mtOp<uword, T1, op_rel_gt_post> | const mtOp<uword, T1, op_rel_gt_post> | |||
>::result | >::result | |||
operator> | operator> | |||
(const T1& X, const typename T1::elem_type val) | (const T1& X, const typename T1::elem_type val) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<uword, T1, op_rel_gt_post>(X, val); | return mtOp<uword, T1, op_rel_gt_post>(X, val); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)), | (is_arma_type<T1>::value && (is_cx<typename T1::elem_type>::no)), | |||
const mtOp<uword, T1, op_rel_lteq_pre> | const mtOp<uword, T1, op_rel_lteq_pre> | |||
>::result | >::result | |||
operator<= | operator<= | |||
(const typename T1::elem_type val, const T1& X) | (const typename T1::elem_type val, const T1& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<uword, T1, op_rel_lteq_pre>(X, val); | return mtOp<uword, T1, op_rel_lteq_pre>(X, val); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)), | (is_arma_type<T1>::value && (is_cx<typename T1::elem_type>::no)), | |||
const mtOp<uword, T1, op_rel_lteq_post> | const mtOp<uword, T1, op_rel_lteq_post> | |||
>::result | >::result | |||
operator<= | operator<= | |||
(const T1& X, const typename T1::elem_type val) | (const T1& X, const typename T1::elem_type val) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<uword, T1, op_rel_lteq_post>(X, val); | return mtOp<uword, T1, op_rel_lteq_post>(X, val); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)), | (is_arma_type<T1>::value && (is_cx<typename T1::elem_type>::no)), | |||
const mtOp<uword, T1, op_rel_gteq_pre> | const mtOp<uword, T1, op_rel_gteq_pre> | |||
>::result | >::result | |||
operator>= | operator>= | |||
(const typename T1::elem_type val, const T1& X) | (const typename T1::elem_type val, const T1& X) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<uword, T1, op_rel_gteq_pre>(X, val); | return mtOp<uword, T1, op_rel_gteq_pre>(X, val); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)), | (is_arma_type<T1>::value && (is_cx<typename T1::elem_type>::no)), | |||
const mtOp<uword, T1, op_rel_gteq_post> | const mtOp<uword, T1, op_rel_gteq_post> | |||
>::result | >::result | |||
operator>= | operator>= | |||
(const T1& X, const typename T1::elem_type val) | (const T1& X, const typename T1::elem_type val) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<uword, T1, op_rel_gteq_post>(X, val); | return mtOp<uword, T1, op_rel_gteq_post>(X, val); | |||
} | } | |||
End of changes. 14 change blocks. | ||||
13 lines changed or deleted | 13 lines changed or added | |||
operator_schur.hpp | operator_schur.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_schur | //! \addtogroup operator_schur | |||
//! @{ | //! @{ | |||
// operator %, which we define it to do a schur product (element-wise multi plication) | // operator %, which we define it to do a schur product (element-wise multi plication) | |||
skipping to change at line 40 | skipping to change at line 40 | |||
return eGlue<T1, T2, eglue_schur>(X, Y); | return eGlue<T1, T2, eglue_schur>(X, Y); | |||
} | } | |||
//! element-wise multiplication of user-accessible Armadillo objects with d ifferent element types | //! element-wise multiplication of user-accessible Armadillo objects with d ifferent element types | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::value == false)), | (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::no)), | |||
const mtGlue<typename promote_type<typename T1::elem_type, typename T2::e lem_type>::result, T1, T2, glue_mixed_schur> | const mtGlue<typename promote_type<typename T1::elem_type, typename T2::e lem_type>::result, T1, T2, glue_mixed_schur> | |||
>::result | >::result | |||
operator% | operator% | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const T2& Y | const T2& Y | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
End of changes. 3 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
operator_times.hpp | operator_times.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Ryan Curtin | // Copyright (C) 2012 Ryan Curtin | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup operator_times | //! \addtogroup operator_times | |||
//! @{ | //! @{ | |||
//! Base * scalar | //! Base * scalar | |||
skipping to change at line 42 | skipping to change at line 42 | |||
return eOp<T1, eop_scalar_times>(X,k); // NOTE: order is swapped | return eOp<T1, eop_scalar_times>(X,k); // NOTE: order is swapped | |||
} | } | |||
//! non-complex Base * complex scalar | //! non-complex Base * complex scalar | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_complex<typename T1::elem_type>::value == false), | (is_arma_type<T1>::value && is_cx<typename T1::elem_type>::no), | |||
const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _times> | const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _times> | |||
>::result | >::result | |||
operator* | operator* | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const std::complex<typename T1::pod_type>& k | const std::complex<typename T1::pod_type>& k | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scala r_times>('j', X, k); | return mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scala r_times>('j', X, k); | |||
} | } | |||
//! complex scalar * non-complex Base | //! complex scalar * non-complex Base | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_complex<typename T1::elem_type>::value == false), | (is_arma_type<T1>::value && is_cx<typename T1::elem_type>::no), | |||
const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _times> | const mtOp<typename std::complex<typename T1::pod_type>, T1, op_cx_scalar _times> | |||
>::result | >::result | |||
operator* | operator* | |||
( | ( | |||
const std::complex<typename T1::pod_type>& k, | const std::complex<typename T1::pod_type>& k, | |||
const T1& X | const T1& X | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
skipping to change at line 192 | skipping to change at line 192 | |||
return Glue<T1, T2, glue_times>(X, Y); | return Glue<T1, T2, glue_times>(X, Y); | |||
} | } | |||
//! multiplication of Base objects with different element types | //! multiplication of Base objects with different element types | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
< | < | |||
(is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::value == false)), | (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_same_type<type name T1::elem_type, typename T2::elem_type>::no)), | |||
const mtGlue< typename promote_type<typename T1::elem_type, typename T2:: elem_type>::result, T1, T2, glue_mixed_times > | const mtGlue< typename promote_type<typename T1::elem_type, typename T2:: elem_type>::result, T1, T2, glue_mixed_times > | |||
>::result | >::result | |||
operator* | operator* | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const T2& Y | const T2& Y | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
End of changes. 5 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added | |||
podarray_bones.hpp | podarray_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup podarray | //! \addtogroup podarray | |||
//! @{ | //! @{ | |||
struct podarray_prealloc_n_elem | struct podarray_prealloc_n_elem | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
podarray_meat.hpp | podarray_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup podarray | //! \addtogroup podarray | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
arma_hot | arma_hot | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
promote_type.hpp | promote_type.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2013 Conrad Sanderson | // Copyright (C) 2009-2013 Conrad Sanderson | |||
// Copyright (C) 2009-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup promote_type | //! \addtogroup promote_type | |||
//! @{ | //! @{ | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
struct is_promotable | struct is_promotable | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
restrictors.hpp | restrictors.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup restrictors | //! \addtogroup restrictors | |||
//! @{ | //! @{ | |||
// structures for template based restrictions of input/output arguments | // structures for template based restrictions of input/output arguments | |||
// (part of the SFINAE approach) | // (part of the SFINAE approach) | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
running_stat_bones.hpp | running_stat_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup running_stat | //! \addtogroup running_stat | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
class arma_counter | class arma_counter | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
running_stat_meat.hpp | running_stat_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup running_stat | //! \addtogroup running_stat | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
skipping to change at line 145 | skipping to change at line 145 | |||
} | } | |||
//! update statistics to reflect new sample (version for complex numbers) | //! update statistics to reflect new sample (version for complex numbers) | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
void | void | |||
running_stat<eT>::operator() (const std::complex< typename running_stat<eT> ::T >& sample) | running_stat<eT>::operator() (const std::complex< typename running_stat<eT> ::T >& sample) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_same_type<eT, std::complex< typename running_stat<eT >::T > >::value == false )); | arma_type_check(( is_same_type<eT, std::complex< typename running_stat<eT >::T > >::no )); | |||
if( arma_isfinite(sample) == false ) | if( arma_isfinite(sample) == false ) | |||
{ | { | |||
arma_warn(true, "running_stat: sample ignored as it is non-finite" ); | arma_warn(true, "running_stat: sample ignored as it is non-finite" ); | |||
return; | return; | |||
} | } | |||
running_stat_aux::update_stats(*this, sample); | running_stat_aux::update_stats(*this, sample); | |||
} | } | |||
End of changes. 3 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
running_stat_vec_bones.hpp | running_stat_vec_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup running_stat_vec | //! \addtogroup running_stat_vec | |||
//! @{ | //! @{ | |||
//! Class for keeping statistics of a continuously sampled process / signal . | //! Class for keeping statistics of a continuously sampled process / signal . | |||
//! Useful if the storage of individual samples is not necessary or desired . | //! Useful if the storage of individual samples is not necessary or desired . | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
running_stat_vec_meat.hpp | running_stat_vec_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2011 Conrad Sanderson | // Copyright (C) 2009-2011 Conrad Sanderson | |||
// Copyright (C) 2009-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup running_stat_vec | //! \addtogroup running_stat_vec | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
running_stat_vec<eT>::~running_stat_vec() | running_stat_vec<eT>::~running_stat_vec() | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
span.hpp | span.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Stanislav Funiak | // Copyright (C) 2011 Stanislav Funiak | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup span | //! \addtogroup span | |||
//! @{ | //! @{ | |||
struct span_alt {}; | struct span_alt {}; | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
strip.hpp | strip.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup strip | //! \addtogroup strip | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
struct strip_diagmat | struct strip_diagmat | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
subview_bones.hpp | subview_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 James Sanders | // Copyright (C) 2011 James Sanders | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview | //! \addtogroup subview | |||
//! @{ | //! @{ | |||
//! Class for storing data required to construct or apply operations to a s ubmatrix | //! Class for storing data required to construct or apply operations to a s ubmatrix | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
subview_cube_bones.hpp | subview_cube_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview_cube | //! \addtogroup subview_cube | |||
//! @{ | //! @{ | |||
//! Class for storing data required to construct or apply operations to a s ubcube | //! Class for storing data required to construct or apply operations to a s ubcube | |||
//! (i.e. where the subcube starts and ends as well as a reference/pointer to the original cube), | //! (i.e. where the subcube starts and ends as well as a reference/pointer to the original cube), | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
subview_cube_meat.hpp | subview_cube_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview_cube | //! \addtogroup subview_cube | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
subview_elem1_bones.hpp | subview_elem1_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2012 Conrad Sanderson | // Copyright (C) 2010-2012 Conrad Sanderson | |||
// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview_elem1 | //! \addtogroup subview_elem1 | |||
//! @{ | //! @{ | |||
template<typename eT, typename T1> | template<typename eT, typename T1> | |||
class subview_elem1 : public Base<eT, subview_elem1<eT,T1> > | class subview_elem1 : public Base<eT, subview_elem1<eT,T1> > | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
subview_elem1_meat.hpp | subview_elem1_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010-2013 Conrad Sanderson | // Copyright (C) 2010-2013 Conrad Sanderson | |||
// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview_elem1 | //! \addtogroup subview_elem1 | |||
//! @{ | //! @{ | |||
template<typename eT, typename T1> | template<typename eT, typename T1> | |||
inline | inline | |||
skipping to change at line 60 | skipping to change at line 60 | |||
const uword aa_n_elem = aa.n_elem; | const uword aa_n_elem = aa.n_elem; | |||
uword iq,jq; | uword iq,jq; | |||
for(iq=0, jq=1; jq < aa_n_elem; iq+=2, jq+=2) | for(iq=0, jq=1; jq < aa_n_elem; iq+=2, jq+=2) | |||
{ | { | |||
const uword ii = aa_mem[iq]; | const uword ii = aa_mem[iq]; | |||
const uword jj = aa_mem[jq]; | const uword jj = aa_mem[jq]; | |||
arma_debug_check( ( (ii >= m_n_elem) || (jj >= m_n_elem) ), "Mat::elem( ): index out of bounds" ); | arma_debug_check( ( (ii >= m_n_elem) || (jj >= m_n_elem) ), "Mat::elem( ): index out of bounds" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value == | if(is_same_type<op_type, op_subview_elem_equ >::yes) { m_ | |||
true) { m_mem[ii] = val; m_mem[jj] = val; } | mem[ii] = val; m_mem[jj] = val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value == | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { m_ | |||
true) { m_mem[ii] += val; m_mem[jj] += val; } | mem[ii] += val; m_mem[jj] += val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { m_ | |||
true) { m_mem[ii] -= val; m_mem[jj] -= val; } | mem[ii] -= val; m_mem[jj] -= val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { m_ | |||
true) { m_mem[ii] *= val; m_mem[jj] *= val; } | mem[ii] *= val; m_mem[jj] *= val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value == | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { m_ | |||
true) { m_mem[ii] /= val; m_mem[jj] /= val; } | mem[ii] /= val; m_mem[jj] /= val; } | |||
} | } | |||
if(iq < aa_n_elem) | if(iq < aa_n_elem) | |||
{ | { | |||
const uword ii = aa_mem[iq]; | const uword ii = aa_mem[iq]; | |||
arma_debug_check( (ii >= m_n_elem) , "Mat::elem(): index out of bounds" ); | arma_debug_check( (ii >= m_n_elem) , "Mat::elem(): index out of bounds" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value == | if(is_same_type<op_type, op_subview_elem_equ >::yes) { m_ | |||
true) { m_mem[ii] = val; } | mem[ii] = val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value == | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { m_ | |||
true) { m_mem[ii] += val; } | mem[ii] += val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { m_ | |||
true) { m_mem[ii] -= val; } | mem[ii] -= val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { m_ | |||
true) { m_mem[ii] *= val; } | mem[ii] *= val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value == | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { m_ | |||
true) { m_mem[ii] /= val; } | mem[ii] /= val; } | |||
} | } | |||
} | } | |||
template<typename eT, typename T1> | template<typename eT, typename T1> | |||
template<typename op_type, typename T2> | template<typename op_type, typename T2> | |||
inline | inline | |||
void | void | |||
subview_elem1<eT,T1>::inplace_op(const subview_elem1<eT,T2>& x) | subview_elem1<eT,T1>::inplace_op(const subview_elem1<eT,T2>& x) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
subview_elem1<eT,T1>& s = *this; | subview_elem1<eT,T1>& s = *this; | |||
if(&(s.m) == &(x.m)) | if(&(s.m) == &(x.m)) | |||
{ | { | |||
arma_extra_debug_print("subview_elem1::inplace_op(): aliasing detected" ); | arma_extra_debug_print("subview_elem1::inplace_op(): aliasing detected" ); | |||
const Mat<eT> tmp(x); | const Mat<eT> tmp(x); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value == | if(is_same_type<op_type, op_subview_elem_equ >::yes) { s. | |||
true) { s.operator= (tmp); } | operator= (tmp); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value == | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { s. | |||
true) { s.operator+=(tmp); } | operator+=(tmp); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { s. | |||
true) { s.operator-=(tmp); } | operator-=(tmp); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { s. | |||
true) { s.operator%=(tmp); } | operator%=(tmp); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value == | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { s. | |||
true) { s.operator/=(tmp); } | operator/=(tmp); } | |||
} | } | |||
else | else | |||
{ | { | |||
Mat<eT>& s_m_local = const_cast< Mat<eT>& >(s.m); | Mat<eT>& s_m_local = const_cast< Mat<eT>& >(s.m); | |||
const Mat<eT>& x_m_local = x.m; | const Mat<eT>& x_m_local = x.m; | |||
const unwrap_check_mixed<T1> s_tmp(s.a.get_ref(), s_m_local); | const unwrap_check_mixed<T1> s_tmp(s.a.get_ref(), s_m_local); | |||
const unwrap_check_mixed<T2> x_tmp(x.a.get_ref(), s_m_local); | const unwrap_check_mixed<T2> x_tmp(x.a.get_ref(), s_m_local); | |||
const umat& s_aa = s_tmp.M; | const umat& s_aa = s_tmp.M; | |||
skipping to change at line 148 | skipping to change at line 148 | |||
const uword x_ii = x_aa_mem[iq]; | const uword x_ii = x_aa_mem[iq]; | |||
const uword x_jj = x_aa_mem[jq]; | const uword x_jj = x_aa_mem[jq]; | |||
arma_debug_check | arma_debug_check | |||
( | ( | |||
(s_ii >= s_m_n_elem) || (s_jj >= s_m_n_elem) || (x_ii >= x_m_n_elem ) || (x_jj >= x_m_n_elem), | (s_ii >= s_m_n_elem) || (s_jj >= s_m_n_elem) || (x_ii >= x_m_n_elem ) || (x_jj >= x_m_n_elem), | |||
"Mat::elem(): index out of bounds" | "Mat::elem(): index out of bounds" | |||
); | ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value = | if(is_same_type<op_type, op_subview_elem_equ >::yes) { | |||
= true) { s_m_mem[s_ii] = x_m_mem[x_ii]; s_m_mem[s_jj] = x_m_mem[x_jj]; } | s_m_mem[s_ii] = x_m_mem[x_ii]; s_m_mem[s_jj] = x_m_mem[x_jj]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { | |||
= true) { s_m_mem[s_ii] += x_m_mem[x_ii]; s_m_mem[s_jj] += x_m_mem[x_jj]; } | s_m_mem[s_ii] += x_m_mem[x_ii]; s_m_mem[s_jj] += x_m_mem[x_jj]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { | |||
= true) { s_m_mem[s_ii] -= x_m_mem[x_ii]; s_m_mem[s_jj] -= x_m_mem[x_jj]; } | s_m_mem[s_ii] -= x_m_mem[x_ii]; s_m_mem[s_jj] -= x_m_mem[x_jj]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { | |||
= true) { s_m_mem[s_ii] *= x_m_mem[x_ii]; s_m_mem[s_jj] *= x_m_mem[x_jj]; } | s_m_mem[s_ii] *= x_m_mem[x_ii]; s_m_mem[s_jj] *= x_m_mem[x_jj]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { | |||
= true) { s_m_mem[s_ii] /= x_m_mem[x_ii]; s_m_mem[s_jj] /= x_m_mem[x_jj]; } | s_m_mem[s_ii] /= x_m_mem[x_ii]; s_m_mem[s_jj] /= x_m_mem[x_jj]; } | |||
} | } | |||
if(iq < s_aa_n_elem) | if(iq < s_aa_n_elem) | |||
{ | { | |||
const uword s_ii = s_aa_mem[iq]; | const uword s_ii = s_aa_mem[iq]; | |||
const uword x_ii = x_aa_mem[iq]; | const uword x_ii = x_aa_mem[iq]; | |||
arma_debug_check | arma_debug_check | |||
( | ( | |||
( (s_ii >= s_m_n_elem) || (x_ii >= x_m_n_elem) ), | ( (s_ii >= s_m_n_elem) || (x_ii >= x_m_n_elem) ), | |||
"Mat::elem(): index out of bounds" | "Mat::elem(): index out of bounds" | |||
); | ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value = | if(is_same_type<op_type, op_subview_elem_equ >::yes) { | |||
= true) { s_m_mem[s_ii] = x_m_mem[x_ii]; } | s_m_mem[s_ii] = x_m_mem[x_ii]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { | |||
= true) { s_m_mem[s_ii] += x_m_mem[x_ii]; } | s_m_mem[s_ii] += x_m_mem[x_ii]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { | |||
= true) { s_m_mem[s_ii] -= x_m_mem[x_ii]; } | s_m_mem[s_ii] -= x_m_mem[x_ii]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { | |||
= true) { s_m_mem[s_ii] *= x_m_mem[x_ii]; } | s_m_mem[s_ii] *= x_m_mem[x_ii]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { | |||
= true) { s_m_mem[s_ii] /= x_m_mem[x_ii]; } | s_m_mem[s_ii] /= x_m_mem[x_ii]; } | |||
} | } | |||
} | } | |||
} | } | |||
template<typename eT, typename T1> | template<typename eT, typename T1> | |||
template<typename op_type, typename T2> | template<typename op_type, typename T2> | |||
inline | inline | |||
void | void | |||
subview_elem1<eT,T1>::inplace_op(const Base<eT,T2>& x) | subview_elem1<eT,T1>::inplace_op(const Base<eT,T2>& x) | |||
{ | { | |||
skipping to change at line 218 | skipping to change at line 218 | |||
typename Proxy<T2>::ea_type X = P.get_ea(); | typename Proxy<T2>::ea_type X = P.get_ea(); | |||
uword iq,jq; | uword iq,jq; | |||
for(iq=0, jq=1; jq < aa_n_elem; iq+=2, jq+=2) | for(iq=0, jq=1; jq < aa_n_elem; iq+=2, jq+=2) | |||
{ | { | |||
const uword ii = aa_mem[iq]; | const uword ii = aa_mem[iq]; | |||
const uword jj = aa_mem[jq]; | const uword jj = aa_mem[jq]; | |||
arma_debug_check( ( (ii >= m_n_elem) || (jj >= m_n_elem) ), "Mat::ele m(): index out of bounds" ); | arma_debug_check( ( (ii >= m_n_elem) || (jj >= m_n_elem) ), "Mat::ele m(): index out of bounds" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value = | if(is_same_type<op_type, op_subview_elem_equ >::yes) { | |||
= true) { m_mem[ii] = X[iq]; m_mem[jj] = X[jq]; } | m_mem[ii] = X[iq]; m_mem[jj] = X[jq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { | |||
= true) { m_mem[ii] += X[iq]; m_mem[jj] += X[jq]; } | m_mem[ii] += X[iq]; m_mem[jj] += X[jq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { | |||
= true) { m_mem[ii] -= X[iq]; m_mem[jj] -= X[jq]; } | m_mem[ii] -= X[iq]; m_mem[jj] -= X[jq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { | |||
= true) { m_mem[ii] *= X[iq]; m_mem[jj] *= X[jq]; } | m_mem[ii] *= X[iq]; m_mem[jj] *= X[jq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { | |||
= true) { m_mem[ii] /= X[iq]; m_mem[jj] /= X[jq]; } | m_mem[ii] /= X[iq]; m_mem[jj] /= X[jq]; } | |||
} | } | |||
if(iq < aa_n_elem) | if(iq < aa_n_elem) | |||
{ | { | |||
const uword ii = aa_mem[iq]; | const uword ii = aa_mem[iq]; | |||
arma_debug_check( (ii >= m_n_elem) , "Mat::elem(): index out of bound s" ); | arma_debug_check( (ii >= m_n_elem) , "Mat::elem(): index out of bound s" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value = | if(is_same_type<op_type, op_subview_elem_equ >::yes) { | |||
= true) { m_mem[ii] = X[iq]; } | m_mem[ii] = X[iq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { | |||
= true) { m_mem[ii] += X[iq]; } | m_mem[ii] += X[iq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { | |||
= true) { m_mem[ii] -= X[iq]; } | m_mem[ii] -= X[iq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { | |||
= true) { m_mem[ii] *= X[iq]; } | m_mem[ii] *= X[iq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { | |||
= true) { m_mem[ii] /= X[iq]; } | m_mem[ii] /= X[iq]; } | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
arma_extra_debug_print("subview_elem1::inplace_op(): aliasing or prefer _at_accessor detected"); | arma_extra_debug_print("subview_elem1::inplace_op(): aliasing or prefer _at_accessor detected"); | |||
const unwrap_check<typename Proxy<T2>::stored_type> tmp(P.Q, is_alias); | const unwrap_check<typename Proxy<T2>::stored_type> tmp(P.Q, is_alias); | |||
const Mat<eT>& M = tmp.M; | const Mat<eT>& M = tmp.M; | |||
const eT* X = M.memptr(); | const eT* X = M.memptr(); | |||
uword iq,jq; | uword iq,jq; | |||
for(iq=0, jq=1; jq < aa_n_elem; iq+=2, jq+=2) | for(iq=0, jq=1; jq < aa_n_elem; iq+=2, jq+=2) | |||
{ | { | |||
const uword ii = aa_mem[iq]; | const uword ii = aa_mem[iq]; | |||
const uword jj = aa_mem[jq]; | const uword jj = aa_mem[jq]; | |||
arma_debug_check( ( (ii >= m_n_elem) || (jj >= m_n_elem) ), "Mat::ele m(): index out of bounds" ); | arma_debug_check( ( (ii >= m_n_elem) || (jj >= m_n_elem) ), "Mat::ele m(): index out of bounds" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value = | if(is_same_type<op_type, op_subview_elem_equ >::yes) { | |||
= true) { m_mem[ii] = X[iq]; m_mem[jj] = X[jq]; } | m_mem[ii] = X[iq]; m_mem[jj] = X[jq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { | |||
= true) { m_mem[ii] += X[iq]; m_mem[jj] += X[jq]; } | m_mem[ii] += X[iq]; m_mem[jj] += X[jq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { | |||
= true) { m_mem[ii] -= X[iq]; m_mem[jj] -= X[jq]; } | m_mem[ii] -= X[iq]; m_mem[jj] -= X[jq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { | |||
= true) { m_mem[ii] *= X[iq]; m_mem[jj] *= X[jq]; } | m_mem[ii] *= X[iq]; m_mem[jj] *= X[jq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { | |||
= true) { m_mem[ii] /= X[iq]; m_mem[jj] /= X[jq]; } | m_mem[ii] /= X[iq]; m_mem[jj] /= X[jq]; } | |||
} | } | |||
if(iq < aa_n_elem) | if(iq < aa_n_elem) | |||
{ | { | |||
const uword ii = aa_mem[iq]; | const uword ii = aa_mem[iq]; | |||
arma_debug_check( (ii >= m_n_elem) , "Mat::elem(): index out of bound s" ); | arma_debug_check( (ii >= m_n_elem) , "Mat::elem(): index out of bound s" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value = | if(is_same_type<op_type, op_subview_elem_equ >::yes) { | |||
= true) { m_mem[ii] = X[iq]; } | m_mem[ii] = X[iq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { | |||
= true) { m_mem[ii] += X[iq]; } | m_mem[ii] += X[iq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { | |||
= true) { m_mem[ii] -= X[iq]; } | m_mem[ii] -= X[iq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { | |||
= true) { m_mem[ii] *= X[iq]; } | m_mem[ii] *= X[iq]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { | |||
= true) { m_mem[ii] /= X[iq]; } | m_mem[ii] /= X[iq]; } | |||
} | } | |||
} | } | |||
} | } | |||
// | // | |||
// | // | |||
template<typename eT, typename T1> | template<typename eT, typename T1> | |||
arma_inline | arma_inline | |||
const Op<subview_elem1<eT,T1>,op_htrans> | const Op<subview_elem1<eT,T1>,op_htrans> | |||
skipping to change at line 613 | skipping to change at line 613 | |||
eT* out_mem = out.memptr(); | eT* out_mem = out.memptr(); | |||
uword i,j; | uword i,j; | |||
for(i=0, j=1; j<aa_n_elem; i+=2, j+=2) | for(i=0, j=1; j<aa_n_elem; i+=2, j+=2) | |||
{ | { | |||
const uword ii = aa_mem[i]; | const uword ii = aa_mem[i]; | |||
const uword jj = aa_mem[j]; | const uword jj = aa_mem[j]; | |||
arma_debug_check( ( (ii >= m_n_elem) || (jj >= m_n_elem) ), "Mat::elem( ): index out of bounds" ); | arma_debug_check( ( (ii >= m_n_elem) || (jj >= m_n_elem) ), "Mat::elem( ): index out of bounds" ); | |||
if(is_same_type<op_type, op_subview_elem_inplace_plus >::value == | if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { ou | |||
true) { out_mem[i] += m_mem[ii]; out_mem[j] += m_mem[jj]; } | t_mem[i] += m_mem[ii]; out_mem[j] += m_mem[jj]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { ou | |||
true) { out_mem[i] -= m_mem[ii]; out_mem[j] -= m_mem[jj]; } | t_mem[i] -= m_mem[ii]; out_mem[j] -= m_mem[jj]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { ou | |||
true) { out_mem[i] *= m_mem[ii]; out_mem[j] *= m_mem[jj]; } | t_mem[i] *= m_mem[ii]; out_mem[j] *= m_mem[jj]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value == | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { ou | |||
true) { out_mem[i] /= m_mem[ii]; out_mem[j] /= m_mem[jj]; } | t_mem[i] /= m_mem[ii]; out_mem[j] /= m_mem[jj]; } | |||
} | } | |||
if(i < aa_n_elem) | if(i < aa_n_elem) | |||
{ | { | |||
const uword ii = aa_mem[i]; | const uword ii = aa_mem[i]; | |||
arma_debug_check( (ii >= m_n_elem) , "Mat::elem(): index out of bounds" ); | arma_debug_check( (ii >= m_n_elem) , "Mat::elem(): index out of bounds" ); | |||
if(is_same_type<op_type, op_subview_elem_inplace_plus >::value == | if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { ou | |||
true) { out_mem[i] += m_mem[ii]; } | t_mem[i] += m_mem[ii]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { ou | |||
true) { out_mem[i] -= m_mem[ii]; } | t_mem[i] -= m_mem[ii]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value == | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { ou | |||
true) { out_mem[i] *= m_mem[ii]; } | t_mem[i] *= m_mem[ii]; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value == | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { ou | |||
true) { out_mem[i] /= m_mem[ii]; } | t_mem[i] /= m_mem[ii]; } | |||
} | } | |||
} | } | |||
template<typename eT, typename T1> | template<typename eT, typename T1> | |||
inline | inline | |||
void | void | |||
subview_elem1<eT,T1>::plus_inplace(Mat<eT>& out, const subview_elem1& in) | subview_elem1<eT,T1>::plus_inplace(Mat<eT>& out, const subview_elem1& in) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
End of changes. 13 change blocks. | ||||
107 lines changed or deleted | 107 lines changed or added | |||
subview_elem2_bones.hpp | subview_elem2_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview_elem2 | //! \addtogroup subview_elem2 | |||
//! @{ | //! @{ | |||
template<typename eT, typename T1, typename T2> | template<typename eT, typename T1, typename T2> | |||
class subview_elem2 : public Base<eT, subview_elem2<eT,T1,T2> > | class subview_elem2 : public Base<eT, subview_elem2<eT,T1,T2> > | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
subview_elem2_meat.hpp | subview_elem2_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012-2013 Conrad Sanderson | // Copyright (C) 2012-2013 Conrad Sanderson | |||
// Copyright (C) 2012-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview_elem2 | //! \addtogroup subview_elem2 | |||
//! @{ | //! @{ | |||
template<typename eT, typename T1, typename T2> | template<typename eT, typename T1, typename T2> | |||
inline | inline | |||
skipping to change at line 82 | skipping to change at line 82 | |||
const uword col = ci_mem[ci_count]; | const uword col = ci_mem[ci_count]; | |||
arma_debug_check( (col > m_n_cols), "Mat::elem(): index out of bounds " ); | arma_debug_check( (col > m_n_cols), "Mat::elem(): index out of bounds " ); | |||
for(uword ri_count=0; ri_count < ri_n_elem; ++ri_count) | for(uword ri_count=0; ri_count < ri_n_elem; ++ri_count) | |||
{ | { | |||
const uword row = ri_mem[ri_count]; | const uword row = ri_mem[ri_count]; | |||
arma_debug_check( (row > m_n_rows), "Mat::elem(): index out of boun ds" ); | arma_debug_check( (row > m_n_rows), "Mat::elem(): index out of boun ds" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value | if(is_same_type<op_type, op_subview_elem_equ >::yes) | |||
== true) { m_local.at(row,col) = val; } | { m_local.at(row,col) = val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) | |||
== true) { m_local.at(row,col) += val; } | { m_local.at(row,col) += val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) | |||
== true) { m_local.at(row,col) -= val; } | { m_local.at(row,col) -= val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) | |||
== true) { m_local.at(row,col) *= val; } | { m_local.at(row,col) *= val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) | |||
== true) { m_local.at(row,col) /= val; } | { m_local.at(row,col) /= val; } | |||
} | } | |||
} | } | |||
} | } | |||
else | else | |||
if( (all_rows == true) && (all_cols == false) ) | if( (all_rows == true) && (all_cols == false) ) | |||
{ | { | |||
const unwrap_check_mixed<T2> tmp2(base_ci.get_ref(), m_local); | const unwrap_check_mixed<T2> tmp2(base_ci.get_ref(), m_local); | |||
const umat& ci = tmp2.M; | const umat& ci = tmp2.M; | |||
skipping to change at line 114 | skipping to change at line 114 | |||
const uword ci_n_elem = ci.n_elem; | const uword ci_n_elem = ci.n_elem; | |||
for(uword ci_count=0; ci_count < ci_n_elem; ++ci_count) | for(uword ci_count=0; ci_count < ci_n_elem; ++ci_count) | |||
{ | { | |||
const uword col = ci_mem[ci_count]; | const uword col = ci_mem[ci_count]; | |||
arma_debug_check( (col > m_n_cols), "Mat::elem(): index out of bounds " ); | arma_debug_check( (col > m_n_cols), "Mat::elem(): index out of bounds " ); | |||
eT* colptr = m_local.colptr(col); | eT* colptr = m_local.colptr(col); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value = | if(is_same_type<op_type, op_subview_elem_equ >::yes) { | |||
= true) { arrayops::inplace_set (colptr, val, m_n_rows); } | arrayops::inplace_set (colptr, val, m_n_rows); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { | |||
= true) { arrayops::inplace_plus (colptr, val, m_n_rows); } | arrayops::inplace_plus (colptr, val, m_n_rows); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { | |||
= true) { arrayops::inplace_minus(colptr, val, m_n_rows); } | arrayops::inplace_minus(colptr, val, m_n_rows); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { | |||
= true) { arrayops::inplace_mul (colptr, val, m_n_rows); } | arrayops::inplace_mul (colptr, val, m_n_rows); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { | |||
= true) { arrayops::inplace_div (colptr, val, m_n_rows); } | arrayops::inplace_div (colptr, val, m_n_rows); } | |||
} | } | |||
} | } | |||
else | else | |||
if( (all_rows == false) && (all_cols == true) ) | if( (all_rows == false) && (all_cols == true) ) | |||
{ | { | |||
const unwrap_check_mixed<T1> tmp1(base_ri.get_ref(), m_local); | const unwrap_check_mixed<T1> tmp1(base_ri.get_ref(), m_local); | |||
const umat& ri = tmp1.M; | const umat& ri = tmp1.M; | |||
arma_debug_check | arma_debug_check | |||
skipping to change at line 145 | skipping to change at line 145 | |||
const uword ri_n_elem = ri.n_elem; | const uword ri_n_elem = ri.n_elem; | |||
for(uword col=0; col < m_n_cols; ++col) | for(uword col=0; col < m_n_cols; ++col) | |||
{ | { | |||
for(uword ri_count=0; ri_count < ri_n_elem; ++ri_count) | for(uword ri_count=0; ri_count < ri_n_elem; ++ri_count) | |||
{ | { | |||
const uword row = ri_mem[ri_count]; | const uword row = ri_mem[ri_count]; | |||
arma_debug_check( (row > m_n_rows), "Mat::elem(): index out of boun ds" ); | arma_debug_check( (row > m_n_rows), "Mat::elem(): index out of boun ds" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value | if(is_same_type<op_type, op_subview_elem_equ >::yes) | |||
== true) { m_local.at(row,col) = val; } | { m_local.at(row,col) = val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) | |||
== true) { m_local.at(row,col) += val; } | { m_local.at(row,col) += val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) | |||
== true) { m_local.at(row,col) -= val; } | { m_local.at(row,col) -= val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) | |||
== true) { m_local.at(row,col) *= val; } | { m_local.at(row,col) *= val; } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) | |||
== true) { m_local.at(row,col) /= val; } | { m_local.at(row,col) /= val; } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
template<typename eT, typename T1, typename T2> | template<typename eT, typename T1, typename T2> | |||
template<typename op_type, typename expr> | template<typename op_type, typename expr> | |||
inline | inline | |||
void | void | |||
subview_elem2<eT,T1,T2>::inplace_op(const Base<eT,expr>& x) | subview_elem2<eT,T1,T2>::inplace_op(const Base<eT,expr>& x) | |||
skipping to change at line 205 | skipping to change at line 205 | |||
const uword col = ci_mem[ci_count]; | const uword col = ci_mem[ci_count]; | |||
arma_debug_check( (col > m_n_cols), "Mat::elem(): index out of bounds " ); | arma_debug_check( (col > m_n_cols), "Mat::elem(): index out of bounds " ); | |||
for(uword ri_count=0; ri_count < ri_n_elem; ++ri_count) | for(uword ri_count=0; ri_count < ri_n_elem; ++ri_count) | |||
{ | { | |||
const uword row = ri_mem[ri_count]; | const uword row = ri_mem[ri_count]; | |||
arma_debug_check( (row > m_n_rows), "Mat::elem(): index out of boun ds" ); | arma_debug_check( (row > m_n_rows), "Mat::elem(): index out of boun ds" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value | if(is_same_type<op_type, op_subview_elem_equ >::yes) | |||
== true) { m_local.at(row,col) = X.at(ri_count, ci_count); } | { m_local.at(row,col) = X.at(ri_count, ci_count); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) | |||
== true) { m_local.at(row,col) += X.at(ri_count, ci_count); } | { m_local.at(row,col) += X.at(ri_count, ci_count); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) | |||
== true) { m_local.at(row,col) -= X.at(ri_count, ci_count); } | { m_local.at(row,col) -= X.at(ri_count, ci_count); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) | |||
== true) { m_local.at(row,col) *= X.at(ri_count, ci_count); } | { m_local.at(row,col) *= X.at(ri_count, ci_count); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) | |||
== true) { m_local.at(row,col) /= X.at(ri_count, ci_count); } | { m_local.at(row,col) /= X.at(ri_count, ci_count); } | |||
} | } | |||
} | } | |||
} | } | |||
else | else | |||
if( (all_rows == true) && (all_cols == false) ) | if( (all_rows == true) && (all_cols == false) ) | |||
{ | { | |||
const unwrap_check_mixed<T2> tmp2(base_ci.get_ref(), m_local); | const unwrap_check_mixed<T2> tmp2(base_ci.get_ref(), m_local); | |||
const umat& ci = tmp2.M; | const umat& ci = tmp2.M; | |||
skipping to change at line 240 | skipping to change at line 240 | |||
for(uword ci_count=0; ci_count < ci_n_elem; ++ci_count) | for(uword ci_count=0; ci_count < ci_n_elem; ++ci_count) | |||
{ | { | |||
const uword col = ci_mem[ci_count]; | const uword col = ci_mem[ci_count]; | |||
arma_debug_check( (col > m_n_cols), "Mat::elem(): index out of bounds " ); | arma_debug_check( (col > m_n_cols), "Mat::elem(): index out of bounds " ); | |||
eT* m_colptr = m_local.colptr(col); | eT* m_colptr = m_local.colptr(col); | |||
const eT* X_colptr = X.colptr(ci_count); | const eT* X_colptr = X.colptr(ci_count); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value = | if(is_same_type<op_type, op_subview_elem_equ >::yes) { | |||
= true) { arrayops::copy (m_colptr, X_colptr, m_n_rows); } | arrayops::copy (m_colptr, X_colptr, m_n_rows); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) { | |||
= true) { arrayops::inplace_plus (m_colptr, X_colptr, m_n_rows); } | arrayops::inplace_plus (m_colptr, X_colptr, m_n_rows); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) { | |||
= true) { arrayops::inplace_minus(m_colptr, X_colptr, m_n_rows); } | arrayops::inplace_minus(m_colptr, X_colptr, m_n_rows); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value = | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) { | |||
= true) { arrayops::inplace_mul (m_colptr, X_colptr, m_n_rows); } | arrayops::inplace_mul (m_colptr, X_colptr, m_n_rows); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value = | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) { | |||
= true) { arrayops::inplace_div (m_colptr, X_colptr, m_n_rows); } | arrayops::inplace_div (m_colptr, X_colptr, m_n_rows); } | |||
} | } | |||
} | } | |||
else | else | |||
if( (all_rows == false) && (all_cols == true) ) | if( (all_rows == false) && (all_cols == true) ) | |||
{ | { | |||
const unwrap_check_mixed<T1> tmp1(base_ri.get_ref(), m_local); | const unwrap_check_mixed<T1> tmp1(base_ri.get_ref(), m_local); | |||
const umat& ri = tmp1.M; | const umat& ri = tmp1.M; | |||
arma_debug_check | arma_debug_check | |||
skipping to change at line 273 | skipping to change at line 273 | |||
arma_debug_assert_same_size( ri_n_elem, m_n_cols, X.n_rows, X.n_cols, " Mat::elem()" ); | arma_debug_assert_same_size( ri_n_elem, m_n_cols, X.n_rows, X.n_cols, " Mat::elem()" ); | |||
for(uword col=0; col < m_n_cols; ++col) | for(uword col=0; col < m_n_cols; ++col) | |||
{ | { | |||
for(uword ri_count=0; ri_count < ri_n_elem; ++ri_count) | for(uword ri_count=0; ri_count < ri_n_elem; ++ri_count) | |||
{ | { | |||
const uword row = ri_mem[ri_count]; | const uword row = ri_mem[ri_count]; | |||
arma_debug_check( (row > m_n_rows), "Mat::elem(): index out of boun ds" ); | arma_debug_check( (row > m_n_rows), "Mat::elem(): index out of boun ds" ); | |||
if(is_same_type<op_type, op_subview_elem_equ >::value | if(is_same_type<op_type, op_subview_elem_equ >::yes) | |||
== true) { m_local.at(row,col) = X.at(ri_count, col); } | { m_local.at(row,col) = X.at(ri_count, col); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_plus >::value | else if(is_same_type<op_type, op_subview_elem_inplace_plus >::yes) | |||
== true) { m_local.at(row,col) += X.at(ri_count, col); } | { m_local.at(row,col) += X.at(ri_count, col); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_minus>::value | else if(is_same_type<op_type, op_subview_elem_inplace_minus>::yes) | |||
== true) { m_local.at(row,col) -= X.at(ri_count, col); } | { m_local.at(row,col) -= X.at(ri_count, col); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_schur>::value | else if(is_same_type<op_type, op_subview_elem_inplace_schur>::yes) | |||
== true) { m_local.at(row,col) *= X.at(ri_count, col); } | { m_local.at(row,col) *= X.at(ri_count, col); } | |||
else if(is_same_type<op_type, op_subview_elem_inplace_div >::value | else if(is_same_type<op_type, op_subview_elem_inplace_div >::yes) | |||
== true) { m_local.at(row,col) /= X.at(ri_count, col); } | { m_local.at(row,col) /= X.at(ri_count, col); } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
// | // | |||
// | // | |||
template<typename eT, typename T1, typename T2> | template<typename eT, typename T1, typename T2> | |||
inline | inline | |||
End of changes. 8 change blocks. | ||||
61 lines changed or deleted | 61 lines changed or added | |||
subview_field_bones.hpp | subview_field_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview_field | //! \addtogroup subview_field | |||
//! @{ | //! @{ | |||
//! Class for storing data required to construct or apply operations to a s ubfield | //! Class for storing data required to construct or apply operations to a s ubfield | |||
//! (i.e. where the subfield starts and ends as well as a reference/pointer to the original field), | //! (i.e. where the subfield starts and ends as well as a reference/pointer to the original field), | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
subview_field_meat.hpp | subview_field_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview_field | //! \addtogroup subview_field | |||
//! @{ | //! @{ | |||
template<typename oT> | template<typename oT> | |||
inline | inline | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
subview_meat.hpp | subview_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 James Sanders | // Copyright (C) 2011 James Sanders | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup subview | //! \addtogroup subview | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
traits.hpp | traits.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup traits | //! \addtogroup traits | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
struct get_pod_type | struct get_pod_type | |||
skipping to change at line 358 | skipping to change at line 358 | |||
{ static const bool value = true; }; | { static const bool value = true; }; | |||
template<typename T1> | template<typename T1> | |||
struct is_op_htrans2< const Op<T1,op_htrans2> > | struct is_op_htrans2< const Op<T1,op_htrans2> > | |||
{ static const bool value = true; }; | { static const bool value = true; }; | |||
// | // | |||
// | // | |||
template<typename T> | template<typename T> | |||
struct is_Mat_trans | ||||
{ static const bool value = false; }; | ||||
template<typename T1> | ||||
struct is_Mat_trans< Op<T1,op_htrans> > | ||||
{ static const bool value = is_Mat<T1>::value; }; | ||||
template<typename T1> | ||||
struct is_Mat_trans< Op<T1,op_htrans2> > | ||||
{ static const bool value = is_Mat<T1>::value; }; | ||||
// | ||||
// | ||||
template<typename T> | ||||
struct is_GenCube | struct is_GenCube | |||
{ static const bool value = false; }; | { static const bool value = false; }; | |||
template<typename eT, typename gen_type> | template<typename eT, typename gen_type> | |||
struct is_GenCube< GenCube<eT,gen_type> > | struct is_GenCube< GenCube<eT,gen_type> > | |||
{ static const bool value = true; }; | { static const bool value = true; }; | |||
template<typename T> | template<typename T> | |||
struct is_OpCube | struct is_OpCube | |||
{ static const bool value = false; }; | { static const bool value = false; }; | |||
skipping to change at line 644 | skipping to change at line 659 | |||
|| is_mtSpOp<T1>::value | || is_mtSpOp<T1>::value | |||
; | ; | |||
}; | }; | |||
// | // | |||
// | // | |||
// | // | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
struct is_same_type | struct is_same_type | |||
{ static const bool value = false; }; | { | |||
static const bool value = false; | ||||
static const bool yes = false; | ||||
static const bool no = true; | ||||
}; | ||||
template<typename T1> | template<typename T1> | |||
struct is_same_type<T1,T1> | struct is_same_type<T1,T1> | |||
{ static const bool value = true; }; | { | |||
static const bool value = true; | ||||
static const bool yes = true; | ||||
static const bool no = false; | ||||
}; | ||||
// | // | |||
// | // | |||
// | // | |||
template<typename T1> | template<typename T1> | |||
struct is_u8 | struct is_u8 | |||
{ static const bool value = false; }; | { static const bool value = false; }; | |||
template<> | template<> | |||
skipping to change at line 857 | skipping to change at line 880 | |||
{ static const bool value = false; }; | { static const bool value = false; }; | |||
template<> | template<> | |||
struct is_complex_strict< std::complex<float> > | struct is_complex_strict< std::complex<float> > | |||
{ static const bool value = true; }; | { static const bool value = true; }; | |||
template<> | template<> | |||
struct is_complex_strict< std::complex<double> > | struct is_complex_strict< std::complex<double> > | |||
{ static const bool value = true; }; | { static const bool value = true; }; | |||
template<typename T1> | ||||
struct is_cx | ||||
{ | ||||
static const bool value = false; | ||||
static const bool yes = false; | ||||
static const bool no = true; | ||||
}; | ||||
// template<> | ||||
template<typename T> | ||||
struct is_cx< std::complex<T> > | ||||
{ | ||||
static const bool value = true; | ||||
static const bool yes = true; | ||||
static const bool no = false; | ||||
}; | ||||
//! check for a weird implementation of the std::complex class | //! check for a weird implementation of the std::complex class | |||
template<typename T1> | template<typename T1> | |||
struct is_supported_complex | struct is_supported_complex | |||
{ static const bool value = false; }; | { static const bool value = false; }; | |||
//template<> | //template<> | |||
template<typename eT> | template<typename eT> | |||
struct is_supported_complex< std::complex<eT> > | struct is_supported_complex< std::complex<eT> > | |||
{ static const bool value = ( sizeof(std::complex<eT>) == 2*sizeof(eT) ); }; | { static const bool value = ( sizeof(std::complex<eT>) == 2*sizeof(eT) ); }; | |||
End of changes. 6 change blocks. | ||||
3 lines changed or deleted | 43 lines changed or added | |||
typedef.hpp | typedef.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup typedef | //! \addtogroup typedef | |||
//! @{ | //! @{ | |||
#if UCHAR_MAX >= 0xff | #if UCHAR_MAX >= 0xff | |||
typedef unsigned char u8; | typedef unsigned char u8; | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
typedef_blas_int.hpp | typedef_blas_int.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2011 Conrad Sanderson | // Copyright (C) 2011 Conrad Sanderson | |||
// Copyright (C) 2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup typedef | //! \addtogroup typedef | |||
//! @{ | //! @{ | |||
#if defined(ARMA_BLAS_LONG_LONG) | #if defined(ARMA_BLAS_LONG_LONG) | |||
typedef long long blas_int; | typedef long long blas_int; | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
typedef_fixed.hpp | typedef_fixed.hpp | |||
---|---|---|---|---|
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2010 Conrad Sanderson | // Copyright (C) 2010 Conrad Sanderson | |||
// Copyright (C) 2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup typedef_fixed | //! \addtogroup typedef_fixed | |||
//! @{ | //! @{ | |||
typedef umat::fixed<2,2> umat22; | typedef umat::fixed<2,2> umat22; | |||
typedef umat::fixed<3,3> umat33; | typedef umat::fixed<3,3> umat33; | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
undefine_conflicts.hpp | undefine_conflicts.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2011 Conrad Sanderson | // Copyright (C) 2008-2011 Conrad Sanderson | |||
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
#if defined(log2) | #if defined(log2) | |||
#undef log2 | #undef log2 | |||
#if defined(__GNUG__) | #if defined(__GNUG__) | |||
#warning "detected 'log2' macro and undefined it" | #warning "detected 'log2' macro and undefined it" | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
unwrap.hpp | unwrap.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2013 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup unwrap | //! \addtogroup unwrap | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
struct unwrap_default | struct unwrap_default | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
unwrap_cube.hpp | unwrap_cube.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2010 Conrad Sanderson | // Copyright (C) 2008-2010 Conrad Sanderson | |||
// Copyright (C) 2008-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup unwrap_cube | //! \addtogroup unwrap_cube | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
class unwrap_cube | class unwrap_cube | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
unwrap_spmat.hpp | unwrap_spmat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2012 Conrad Sanderson | // Copyright (C) 2012 Conrad Sanderson | |||
// Copyright (C) 2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup unwrap_spmat | //! \addtogroup unwrap_spmat | |||
//! @{ | //! @{ | |||
template<typename T1> | template<typename T1> | |||
struct unwrap_spmat | struct unwrap_spmat | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
upgrade_val.hpp | upgrade_val.hpp | |||
---|---|---|---|---|
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2009-2010 Conrad Sanderson | // Copyright (C) 2009-2010 Conrad Sanderson | |||
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup upgrade_val | //! \addtogroup upgrade_val | |||
//! @{ | //! @{ | |||
//! upgrade_val is used to ensure an operation such as multiplication is po ssible between two types. | //! upgrade_val is used to ensure an operation such as multiplication is po ssible between two types. | |||
//! values are upgraded only where necessary. | //! values are upgraded only where necessary. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
wall_clock_bones.hpp | wall_clock_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup wall_clock | //! \addtogroup wall_clock | |||
//! @{ | //! @{ | |||
//! Class for measuring time intervals | //! Class for measuring time intervals | |||
class wall_clock | class wall_clock | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
wall_clock_meat.hpp | wall_clock_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// Copyright (C) 2008-2012 Conrad Sanderson | // Copyright (C) 2008-2012 Conrad Sanderson | |||
// Copyright (C) 2008-2012 NICTA (www.nicta.com.au) | ||||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// file, You can obtain one at http://mozilla.org/MPL/2.0/. | // file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
//! \addtogroup wall_clock | //! \addtogroup wall_clock | |||
//! @{ | //! @{ | |||
inline | inline | |||
wall_clock::wall_clock() | wall_clock::wall_clock() | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||