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

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/