Base_meat.hpp | Base_meat.hpp | |||
---|---|---|---|---|
skipping to change at line 107 | skipping to change at line 107 | |||
Base_blas_elem_type<derived>::i(const bool slow) const | Base_blas_elem_type<derived>::i(const bool slow) const | |||
{ | { | |||
return Op<derived,op_inv>( static_cast<const derived&>(*this), ((slow == false) ? 0 : 1), 0 ); | return Op<derived,op_inv>( static_cast<const derived&>(*this), ((slow == false) ? 0 : 1), 0 ); | |||
} | } | |||
template<typename derived> | template<typename derived> | |||
arma_inline | arma_inline | |||
const Op<derived,op_inv> | const Op<derived,op_inv> | |||
Base_blas_elem_type<derived>::i(const char* method) const | Base_blas_elem_type<derived>::i(const char* method) const | |||
{ | { | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "Base::i(): unknown met hod specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "Base::i(): unknown met hod specified" ); | |||
return Op<derived,op_inv>( static_cast<const derived&>(*this), ((sig == ' f') ? 0 : 1), 0 ); | return Op<derived,op_inv>( static_cast<const derived&>(*this), ((sig == ' f') ? 0 : 1), 0 ); | |||
} | } | |||
// | // | |||
// extra functions defined in Base_eval_Mat | // extra functions defined in Base_eval_Mat | |||
template<typename elem_type, typename derived> | template<typename elem_type, typename derived> | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 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 2 | #define ARMA_VERSION_PATCH 3 | |||
#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 | |||
arrayops_meat.hpp | arrayops_meat.hpp | |||
---|---|---|---|---|
// Copyright (C) 2011-2013 Conrad Sanderson | // Copyright (C) 2011-2014 Conrad Sanderson | |||
// Copyright (C) 2011-2013 NICTA (www.nicta.com.au) | // Copyright (C) 2011-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 arrayops | //! \addtogroup arrayops | |||
//! @{ | //! @{ | |||
template<typename eT> | template<typename eT> | |||
arma_hot | arma_hot | |||
arma_inline | arma_inline | |||
void | void | |||
arrayops::copy(eT* dest, const eT* src, const uword n_elem) | arrayops::copy(eT* dest, const eT* src, const uword n_elem) | |||
{ | { | |||
if(n_elem <= 16) | if( (n_elem <= 16) && (is_cx<eT>::no) ) | |||
{ | { | |||
arrayops::copy_small(dest, src, n_elem); | arrayops::copy_small(dest, src, n_elem); | |||
} | } | |||
else | else | |||
{ | { | |||
std::memcpy(dest, src, n_elem*sizeof(eT)); | std::memcpy(dest, src, n_elem*sizeof(eT)); | |||
} | } | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
skipping to change at line 502 | skipping to change at line 502 | |||
dest[i] /= src[i]; | dest[i] /= src[i]; | |||
} | } | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
arma_hot | arma_hot | |||
inline | inline | |||
void | void | |||
arrayops::inplace_set(eT* dest, const eT val, const uword n_elem) | arrayops::inplace_set(eT* dest, const eT val, const uword n_elem) | |||
{ | { | |||
if(n_elem <= 16) | if( (n_elem <= 16) && (is_cx<eT>::no) ) | |||
{ | { | |||
arrayops::inplace_set_small(dest, val, n_elem); | arrayops::inplace_set_small(dest, val, n_elem); | |||
} | } | |||
else | else | |||
{ | { | |||
if(memory::is_aligned(dest)) | if(memory::is_aligned(dest)) | |||
{ | { | |||
memory::mark_as_aligned(dest); | memory::mark_as_aligned(dest); | |||
uword i,j; | uword i,j; | |||
End of changes. 3 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added | |||
diskio_meat.hpp | diskio_meat.hpp | |||
---|---|---|---|---|
skipping to change at line 2099 | skipping to change at line 2099 | |||
inline | inline | |||
bool | bool | |||
diskio::load_auto_detect(Mat<eT>& x, std::istream& f, std::string& err_msg) | diskio::load_auto_detect(Mat<eT>& x, std::istream& f, std::string& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
static const std::string ARMA_MAT_TXT = "ARMA_MAT_TXT"; | static const std::string ARMA_MAT_TXT = "ARMA_MAT_TXT"; | |||
static const std::string ARMA_MAT_BIN = "ARMA_MAT_BIN"; | static const std::string ARMA_MAT_BIN = "ARMA_MAT_BIN"; | |||
static const std::string P5 = "P5"; | static const std::string P5 = "P5"; | |||
podarray<char> raw_header(ARMA_MAT_TXT.length() + 1); | podarray<char> raw_header( uword(ARMA_MAT_TXT.length()) + 1); | |||
std::streampos pos = f.tellg(); | std::streampos pos = f.tellg(); | |||
f.read( raw_header.memptr(), std::streamsize(ARMA_MAT_TXT.length()) ); | f.read( raw_header.memptr(), std::streamsize(ARMA_MAT_TXT.length()) ); | |||
raw_header[ARMA_MAT_TXT.length()] = '\0'; | raw_header[uword(ARMA_MAT_TXT.length())] = '\0'; | |||
f.clear(); | f.clear(); | |||
f.seekg(pos); | f.seekg(pos); | |||
const std::string header = raw_header.mem; | const std::string header = raw_header.mem; | |||
if(ARMA_MAT_TXT == header.substr(0,ARMA_MAT_TXT.length())) | if(ARMA_MAT_TXT == header.substr(0,ARMA_MAT_TXT.length())) | |||
{ | { | |||
return load_arma_ascii(x, f, err_msg); | return load_arma_ascii(x, f, err_msg); | |||
} | } | |||
skipping to change at line 3645 | skipping to change at line 3645 | |||
inline | inline | |||
bool | bool | |||
diskio::load_auto_detect(Cube<eT>& x, std::istream& f, std::string& err_msg ) | diskio::load_auto_detect(Cube<eT>& x, std::istream& f, std::string& err_msg ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
static const std::string ARMA_CUB_TXT = "ARMA_CUB_TXT"; | static const std::string ARMA_CUB_TXT = "ARMA_CUB_TXT"; | |||
static const std::string ARMA_CUB_BIN = "ARMA_CUB_BIN"; | static const std::string ARMA_CUB_BIN = "ARMA_CUB_BIN"; | |||
static const std::string P6 = "P6"; | static const std::string P6 = "P6"; | |||
podarray<char> raw_header(ARMA_CUB_TXT.length() + 1); | podarray<char> raw_header(uword(ARMA_CUB_TXT.length()) + 1); | |||
std::streampos pos = f.tellg(); | std::streampos pos = f.tellg(); | |||
f.read( raw_header.memptr(), std::streamsize(ARMA_CUB_TXT.length()) ); | f.read( raw_header.memptr(), std::streamsize(ARMA_CUB_TXT.length()) ); | |||
raw_header[ARMA_CUB_TXT.length()] = '\0'; | raw_header[uword(ARMA_CUB_TXT.length())] = '\0'; | |||
f.clear(); | f.clear(); | |||
f.seekg(pos); | f.seekg(pos); | |||
const std::string header = raw_header.mem; | const std::string header = raw_header.mem; | |||
if(ARMA_CUB_TXT == header.substr(0, ARMA_CUB_TXT.length())) | if(ARMA_CUB_TXT == header.substr(0, ARMA_CUB_TXT.length())) | |||
{ | { | |||
return load_arma_ascii(x, f, err_msg); | return load_arma_ascii(x, f, err_msg); | |||
} | } | |||
skipping to change at line 4001 | skipping to change at line 4001 | |||
bool | bool | |||
diskio::load_auto_detect(field<T1>& x, std::istream& f, std::string& err_ms g) | diskio::load_auto_detect(field<T1>& x, std::istream& f, std::string& err_ms g) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_type_check(( is_Mat<T1>::value == false )); | arma_type_check(( is_Mat<T1>::value == false )); | |||
static const std::string ARMA_FLD_BIN = "ARMA_FLD_BIN"; | static const std::string ARMA_FLD_BIN = "ARMA_FLD_BIN"; | |||
static const std::string P6 = "P6"; | static const std::string P6 = "P6"; | |||
podarray<char> raw_header(ARMA_FLD_BIN.length() + 1); | podarray<char> raw_header(uword(ARMA_FLD_BIN.length()) + 1); | |||
std::streampos pos = f.tellg(); | std::streampos pos = f.tellg(); | |||
f.read( raw_header.memptr(), std::streamsize(ARMA_FLD_BIN.length()) ); | f.read( raw_header.memptr(), std::streamsize(ARMA_FLD_BIN.length()) ); | |||
f.clear(); | f.clear(); | |||
f.seekg(pos); | f.seekg(pos); | |||
raw_header[ARMA_FLD_BIN.length()] = '\0'; | raw_header[uword(ARMA_FLD_BIN.length())] = '\0'; | |||
const std::string header = raw_header.mem; | const std::string header = raw_header.mem; | |||
if(ARMA_FLD_BIN == header.substr(0, ARMA_FLD_BIN.length())) | if(ARMA_FLD_BIN == header.substr(0, ARMA_FLD_BIN.length())) | |||
{ | { | |||
return load_arma_binary(x, f, err_msg); | return load_arma_binary(x, f, err_msg); | |||
} | } | |||
else | else | |||
if(P6 == header.substr(0, P6.length())) | if(P6 == header.substr(0, P6.length())) | |||
{ | { | |||
End of changes. 6 change blocks. | ||||
6 lines changed or deleted | 6 lines changed or added | |||
field_meat.hpp | field_meat.hpp | |||
---|---|---|---|---|
skipping to change at line 1397 | skipping to change at line 1397 | |||
// | // | |||
// | // | |||
template<typename oT> | template<typename oT> | |||
inline | inline | |||
bool | bool | |||
field_aux::save(const field<oT>&, const std::string&, const file_type, std: :string& err_msg) | field_aux::save(const field<oT>&, const std::string&, const file_type, std: :string& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
err_msg = " [sorry, saving/loading this type of field is currently not su pported] filename = "; | err_msg = " [saving/loading this type of field is currently not supported ] filename = "; | |||
return false; | return false; | |||
} | } | |||
template<typename oT> | template<typename oT> | |||
inline | inline | |||
bool | bool | |||
field_aux::save(const field<oT>&, std::ostream&, const file_type, std::stri ng& err_msg) | field_aux::save(const field<oT>&, std::ostream&, const file_type, std::stri ng& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
err_msg = " [sorry, saving/loading this type of field is currently not su pported] filename = "; | err_msg = " [saving/loading this type of field is currently not supported ] filename = "; | |||
return false; | return false; | |||
} | } | |||
template<typename oT> | template<typename oT> | |||
inline | inline | |||
bool | bool | |||
field_aux::load(field<oT>&, const std::string&, const file_type, std::strin g& err_msg) | field_aux::load(field<oT>&, const std::string&, const file_type, std::strin g& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
err_msg = " [sorry, saving/loading this type of field is currently not su pported] filename = "; | err_msg = " [saving/loading this type of field is currently not supported ] filename = "; | |||
return false; | return false; | |||
} | } | |||
template<typename oT> | template<typename oT> | |||
inline | inline | |||
bool | bool | |||
field_aux::load(field<oT>&, std::istream&, const file_type, std::string& er r_msg) | field_aux::load(field<oT>&, std::istream&, const file_type, std::string& er r_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
err_msg = " [sorry, saving/loading this type of field is currently not su pported] filename = "; | err_msg = " [saving/loading this type of field is currently not supported ] filename = "; | |||
return false; | return false; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
bool | bool | |||
field_aux::save(const field< Mat<eT> >& x, const std::string& name, const f ile_type type, std::string& err_msg) | field_aux::save(const field< Mat<eT> >& x, const std::string& name, const f ile_type type, std::string& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
skipping to change at line 1648 | skipping to change at line 1648 | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
bool | bool | |||
field_aux::save(const field< Row<eT> >& x, const std::string& name, const f ile_type type, std::string& err_msg) | field_aux::save(const field< Row<eT> >& x, const std::string& name, const f ile_type type, std::string& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
switch(type) | switch(type) | |||
{ | { | |||
case arma_binary: | case arma_binary: | |||
return diskio::save_arma_binary(x, name, err_msg); | return diskio::save_arma_binary(x, name); | |||
break; | break; | |||
case ppm_binary: | case ppm_binary: | |||
return diskio::save_ppm_binary(x, name, err_msg); | return diskio::save_ppm_binary(x, name); | |||
break; | break; | |||
default: | default: | |||
err_msg = " [unsupported type] filename = "; | err_msg = " [unsupported type] filename = "; | |||
return false; | return false; | |||
} | } | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
bool | bool | |||
field_aux::save(const field< Row<eT> >& x, std::ostream& os, const file_typ e type, std::string& err_msg) | field_aux::save(const field< Row<eT> >& x, std::ostream& os, const file_typ e type, std::string& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
switch(type) | switch(type) | |||
{ | { | |||
case arma_binary: | case arma_binary: | |||
return diskio::save_arma_binary(x, os, err_msg); | return diskio::save_arma_binary(x, os); | |||
break; | break; | |||
case ppm_binary: | case ppm_binary: | |||
return diskio::save_ppm_binary(x, os, err_msg); | return diskio::save_ppm_binary(x, os); | |||
break; | break; | |||
default: | default: | |||
err_msg = " [unsupported type] filename = "; | err_msg = " [unsupported type] filename = "; | |||
return false; | return false; | |||
} | } | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
skipping to change at line 1748 | skipping to change at line 1748 | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
bool | bool | |||
field_aux::save(const field< Cube<eT> >& x, const std::string& name, const file_type type, std::string& err_msg) | field_aux::save(const field< Cube<eT> >& x, const std::string& name, const file_type type, std::string& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
switch(type) | switch(type) | |||
{ | { | |||
case arma_binary: | case arma_binary: | |||
return diskio::save_arma_binary(x, name, err_msg); | return diskio::save_arma_binary(x, name); | |||
break; | ||||
case ppm_binary: | ||||
return diskio::save_ppm_binary(x, name, err_msg); | ||||
break; | break; | |||
default: | default: | |||
err_msg = " [unsupported type] filename = "; | err_msg = " [unsupported type] filename = "; | |||
return false; | return false; | |||
} | } | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
bool | bool | |||
field_aux::save(const field< Cube<eT> >& x, std::ostream& os, const file_ty pe type, std::string& err_msg) | field_aux::save(const field< Cube<eT> >& x, std::ostream& os, const file_ty pe type, std::string& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
switch(type) | switch(type) | |||
{ | { | |||
case arma_binary: | case arma_binary: | |||
return diskio::save_arma_binary(x, os, err_msg); | return diskio::save_arma_binary(x, os); | |||
break; | ||||
case ppm_binary: | ||||
return diskio::save_ppm_binary(x, os, err_msg); | ||||
break; | break; | |||
default: | default: | |||
err_msg = " [unsupported type] filename = "; | err_msg = " [unsupported type] filename = "; | |||
return false; | return false; | |||
} | } | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
bool | bool | |||
field_aux::load(field< Cube<eT> >& x, const std::string& name, const file_t ype type, std::string& err_msg) | field_aux::load(field< Cube<eT> >& x, const std::string& name, const file_t ype type, std::string& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
switch(type) | switch(type) | |||
{ | { | |||
case auto_detect: | case auto_detect: | |||
return diskio::load_auto_detect(x, name, err_msg); | ||||
break; | ||||
case arma_binary: | case arma_binary: | |||
return diskio::load_arma_binary(x, name, err_msg); | return diskio::load_arma_binary(x, name, err_msg); | |||
break; | break; | |||
case ppm_binary: | ||||
return diskio::load_ppm_binary(x, name, err_msg); | ||||
break; | ||||
default: | default: | |||
err_msg = " [unsupported type] filename = "; | err_msg = " [unsupported type] filename = "; | |||
return false; | return false; | |||
} | } | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
bool | bool | |||
field_aux::load(field< Cube<eT> >& x, std::istream& is, const file_type typ e, std::string& err_msg) | field_aux::load(field< Cube<eT> >& x, std::istream& is, const file_type typ e, std::string& err_msg) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
switch(type) | switch(type) | |||
{ | { | |||
case auto_detect: | case auto_detect: | |||
return diskio::load_auto_detect(x, is, err_msg); | ||||
break; | ||||
case arma_binary: | case arma_binary: | |||
return diskio::load_arma_binary(x, is, err_msg); | return diskio::load_arma_binary(x, is, err_msg); | |||
break; | break; | |||
case ppm_binary: | ||||
return diskio::load_ppm_binary(x, is, err_msg); | ||||
break; | ||||
default: | default: | |||
err_msg = " [unsupported type] filename = "; | err_msg = " [unsupported type] filename = "; | |||
return false; | return false; | |||
} | } | |||
} | } | |||
inline | inline | |||
bool | bool | |||
field_aux::save(const field< std::string >& x, const std::string& name, con st file_type type, std::string& err_msg) | field_aux::save(const field< std::string >& x, const std::string& name, con st file_type type, std::string& err_msg) | |||
{ | { | |||
End of changes. 14 change blocks. | ||||
32 lines changed or deleted | 10 lines changed or added | |||
fn_det.hpp | fn_det.hpp | |||
---|---|---|---|---|
skipping to change at line 43 | skipping to change at line 43 | |||
det | det | |||
( | ( | |||
const Base<typename T1::elem_type,T1>& X, | const Base<typename T1::elem_type,T1>& X, | |||
const char* method, | const char* method, | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | |||
const bool slow = (sig == 's'); | const bool slow = (sig == 's'); | |||
return auxlib::det(X, slow); | return auxlib::det(X, slow); | |||
} | } | |||
//! determinant of diagmat | //! determinant of diagmat | |||
template<typename T1> | template<typename T1> | |||
skipping to change at line 102 | skipping to change at line 102 | |||
arma_warn_unused | arma_warn_unused | |||
typename T1::elem_type | typename T1::elem_type | |||
det | det | |||
( | ( | |||
const Op<T1, op_diagmat>& X, | const Op<T1, op_diagmat>& X, | |||
const char* method | const char* method | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | |||
return det(X, false); | return det(X, false); | |||
} | } | |||
//! determinant of a triangular matrix | //! determinant of a triangular matrix | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
arma_warn_unused | arma_warn_unused | |||
skipping to change at line 161 | skipping to change at line 161 | |||
arma_warn_unused | arma_warn_unused | |||
typename T1::elem_type | typename T1::elem_type | |||
det | det | |||
( | ( | |||
const Op<T1, op_trimat>& X, | const Op<T1, op_trimat>& X, | |||
const char* method | const char* method | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | |||
return det(X, false); | return det(X, false); | |||
} | } | |||
//! determinant of inv(A), without doing the inverse operation | //! determinant of inv(A), without doing the inverse operation | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
arma_warn_unused | arma_warn_unused | |||
skipping to change at line 206 | skipping to change at line 206 | |||
det | det | |||
( | ( | |||
const Op<T1,op_inv>& X, | const Op<T1,op_inv>& X, | |||
const char* method, | const char* method, | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | |||
const bool slow = (sig == 's'); | const bool slow = (sig == 's'); | |||
return det(X, slow); | return det(X, slow); | |||
} | } | |||
//! determinant of trans(A) | //! determinant of trans(A) | |||
template<typename T1> | template<typename T1> | |||
skipping to change at line 251 | skipping to change at line 251 | |||
const Op<T1,op_htrans>& in, | const Op<T1,op_htrans>& in, | |||
const char* method, | const char* method, | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk1 = 0, | const typename arma_blas_type_only<typename T1::elem_type>::result* junk1 = 0, | |||
const typename arma_not_cx<typename T1::elem_type>::result* junk2 = 0 | const typename arma_not_cx<typename T1::elem_type>::result* junk2 = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk1); | arma_ignore(junk1); | |||
arma_ignore(junk2); | arma_ignore(junk2); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "det(): unknown method specified" ); | |||
const bool slow = (sig == 's'); | const bool slow = (sig == 's'); | |||
return auxlib::det(in.m, slow); // bypass op_htrans | return auxlib::det(in.m, slow); // bypass op_htrans | |||
} | } | |||
template<typename T> | template<typename T> | |||
arma_inline | arma_inline | |||
End of changes. 5 change blocks. | ||||
5 lines changed or deleted | 5 lines changed or added | |||
fn_eig_sym.hpp | fn_eig_sym.hpp | |||
---|---|---|---|---|
skipping to change at line 83 | skipping to change at line 83 | |||
const Base<typename T1::elem_type,T1>& X, | const Base<typename T1::elem_type,T1>& X, | |||
const char* method = "dc", | const char* method = "dc", | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
arma_debug_check( void_ptr(&eigval) == void_ptr(&eigvec), "eig_sym(): eig val is an alias of eigvec" ); | arma_debug_check( void_ptr(&eigval) == void_ptr(&eigvec), "eig_sym(): eig val is an alias of eigvec" ); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'd')), "eig_sym(): unknown met hod specified" ); | arma_debug_check( ((sig != 's') && (sig != 'd')), "eig_sym(): unknown met hod specified" ); | |||
const bool status = (sig == 'd') ? auxlib::eig_sym_dc(eigval, eigvec, X) : auxlib::eig_sym(eigval, eigvec, X); | const bool status = (sig == 'd') ? auxlib::eig_sym_dc(eigval, eigvec, X) : auxlib::eig_sym(eigval, eigvec, X); | |||
if(status == false) | if(status == false) | |||
{ | { | |||
eigval.reset(); | eigval.reset(); | |||
eigvec.reset(); | eigvec.reset(); | |||
arma_bad("eig_sym(): failed to converge", false); | arma_bad("eig_sym(): failed to converge", false); | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_inplace_strans.hpp | fn_inplace_strans.hpp | |||
---|---|---|---|---|
skipping to change at line 23 | skipping to change at line 23 | |||
inline | inline | |||
void | void | |||
inplace_strans | inplace_strans | |||
( | ( | |||
Mat<eT>& X, | Mat<eT>& X, | |||
const char* method = "std" | const char* method = "std" | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'l')), "inplace_strans(): unkn own method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'l')), "inplace_strans(): unkn own method specified" ); | |||
const bool low_memory = (sig == 'l'); | const bool low_memory = (sig == 'l'); | |||
if( (low_memory == false) || (X.n_rows == X.n_cols) ) | if( (low_memory == false) || (X.n_rows == X.n_cols) ) | |||
{ | { | |||
op_strans::apply_mat_inplace(X); | op_strans::apply_mat_inplace(X); | |||
} | } | |||
else | else | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_inplace_trans.hpp | fn_inplace_trans.hpp | |||
---|---|---|---|---|
skipping to change at line 46 | skipping to change at line 46 | |||
void | void | |||
>::result | >::result | |||
inplace_htrans | inplace_htrans | |||
( | ( | |||
Mat<eT>& X, | Mat<eT>& X, | |||
const char* method = "std" | const char* method = "std" | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'l')), "inplace_htrans(): unkn own method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'l')), "inplace_htrans(): unkn own method specified" ); | |||
const bool low_memory = (sig == 'l'); | const bool low_memory = (sig == 'l'); | |||
if( (low_memory == false) || (X.n_rows == X.n_cols) ) | if( (low_memory == false) || (X.n_rows == X.n_cols) ) | |||
{ | { | |||
op_htrans::apply_mat_inplace(X); | op_htrans::apply_mat_inplace(X); | |||
} | } | |||
else | else | |||
skipping to change at line 80 | skipping to change at line 80 | |||
void | void | |||
>::result | >::result | |||
inplace_trans | inplace_trans | |||
( | ( | |||
Mat<eT>& X, | Mat<eT>& X, | |||
const char* method = "std" | const char* method = "std" | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'l')), "inplace_trans(): unkno wn method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'l')), "inplace_trans(): unkno wn method specified" ); | |||
inplace_strans(X, method); | inplace_strans(X, method); | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
typename | typename | |||
enable_if2 | enable_if2 | |||
skipping to change at line 103 | skipping to change at line 103 | |||
void | void | |||
>::result | >::result | |||
inplace_trans | inplace_trans | |||
( | ( | |||
Mat<eT>& X, | Mat<eT>& X, | |||
const char* method = "std" | const char* method = "std" | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'l')), "inplace_trans(): unkno wn method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'l')), "inplace_trans(): unkno wn method specified" ); | |||
inplace_htrans(X, method); | inplace_htrans(X, method); | |||
} | } | |||
//! @} | //! @} | |||
End of changes. 3 change blocks. | ||||
3 lines changed or deleted | 3 lines changed or added | |||
fn_inv.hpp | fn_inv.hpp | |||
---|---|---|---|---|
skipping to change at line 41 | skipping to change at line 41 | |||
inv | inv | |||
( | ( | |||
const Base<typename T1::elem_type,T1>& X, | const Base<typename T1::elem_type,T1>& X, | |||
const char* method, | const char* method, | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "inv(): unknown method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "inv(): unknown method specified" ); | |||
return Op<T1, op_inv>(X.get_ref(), ((sig == 'f') ? 0 : 1), 0); | return Op<T1, op_inv>(X.get_ref(), ((sig == 'f') ? 0 : 1), 0); | |||
} | } | |||
//! delayed matrix inverse (triangular matrices) | //! delayed matrix inverse (triangular matrices) | |||
template<typename T1> | template<typename T1> | |||
arma_inline | arma_inline | |||
const Op<T1, op_inv_tr> | const Op<T1, op_inv_tr> | |||
skipping to change at line 79 | skipping to change at line 79 | |||
inv | inv | |||
( | ( | |||
const Op<T1, op_trimat>& X, | const Op<T1, op_trimat>& X, | |||
const char* method, | const char* method, | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "inv(): unknown method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "inv(): unknown method specified" ); | |||
return Op<T1, op_inv_tr>(X.m, X.aux_uword_a, 0); | return Op<T1, op_inv_tr>(X.m, X.aux_uword_a, 0); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
bool | bool | |||
inv | inv | |||
skipping to change at line 152 | skipping to change at line 152 | |||
inv_sympd | inv_sympd | |||
( | ( | |||
const Base<typename T1::elem_type, T1>& X, | const Base<typename T1::elem_type, T1>& X, | |||
const char* method = "std", | const char* method = "std", | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "inv_sympd(): unknown m ethod specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "inv_sympd(): unknown m ethod specified" ); | |||
return Op<T1, op_inv_sympd>(X.get_ref(), 0, 0); | return Op<T1, op_inv_sympd>(X.get_ref(), 0, 0); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
bool | bool | |||
inv_sympd | inv_sympd | |||
End of changes. 3 change blocks. | ||||
3 lines changed or deleted | 3 lines changed or added | |||
fn_norm.hpp | fn_norm.hpp | |||
---|---|---|---|---|
skipping to change at line 537 | skipping to change at line 537 | |||
typedef typename T1::pod_type T; | typedef typename T1::pod_type T; | |||
const Proxy<T1> P(X); | const Proxy<T1> P(X); | |||
if(P.get_n_elem() == 0) | if(P.get_n_elem() == 0) | |||
{ | { | |||
return T(0); | return T(0); | |||
} | } | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
const bool is_vec = (P.get_n_rows() == 1) || (P.get_n_cols() == 1); | const bool is_vec = (P.get_n_rows() == 1) || (P.get_n_cols() == 1); | |||
if(is_vec == true) | if(is_vec == true) | |||
{ | { | |||
if( (sig == 'i') || (sig == 'I') || (sig == '+') ) // max norm | if( (sig == 'i') || (sig == 'I') || (sig == '+') ) // max norm | |||
{ | { | |||
return arma_vec_norm_max(P); | return arma_vec_norm_max(P); | |||
} | } | |||
else | else | |||
if(sig == '-') // min norm | if(sig == '-') // min norm | |||
skipping to change at line 722 | skipping to change at line 722 | |||
} | } | |||
const unwrap_spmat<typename SpProxy<T1>::stored_type> tmp(P.Q); | const unwrap_spmat<typename SpProxy<T1>::stored_type> tmp(P.Q); | |||
const SpMat<eT>& A = tmp.M; | const SpMat<eT>& A = tmp.M; | |||
// create a fake dense vector to allow reuse of code for dense vectors | // create a fake dense vector to allow reuse of code for dense vectors | |||
Col<eT> fake_vector( access::rwp(A.values), A.n_nonzero, false ); | Col<eT> fake_vector( access::rwp(A.values), A.n_nonzero, false ); | |||
const Proxy< Col<eT> > P_fake_vector(fake_vector); | const Proxy< Col<eT> > P_fake_vector(fake_vector); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
const bool is_vec = (P.get_n_rows() == 1) || (P.get_n_cols() == 1); | const bool is_vec = (P.get_n_rows() == 1) || (P.get_n_cols() == 1); | |||
if(is_vec == true) | if(is_vec == true) | |||
{ | { | |||
if( (sig == 'i') || (sig == 'I') || (sig == '+') ) // max norm | if( (sig == 'i') || (sig == 'I') || (sig == '+') ) // max norm | |||
{ | { | |||
return arma_vec_norm_max(P_fake_vector); | return arma_vec_norm_max(P_fake_vector); | |||
} | } | |||
else | else | |||
if(sig == '-') // min norm | if(sig == '-') // min norm | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
fn_pinv.hpp | fn_pinv.hpp | |||
---|---|---|---|---|
skipping to change at line 26 | skipping to change at line 26 | |||
( | ( | |||
const Base<typename T1::elem_type,T1>& X, | const Base<typename T1::elem_type,T1>& X, | |||
const typename T1::elem_type tol = 0.0, | const typename T1::elem_type tol = 0.0, | |||
const char* method = "dc", | const char* method = "dc", | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'd')), "pinv(): unknown method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'd')), "pinv(): unknown method specified" ); | |||
return (sig == 'd') ? Op<T1, op_pinv>(X.get_ref(), tol, 1, 0) : Op<T1, op _pinv>(X.get_ref(), tol, 0, 0); | return (sig == 'd') ? Op<T1, op_pinv>(X.get_ref(), tol, 1, 0) : Op<T1, op _pinv>(X.get_ref(), tol, 0, 0); | |||
} | } | |||
template<typename T1> | template<typename T1> | |||
inline | inline | |||
bool | bool | |||
pinv | pinv | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
fn_solve.hpp | fn_solve.hpp | |||
---|---|---|---|---|
skipping to change at line 50 | skipping to change at line 50 | |||
( | ( | |||
const Base<typename T1::elem_type,T1>& A, | const Base<typename T1::elem_type,T1>& A, | |||
const Base<typename T1::elem_type,T2>& B, | const Base<typename T1::elem_type,T2>& B, | |||
const char* method, | const char* method, | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "solve(): unknown metho d specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "solve(): unknown metho d specified" ); | |||
return Glue<T1, T2, glue_solve>( A.get_ref(), B.get_ref(), ((sig == 'f') ? 0 : 1) ); | return Glue<T1, T2, glue_solve>( A.get_ref(), B.get_ref(), ((sig == 'f') ? 0 : 1) ); | |||
} | } | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
const Glue<T1, T2, glue_solve_tr> | const Glue<T1, T2, glue_solve_tr> | |||
solve | solve | |||
skipping to change at line 89 | skipping to change at line 89 | |||
( | ( | |||
const Op<T1, op_trimat>& A, | const Op<T1, op_trimat>& A, | |||
const Base<typename T1::elem_type,T2>& B, | const Base<typename T1::elem_type,T2>& B, | |||
const char* method, | const char* method, | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'f')), "solve(): unknown metho d specified" ); | arma_debug_check( ((sig != 's') && (sig != 'f')), "solve(): unknown metho d specified" ); | |||
return Glue<T1, T2, glue_solve_tr>(A.m, B.get_ref(), A.aux_uword_a); | return Glue<T1, T2, glue_solve_tr>(A.m, B.get_ref(), A.aux_uword_a); | |||
} | } | |||
template<typename T1, typename T2> | template<typename T1, typename T2> | |||
inline | inline | |||
bool | bool | |||
solve | solve | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
fn_svd.hpp | fn_svd.hpp | |||
---|---|---|---|---|
skipping to change at line 84 | skipping to change at line 84 | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
arma_debug_check | arma_debug_check | |||
( | ( | |||
( ((void*)(&U) == (void*)(&S)) || (&U == &V) || ((void*)(&S) == (void*) (&V)) ), | ( ((void*)(&U) == (void*)(&S)) || (&U == &V) || ((void*)(&S) == (void*) (&V)) ), | |||
"svd(): two or more output objects are the same object" | "svd(): two or more output objects are the same object" | |||
); | ); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'd')), "svd(): unknown method specified" ); | arma_debug_check( ((sig != 's') && (sig != 'd')), "svd(): unknown method specified" ); | |||
// auxlib::svd() makes an internal copy of X | // auxlib::svd() makes an internal copy of X | |||
const bool status = (sig == 'd') ? auxlib::svd_dc(U, S, V, X) : auxlib::s vd(U, S, V, X); | const bool status = (sig == 'd') ? auxlib::svd_dc(U, S, V, X) : auxlib::s vd(U, S, V, X); | |||
if(status == false) | if(status == false) | |||
{ | { | |||
U.reset(); | U.reset(); | |||
S.reset(); | S.reset(); | |||
skipping to change at line 131 | skipping to change at line 131 | |||
( ((void*)(&U) == (void*)(&S)) || (&U == &V) || ((void*)(&S) == (void*) (&V)) ), | ( ((void*)(&U) == (void*)(&S)) || (&U == &V) || ((void*)(&S) == (void*) (&V)) ), | |||
"svd_econ(): two or more output objects are the same object" | "svd_econ(): two or more output objects are the same object" | |||
); | ); | |||
arma_debug_check | arma_debug_check | |||
( | ( | |||
( (mode != 'l') && (mode != 'r') && (mode != 'b') ), | ( (mode != 'l') && (mode != 'r') && (mode != 'b') ), | |||
"svd_econ(): parameter 'mode' or 'side' is incorrect" | "svd_econ(): parameter 'mode' or 'side' is incorrect" | |||
); | ); | |||
const char sig = method[0]; | const char sig = (method != NULL) ? method[0] : char(0); | |||
arma_debug_check( ((sig != 's') && (sig != 'd')), "svd_econ(): unknown me thod specified" ); | arma_debug_check( ((sig != 's') && (sig != 'd')), "svd_econ(): unknown me thod specified" ); | |||
const bool status = ((mode == 'b') && (sig == 'd')) ? auxlib::svd_dc_econ (U, S, V, X) : auxlib::svd_econ(U, S, V, X, mode); | const bool status = ((mode == 'b') && (sig == 'd')) ? auxlib::svd_dc_econ (U, S, V, X) : auxlib::svd_econ(U, S, V, X, mode); | |||
if(status == false) | if(status == false) | |||
{ | { | |||
U.reset(); | U.reset(); | |||
S.reset(); | S.reset(); | |||
V.reset(); | V.reset(); | |||
skipping to change at line 165 | skipping to change at line 165 | |||
Mat<typename T1::elem_type>& V, | Mat<typename T1::elem_type>& V, | |||
const Base<typename T1::elem_type,T1>& X, | const Base<typename T1::elem_type,T1>& X, | |||
const char* side = "both", | const char* side = "both", | |||
const char* method = "dc", | const char* method = "dc", | |||
const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0 | |||
) | ) | |||
{ | { | |||
arma_extra_debug_sigprint(); | arma_extra_debug_sigprint(); | |||
arma_ignore(junk); | arma_ignore(junk); | |||
return svd_econ(U,S,V,X,side[0],method); | return svd_econ(U, S, V, X, ((side != NULL) ? side[0] : char(0)), method) ; | |||
} | } | |||
//! @} | //! @} | |||
End of changes. 3 change blocks. | ||||
3 lines changed or deleted | 3 lines changed or added | |||
forward_bones.hpp | forward_bones.hpp | |||
---|---|---|---|---|
// Copyright (C) 2008-2013 Conrad Sanderson | // Copyright (C) 2008-2014 Conrad Sanderson | |||
// Copyright (C) 2008-2012 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/. | |||
using std::cout; | using std::cout; | |||
using std::cerr; | using std::cerr; | |||
using std::endl; | using std::endl; | |||
using std::ios; | using std::ios; | |||
using std::size_t; | ||||
template<typename elem_type, typename derived> struct Base; | template<typename elem_type, typename derived> struct Base; | |||
template<typename elem_type, typename derived> struct BaseCube; | template<typename elem_type, typename derived> struct BaseCube; | |||
template<typename eT> class Mat; | template<typename eT> class Mat; | |||
template<typename eT> class Col; | template<typename eT> class Col; | |||
template<typename eT> class Row; | template<typename eT> class Row; | |||
template<typename eT> class Cube; | template<typename eT> class Cube; | |||
template<typename eT> class xvec_htrans; | template<typename eT> class xvec_htrans; | |||
template<typename oT> class field; | template<typename oT> class field; | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 3 lines changed or added | |||
memory.hpp | memory.hpp | |||
---|---|---|---|---|
// Copyright (C) 2012-2013 Conrad Sanderson | // Copyright (C) 2012-2014 Conrad Sanderson | |||
// Copyright (C) 2012-2013 NICTA (www.nicta.com.au) | // Copyright (C) 2012-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 memory | //! \addtogroup memory | |||
//! @{ | //! @{ | |||
class memory | class memory | |||
{ | { | |||
skipping to change at line 46 | skipping to change at line 46 | |||
return n_elem_mod; | return n_elem_mod; | |||
} | } | |||
template<typename eT> | template<typename eT> | |||
inline | inline | |||
arma_malloc | arma_malloc | |||
eT* | eT* | |||
memory::acquire(const uword n_elem) | memory::acquire(const uword n_elem) | |||
{ | { | |||
arma_debug_check | ||||
( | ||||
( n_elem > (std::numeric_limits<size_t>::max() / sizeof(eT)) ), | ||||
"arma::memory::acquire(): requested size is too large" | ||||
); | ||||
eT* out_memptr; | eT* out_memptr; | |||
#if defined(ARMA_USE_TBB_ALLOC) | #if defined(ARMA_USE_TBB_ALLOC) | |||
{ | { | |||
out_memptr = (eT *) scalable_malloc(sizeof(eT)*n_elem); | out_memptr = (eT *) scalable_malloc(sizeof(eT)*n_elem); | |||
} | } | |||
#elif defined(ARMA_USE_MKL_ALLOC) | #elif defined(ARMA_USE_MKL_ALLOC) | |||
{ | { | |||
out_memptr = (eT *) mkl_malloc( sizeof(eT)*n_elem, 128 ); | out_memptr = (eT *) mkl_malloc( sizeof(eT)*n_elem, 128 ); | |||
} | } | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 8 lines changed or added | |||