Base_bones.hpp | Base_bones.hpp | |||
---|---|---|---|---|
skipping to change at line 35 | skipping to change at line 35 | |||
template<typename derived> | template<typename derived> | |||
struct Base_extra<derived, true> { typedef Base_blas_elem_type<derived> r esult; }; | struct Base_extra<derived, true> { typedef Base_blas_elem_type<derived> r esult; }; | |||
template<typename derived> | template<typename derived> | |||
struct Base_extra<derived, false> { typedef Base_other_elem_type<derived> r esult; }; | struct Base_extra<derived, false> { typedef Base_other_elem_type<derived> r esult; }; | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
struct Base_eval_Mat | struct Base_eval_Mat | |||
{ | { | |||
const derived& eval() const; | arma_inline const derived& eval() const; | |||
}; | }; | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
struct Base_eval_expr | struct Base_eval_expr | |||
{ | { | |||
Mat<elem_type> eval() const; //!< force the immediate evaluation of a d elayed expression | arma_inline Mat<elem_type> eval() const; //!< force the immediate evalu ation of a delayed expression | |||
}; | }; | |||
template<typename elem_type, typename derived, bool condition> | template<typename elem_type, typename derived, bool condition> | |||
struct Base_eval {}; | struct Base_eval {}; | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
struct Base_eval<elem_type, derived, true> { typedef Base_eval_Mat<elem_ty pe, derived> result; }; | struct Base_eval<elem_type, derived, true> { typedef Base_eval_Mat<elem_ty pe, derived> result; }; | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
struct Base_eval<elem_type, derived, false> { typedef Base_eval_expr<elem_t ype, derived> result; }; | struct Base_eval<elem_type, derived, false> { typedef Base_eval_expr<elem_t ype, derived> result; }; | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
arma_version.hpp | arma_version.hpp | |||
---|---|---|---|---|
skipping to change at line 13 | skipping to change at line 13 | |||
// | // | |||
// This Source Code Form is subject to the terms of the Mozilla Public | // This Source Code Form is subject to the terms of the Mozilla Public | |||
// License, v. 2.0. If a copy of the MPL was not distributed with this | // License, v. 2.0. If a copy of the MPL was not distributed with this | |||
// 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 4 | #define ARMA_VERSION_MAJOR 4 | |||
#define ARMA_VERSION_MINOR 000 | #define ARMA_VERSION_MINOR 000 | |||
#define ARMA_VERSION_PATCH 4 | #define ARMA_VERSION_PATCH 5 | |||
#define ARMA_VERSION_NAME "Feral Steamroller" | #define ARMA_VERSION_NAME "Feral Steamroller" | |||
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 | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
auxlib_meat.hpp | auxlib_meat.hpp | |||
---|---|---|---|---|
skipping to change at line 2770 | skipping to change at line 2770 | |||
blas_int min_mn = (std::min)(m,n); | blas_int min_mn = (std::min)(m,n); | |||
blas_int lda = blas_int(A.n_rows); | blas_int lda = blas_int(A.n_rows); | |||
blas_int ldu = blas_int(U.n_rows); | blas_int ldu = blas_int(U.n_rows); | |||
blas_int ldvt = blas_int(V.n_rows); | blas_int ldvt = blas_int(V.n_rows); | |||
blas_int lwork = 3 * (2*min_mn + std::max(m,n)); | blas_int lwork = 3 * (2*min_mn + std::max(m,n)); | |||
blas_int info = 0; | blas_int info = 0; | |||
S.set_size( static_cast<uword>(min_mn) ); | S.set_size( static_cast<uword>(min_mn) ); | |||
podarray<eT> work( static_cast<uword>(lwork ) ); | podarray<eT> work( static_cast<uword>(lwork ) ); | |||
podarray<T> rwork( static_cast<uword>(5*min_mn) ); | podarray<T> rwork( static_cast<uword>(7*min_mn) ); // LAPACK 3. 4.2 docs state 5*min(m,n), while zgesdd() seems to write past the end | |||
podarray<blas_int> iwork( static_cast<uword>(8*min_mn) ); | podarray<blas_int> iwork( static_cast<uword>(8*min_mn) ); | |||
lapack::cx_gesdd<T> | lapack::cx_gesdd<T> | |||
( | ( | |||
&jobz, &m, &n, | &jobz, &m, &n, | |||
A.memptr(), &lda, S.memptr(), U.memptr(), &ldu, V.memptr(), &ldvt, | A.memptr(), &lda, S.memptr(), U.memptr(), &ldu, V.memptr(), &ldvt, | |||
work.memptr(), &lwork, rwork.memptr(), iwork.memptr(), &info | work.memptr(), &lwork, rwork.memptr(), iwork.memptr(), &info | |||
); | ); | |||
return (info == 0); | return (info == 0); | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_sort.hpp | fn_sort.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2014 Conrad Sanderson | |||
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) | // Copyright (C) 2008-2014 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 | |||
//! @{ | //! @{ | |||
//! kept for compatibility with old code | //! kept for compatibility with old code | |||
template<typename T1> | template<typename T1> | |||
skipping to change at line 49 | skipping to change at line 49 | |||
>::result | >::result | |||
sort | sort | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const T2* sort_direction, | const T2* sort_direction, | |||
const uword dim = 0 | const uword dim = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
const char sig = sort_direction[0]; | const char sig = (sort_direction != NULL) ? sort_direction[0] : char(0); | |||
arma_debug_check( (sig != 'a') && (sig != 'd'), "sort(): unknown sort dir ection"); | arma_debug_check( (sig != 'a') && (sig != 'd'), "sort(): unknown sort dir ection"); | |||
const uword sort_type = (sig == 'a') ? 0 : 1; | const uword sort_type = (sig == 'a') ? 0 : 1; | |||
return Op<T1, op_sort>(X, sort_type, dim); | return Op<T1, op_sort>(X, sort_type, dim); | |||
} | } | |||
//! kept for compatibility with old code | //! kept for compatibility with old code | |||
template<typename T1> | template<typename T1> | |||
skipping to change at line 96 | skipping to change at line 96 | |||
const Op<T1, op_sort> | const Op<T1, op_sort> | |||
>::result | >::result | |||
sort | sort | |||
( | ( | |||
const T1& X, | const T1& X, | |||
const T2* sort_direction | const T2* sort_direction | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
const char sig = sort_direction[0]; | const char sig = (sort_direction != NULL) ? sort_direction[0] : char(0); | |||
arma_debug_check( (sig != 'a') && (sig != 'd'), "sort(): unknown sort dir ection"); | arma_debug_check( (sig != 'a') && (sig != 'd'), "sort(): unknown sort dir ection"); | |||
const uword sort_type = (sig == 'a') ? 0 : 1; | const uword sort_type = (sig == 'a') ? 0 : 1; | |||
const uword dim = (T1::is_col) ? 0 : 1; | const uword dim = (T1::is_col) ? 0 : 1; | |||
return Op<T1, op_sort>(X, sort_type, dim); | return Op<T1, op_sort>(X, sort_type, dim); | |||
} | } | |||
//! @} | //! @} | |||
End of changes. 3 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added | |||