Hello community, here is the log from the commit of package armadillo for openSUSE:Factory checked in at 2020-01-06 15:21:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/armadillo (Old) and /work/SRC/openSUSE:Factory/.armadillo.new.6675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "armadillo" Mon Jan 6 15:21:38 2020 rev:131 rq:761007 version:9.800.3 Changes: -------- --- /work/SRC/openSUSE:Factory/armadillo/armadillo.changes 2019-10-30 14:48:40.334236739 +0100 +++ /work/SRC/openSUSE:Factory/.armadillo.new.6675/armadillo.changes 2020-01-06 15:21:41.904465673 +0100 @@ -1,0 +2,6 @@ +Sat Jan 4 14:59:19 UTC 2020 - Atri Bhattacharya <badshah...@gmail.com> + +- Update to version 9.800.3: + * Minor bug fixes. + +------------------------------------------------------------------- Old: ---- armadillo-9.800.1.tar.xz New: ---- armadillo-9.800.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ armadillo.spec ++++++ --- /var/tmp/diff_new_pack.5v8gFj/_old 2020-01-06 15:21:42.580466023 +0100 +++ /var/tmp/diff_new_pack.5v8gFj/_new 2020-01-06 15:21:42.580466023 +0100 @@ -1,7 +1,7 @@ # # spec file for package armadillo # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,12 +18,12 @@ %define soname libarmadillo9 Name: armadillo -Version: 9.800.1 +Version: 9.800.3 Release: 0 Summary: C++ matrix library with interfaces to LAPACK and ATLAS License: Apache-2.0 Group: Development/Libraries/C and C++ -Url: http://arma.sourceforge.net/ +URL: http://arma.sourceforge.net/ Source: http://downloads.sourceforge.net/arma/%{name}-%{version}.tar.xz Source2: baselibs.conf BuildRequires: arpack-ng-devel ++++++ armadillo-9.800.1.tar.xz -> armadillo-9.800.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/CMakeLists.txt new/armadillo-9.800.3/CMakeLists.txt --- old/armadillo-9.800.1/CMakeLists.txt 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/CMakeLists.txt 2016-06-16 18:20:25.000000000 +0200 @@ -29,6 +29,14 @@ cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) +if(NOT (${CMAKE_MAJOR_VERSION} LESS 3)) + if(POLICY CMP0025) + # enable differentiation between vanilla Clang and AppleClang + cmake_policy(SET CMP0025 NEW) + message(STATUS "*** set cmake policy CMP0025 to NEW") + endif() +endif() + project(armadillo CXX C) include(CheckIncludeFileCXX) include(CheckLibraryExists) @@ -126,6 +134,14 @@ option(DETECT_HDF5 "Detect HDF5 and include HDF5 support, if found" ON) +option(ALLOW_OPENBLAS_MACOS "Allow detection of OpenBLAS on macOS" OFF) +## Example use on the command line: +## cmake -D ALLOW_OPENBLAS_MACOS=true . + +option(ALLOW_BLAS_LAPACK_MACOS "Allow detection of BLAS and LAPACK on macOS" OFF) +## Example use on the command line: +## cmake -D ALLOW_BLAS_LAPACK_MACOS=true . + if(WIN32) message(STATUS "") @@ -149,6 +165,8 @@ message(STATUS "CMAKE_COMPILER_IS_GNUCXX = ${CMAKE_COMPILER_IS_GNUCXX}" ) message(STATUS "BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" ) message(STATUS "DETECT_HDF5 = ${DETECT_HDF5}" ) +message(STATUS "ALLOW_OPENBLAS_MACOS = ${ALLOW_OPENBLAS_MACOS}" ) +message(STATUS "ALLOW_BLAS_LAPACK_MACOS = ${ALLOW_BLAS_LAPACK_MACOS}" ) ## @@ -158,18 +176,64 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake_aux/Modules/") if(APPLE) + message(STATUS "Detected macOS") set(ARMA_OS macos) - set(ARMA_USE_LAPACK true) - set(ARMA_USE_BLAS true) + set(ARMA_USE_LAPACK true) + set(ARMA_USE_BLAS true) + set(ARMA_USE_ACCELERATE true) + + if(ALLOW_OPENBLAS_MACOS) + include(ARMA_FindOpenBLAS) + message(STATUS "OpenBLAS_FOUND = ${OpenBLAS_FOUND}") + message(STATUS "") + message(STATUS "*** If use of OpenBLAS is causing problems,") + message(STATUS "*** rerun cmake with detection of OpenBLAS disabled:") + message(STATUS "*** cmake -D ALLOW_OPENBLAS_MACOS=false .") + message(STATUS "") + + if(OpenBLAS_FOUND) + set(ARMA_LIBS ${ARMA_LIBS} ${OpenBLAS_LIBRARIES}) + set(ARMA_USE_ACCELERATE false) + endif() + endif() - set(ARMA_LIBS ${ARMA_LIBS} "-framework Accelerate") # or "-framework accelerate" ? - message(STATUS "macOS detected. Added '-framework Accelerate' to compiler flags") + if(ALLOW_BLAS_LAPACK_MACOS) + include(ARMA_FindBLAS) + include(ARMA_FindLAPACK) + message(STATUS " BLAS_FOUND = ${BLAS_FOUND}" ) + message(STATUS "LAPACK_FOUND = ${LAPACK_FOUND}") + message(STATUS "") + message(STATUS "*** If use of BLAS and LAPACK is causing problems,") + message(STATUS "*** rerun cmake with detection of BLAS and LAPACK disabled:") + message(STATUS "*** cmake -D ALLOW_BLAS_LAPACK_MACOS=false .") + message(STATUS "") + + if(BLAS_FOUND AND LAPACK_FOUND) + set(ARMA_LIBS ${ARMA_LIBS} ${BLAS_LIBRARIES}) + set(ARMA_LIBS ${ARMA_LIBS} ${LAPACK_LIBRARIES}) + set(ARMA_USE_ACCELERATE false) + endif() + endif() - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") - message(STATUS "Clang compiler on macOS detected. Added '-stdlib=libc++' to compiler flags") + if(ARMA_USE_ACCELERATE) + set(ARMA_LIBS ${ARMA_LIBS} "-framework Accelerate") # or "-framework accelerate" ? + message(STATUS "Added '-framework Accelerate' to compiler flags") + endif() + + if(DEFINED CMAKE_CXX_COMPILER_ID) + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") + message(STATUS "Detected Clang compiler on macOS. Added '-stdlib=libc++' to compiler flags") + endif() + + if(NOT (${CMAKE_MAJOR_VERSION} LESS 3)) + if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") + message(STATUS "Detected AppleClang compiler on macOS. Added '-stdlib=libc++' to compiler flags") + endif() + endif() endif() set(CMAKE_MACOSX_RPATH 1) @@ -369,16 +433,32 @@ # NOTE: ARMA_USE_EXTERN_CXX11_RNG requires compiler support for thread_local and C++11 # NOTE: for Linux, this is available with gcc 4.8.3 onwards -# TODO: for macOS, thread_local is supoported in Xcode 8 (mid 2016 onwards) in C++11 mode +# NOTE: for macOS, thread_local is supoported in Xcode 8 (mid 2016 onwards) in C++11 mode if(DEFINED CMAKE_CXX_COMPILER_ID AND DEFINED CMAKE_CXX_COMPILER_VERSION) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4.8.3) set(ARMA_USE_EXTERN_CXX11_RNG true) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") message(STATUS "Detected gcc 4.8.3 or later. Added '-std=c++11' to compiler flags") + else() + if(NOT (${CMAKE_MAJOR_VERSION} LESS 3)) + + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 6.0) + set(ARMA_USE_EXTERN_CXX11_RNG true) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") + message(STATUS "Detected Clang 6.0 or later. Added '-std=c++14' to compiler flags") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 8.0) + set(ARMA_USE_EXTERN_CXX11_RNG true) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") + message(STATUS "Detected AppleClang 8.0 or later. Added '-std=c++14' to compiler flags") + endif() + + endif() endif() endif() +message(STATUS "ARMA_USE_EXTERN_CXX11_RNG = ${ARMA_USE_EXTERN_CXX11_RNG}") + message(STATUS "Copying ${PROJECT_SOURCE_DIR}/include/ to ${PROJECT_BINARY_DIR}/tmp/include/") file(COPY ${PROJECT_SOURCE_DIR}/include/ DESTINATION ${PROJECT_BINARY_DIR}/tmp/include/) @@ -413,8 +493,19 @@ if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") +else() + if(DEFINED CMAKE_CXX_COMPILER_ID) + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") + endif() + endif() endif() + message(STATUS "CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}" ) message(STATUS "CMAKE_SHARED_LINKER_FLAGS = ${CMAKE_SHARED_LINKER_FLAGS}") message(STATUS "CMAKE_REQUIRED_INCLUDES = ${CMAKE_REQUIRED_INCLUDES}" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/README.md new/armadillo-9.800.3/README.md --- old/armadillo-9.800.1/README.md 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/README.md 2016-06-16 18:20:25.000000000 +0200 @@ -106,17 +106,18 @@ ### 4: Compilers and External Dependencies -Armadillo makes extensive use of template meta-programming, recursive templates -and template based function overloading. As such, C++ compilers which do not -fully implement the C++ standard may not work correctly. +Armadillo makes extensive use of template meta-programming and many other +advanced C++ features. As such, C++ compilers which do not fully implement +the C++ standard may not work correctly. The functionality of Armadillo is partly dependent on other libraries: -LAPACK, BLAS, ARPACK and SuperLU. The LAPACK and BLAS libraries are -used for dense matrices, while the ARPACK and SuperLU libraries are -used for sparse matrices. Armadillo can work without these libraries, -but its functionality will be reduced. In particular, basic functionality -will be available (eg. matrix addition and multiplication), but things -like eigen decomposition or matrix inversion will not be. +LAPACK, BLAS (preferably OpenBLAS), ARPACK and SuperLU. +LAPACK and BLAS are used for dense matrices, +while ARPACK and SuperLU are used for sparse matrices. + +Armadillo can work without the above libraries, but its functionality will be reduced. +Basic functionality will be available (eg. matrix addition and multiplication), +but operations like eigen decomposition or matrix inversion will not be. Matrix multiplication (mainly for big matrices) may not be as fast. As Armadillo is a template library, we recommended that optimisation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/cmake_aux/Modules/ARMA_FindOpenBLAS.cmake new/armadillo-9.800.3/cmake_aux/Modules/ARMA_FindOpenBLAS.cmake --- old/armadillo-9.800.1/cmake_aux/Modules/ARMA_FindOpenBLAS.cmake 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/cmake_aux/Modules/ARMA_FindOpenBLAS.cmake 2016-06-16 18:20:25.000000000 +0200 @@ -10,7 +10,7 @@ foreach (OpenBLAS_NAME ${OpenBLAS_NAMES}) find_library(${OpenBLAS_NAME}_LIBRARY NAMES ${OpenBLAS_NAME} - PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /lib64 /lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64 /opt/local/lib + PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /lib64 /lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64 /opt/local/lib /usr/lib/openblas/ /usr/lib/openblas/lib /usr/local/opt/openblas/lib /opt/local/lib/openblas /opt/local/lib/openblas/lib ) set(OpenBLAS_TMP_LIBRARY ${${OpenBLAS_NAME}_LIBRARY}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/docs.html new/armadillo-9.800.3/docs.html --- old/armadillo-9.800.1/docs.html 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/docs.html 2016-06-16 18:20:25.000000000 +0200 @@ -18088,7 +18088,8 @@ </td> <td style="vertical-align: top;"> -Disable use of so-called "hidden arguments" when calling BLAS and LAPACK functions +Disable use of so-called "hidden arguments" when calling BLAS and LAPACK functions. +May be necessary when using Armadillo in conjunction with broken MKL headers (eg. if you have <code>#include "mkl_lapack.h"</code> in your code). </td> </tr> <tr> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/Mat_bones.hpp new/armadillo-9.800.3/include/armadillo_bits/Mat_bones.hpp --- old/armadillo-9.800.1/include/armadillo_bits/Mat_bones.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/Mat_bones.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -554,7 +554,7 @@ inline row_iterator(); inline row_iterator(const row_iterator& X); - inline row_iterator(Mat<eT>& in_M, const uword in_row); + inline row_iterator(Mat<eT>& in_M, const uword in_row, const uword in_col); inline arma_warn_unused eT& operator* (); @@ -576,7 +576,6 @@ typedef eT& reference; arma_aligned Mat<eT>* M; - arma_aligned eT* current_ptr; arma_aligned uword current_row; arma_aligned uword current_col; }; @@ -589,7 +588,7 @@ inline const_row_iterator(); inline const_row_iterator(const row_iterator& X); inline const_row_iterator(const const_row_iterator& X); - inline const_row_iterator(const Mat<eT>& in_M, const uword in_row); + inline const_row_iterator(const Mat<eT>& in_M, const uword in_row, const uword in_col); inline arma_warn_unused const eT& operator*() const; @@ -611,7 +610,6 @@ typedef const eT& reference; arma_aligned const Mat<eT>* M; - arma_aligned const eT* current_ptr; arma_aligned uword current_row; arma_aligned uword current_col; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/Mat_meat.hpp new/armadillo-9.800.3/include/armadillo_bits/Mat_meat.hpp --- old/armadillo-9.800.1/include/armadillo_bits/Mat_meat.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/Mat_meat.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -7796,7 +7796,6 @@ inline Mat<eT>::row_iterator::row_iterator() : M (NULL) - , current_ptr(NULL) , current_row(0 ) , current_col(0 ) { @@ -7810,7 +7809,6 @@ inline Mat<eT>::row_iterator::row_iterator(const row_iterator& X) : M (X.M ) - , current_ptr(X.current_ptr) , current_row(X.current_row) , current_col(X.current_col) { @@ -7821,11 +7819,10 @@ template<typename eT> inline -Mat<eT>::row_iterator::row_iterator(Mat<eT>& in_M, const uword in_row) - : M (&in_M ) - , current_ptr(&(in_M.at(in_row,0))) - , current_row(in_row ) - , current_col(0 ) +Mat<eT>::row_iterator::row_iterator(Mat<eT>& in_M, const uword in_row, const uword in_col) + : M (&in_M ) + , current_row(in_row) + , current_col(in_col) { arma_extra_debug_sigprint(); } @@ -7838,7 +7835,7 @@ eT& Mat<eT>::row_iterator::operator*() { - return (*current_ptr); + return M->at(current_row,current_col); } @@ -7854,12 +7851,6 @@ { current_col = 0; current_row++; - - current_ptr = &(M->at(current_row, 0)); - } - else - { - current_ptr += M->n_rows; } return *this; @@ -7890,8 +7881,6 @@ if(current_col > 0) { current_col--; - - current_ptr -= M->n_rows; } else { @@ -7899,8 +7888,6 @@ { current_col = M->n_cols - 1; current_row--; - - current_ptr = &(M->at(current_row, current_col)); } } @@ -7930,7 +7917,7 @@ bool Mat<eT>::row_iterator::operator!=(const typename Mat<eT>::row_iterator& X) const { - return (current_ptr != X.current_ptr); + return ( (current_row != X.current_row) || (current_col != X.current_col) ); } @@ -7941,7 +7928,7 @@ bool Mat<eT>::row_iterator::operator==(const typename Mat<eT>::row_iterator& X) const { - return (current_ptr == X.current_ptr); + return ( (current_row == X.current_row) && (current_col == X.current_col) ); } @@ -7952,7 +7939,7 @@ bool Mat<eT>::row_iterator::operator!=(const typename Mat<eT>::const_row_iterator& X) const { - return (current_ptr != X.current_ptr); + return ( (current_row != X.current_row) || (current_col != X.current_col) ); } @@ -7963,7 +7950,7 @@ bool Mat<eT>::row_iterator::operator==(const typename Mat<eT>::const_row_iterator& X) const { - return (current_ptr == X.current_ptr); + return ( (current_row == X.current_row) && (current_col == X.current_col) ); } @@ -7972,7 +7959,6 @@ inline Mat<eT>::const_row_iterator::const_row_iterator() : M (NULL) - , current_ptr(NULL) , current_row(0 ) , current_col(0 ) { @@ -7986,7 +7972,6 @@ inline Mat<eT>::const_row_iterator::const_row_iterator(const typename Mat<eT>::row_iterator& X) : M (X.M ) - , current_ptr(X.current_ptr) , current_row(X.current_row) , current_col(X.current_col) { @@ -7999,7 +7984,6 @@ inline Mat<eT>::const_row_iterator::const_row_iterator(const typename Mat<eT>::const_row_iterator& X) : M (X.M ) - , current_ptr(X.current_ptr) , current_row(X.current_row) , current_col(X.current_col) { @@ -8010,11 +7994,10 @@ template<typename eT> inline -Mat<eT>::const_row_iterator::const_row_iterator(const Mat<eT>& in_M, const uword in_row) - : M (&in_M ) - , current_ptr(&(in_M.at(in_row,0))) - , current_row(in_row ) - , current_col(0 ) +Mat<eT>::const_row_iterator::const_row_iterator(const Mat<eT>& in_M, const uword in_row, const uword in_col) + : M (&in_M ) + , current_row(in_row) + , current_col(in_col) { arma_extra_debug_sigprint(); } @@ -8027,7 +8010,7 @@ const eT& Mat<eT>::const_row_iterator::operator*() const { - return (*current_ptr); + return M->at(current_row,current_col); } @@ -8043,12 +8026,6 @@ { current_col = 0; current_row++; - - current_ptr = &(M->at(current_row, 0)); - } - else - { - current_ptr += M->n_rows; } return *this; @@ -8079,8 +8056,6 @@ if(current_col > 0) { current_col--; - - current_ptr -= M->n_rows; } else { @@ -8088,8 +8063,6 @@ { current_col = M->n_cols - 1; current_row--; - - current_ptr = &(M->at(current_row, current_col)); } } @@ -8119,7 +8092,7 @@ bool Mat<eT>::const_row_iterator::operator!=(const typename Mat<eT>::row_iterator& X) const { - return (current_ptr != X.current_ptr); + return ( (current_row != X.current_row) || (current_col != X.current_col) ); } @@ -8130,7 +8103,7 @@ bool Mat<eT>::const_row_iterator::operator==(const typename Mat<eT>::row_iterator& X) const { - return (current_ptr == X.current_ptr); + return ( (current_row == X.current_row) && (current_col == X.current_col) ); } @@ -8141,7 +8114,7 @@ bool Mat<eT>::const_row_iterator::operator!=(const typename Mat<eT>::const_row_iterator& X) const { - return (current_ptr != X.current_ptr); + return ( (current_row != X.current_row) || (current_col != X.current_col) ); } @@ -8152,7 +8125,7 @@ bool Mat<eT>::const_row_iterator::operator==(const typename Mat<eT>::const_row_iterator& X) const { - return (current_ptr == X.current_ptr); + return ( (current_row == X.current_row) && (current_col == X.current_col) ); } @@ -8692,7 +8665,7 @@ arma_debug_check( (row_num >= n_rows), "Mat::begin_row(): index out of bounds" ); - return typename Mat<eT>::row_iterator(*this, row_num); + return typename Mat<eT>::row_iterator(*this, row_num, uword(0)); } @@ -8706,7 +8679,7 @@ arma_debug_check( (row_num >= n_rows), "Mat::begin_row(): index out of bounds" ); - return typename Mat<eT>::const_row_iterator(*this, row_num); + return typename Mat<eT>::const_row_iterator(*this, row_num, uword(0)); } @@ -8720,7 +8693,7 @@ arma_debug_check( (row_num >= n_rows), "Mat::end_row(): index out of bounds" ); - return typename Mat<eT>::row_iterator(*this, row_num + 1); + return typename Mat<eT>::row_iterator(*this, (row_num + uword(1)), 0); } @@ -8734,7 +8707,7 @@ arma_debug_check( (row_num >= n_rows), "Mat::end_row(): index out of bounds" ); - return typename Mat<eT>::const_row_iterator(*this, row_num + 1); + return typename Mat<eT>::const_row_iterator(*this, (row_num + uword(1)), 0); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/arma_ostream_bones.hpp new/armadillo-9.800.3/include/armadillo_bits/arma_ostream_bones.hpp --- old/armadillo-9.800.1/include/armadillo_bits/arma_ostream_bones.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/arma_ostream_bones.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -45,7 +45,7 @@ template<typename eT> inline static std::streamsize modify_stream(std::ostream& o, const eT* data, const uword n_elem); template<typename T> inline static std::streamsize modify_stream(std::ostream& o, const std::complex<T>* data, const uword n_elem); template<typename eT> inline static std::streamsize modify_stream(std::ostream& o, typename SpMat<eT>::const_iterator begin, const uword n_elem, const typename arma_not_cx<eT>::result* junk = 0); - template<typename T> inline static std::streamsize modify_stream(std::ostream& o, typename SpMat<T>::const_iterator begin, const uword n_elem, const typename arma_cx_only<T>::result* junk = 0); + template<typename T> inline static std::streamsize modify_stream(std::ostream& o, typename SpMat< T>::const_iterator begin, const uword n_elem, const typename arma_cx_only<T>::result* junk = 0); template<typename eT> inline static void print_elem_zero(std::ostream& o, const bool modify); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/arma_version.hpp new/armadillo-9.800.3/include/armadillo_bits/arma_version.hpp --- old/armadillo-9.800.1/include/armadillo_bits/arma_version.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/arma_version.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -21,7 +21,7 @@ #define ARMA_VERSION_MAJOR 9 #define ARMA_VERSION_MINOR 800 -#define ARMA_VERSION_PATCH 1 +#define ARMA_VERSION_PATCH 3 #define ARMA_VERSION_NAME "Horizon Scraper" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/auxlib_meat.hpp new/armadillo-9.800.3/include/armadillo_bits/auxlib_meat.hpp --- old/armadillo-9.800.1/include/armadillo_bits/auxlib_meat.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/auxlib_meat.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -6149,6 +6149,10 @@ const eT* X_mem = X.memptr(); + const T tol = T(10000)*std::numeric_limits<T>::epsilon(); // allow some leeway + + if(std::abs(X_mem[0].imag()) > tol) { return false; } + const eT& A = X_mem[Nm1 ]; // bottom-left corner (ie. last value in first column) const eT& B = X_mem[Nm1*N]; // top-right corner (ie. first value in last column) @@ -6158,8 +6162,6 @@ const T delta_real = std::abs(A.real() - B.real()); const T delta_imag = std::abs(A.imag() + B.imag()); // take into account the conjugate - const T tol = T(10000)*std::numeric_limits<T>::epsilon(); // allow some leeway - const bool okay_real = ( (delta_real <= tol) || (delta_real <= (C_real * tol)) ); const bool okay_imag = ( (delta_imag <= tol) || (delta_imag <= (C_imag * tol)) ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/compiler_setup.hpp new/armadillo-9.800.3/include/armadillo_bits/compiler_setup.hpp --- old/armadillo-9.800.1/include/armadillo_bits/compiler_setup.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/compiler_setup.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -142,8 +142,8 @@ // #undef ARMA_HAVE_POSIX_MEMALIGN // NOTE: posix_memalign() is available since macOS 10.6 (late 2009 onwards) - #undef ARMA_USE_EXTERN_CXX11_RNG - // TODO: thread_local seems to work in Apple clang since Xcode 8 (mid 2016 onwards) + // #undef ARMA_USE_EXTERN_CXX11_RNG + // NOTE: thread_local seems to work in Apple clang since Xcode 8 (mid 2016 onwards) // NOTE: https://stackoverflow.com/questions/28094794/why-does-apple-clang-disallow-c11-thread-local-when-official-clang-supports #endif @@ -399,7 +399,7 @@ #pragma warning(disable: 4127) // conditional expression is constant #pragma warning(disable: 4180) // qualifier has no meaning - #pragma warning(disable: 4244) // possible loss of data when converting types + #pragma warning(disable: 4244) // possible loss of data when converting types (see also 4305) #pragma warning(disable: 4510) // default constructor could not be generated #pragma warning(disable: 4511) // copy constructor can't be generated #pragma warning(disable: 4512) // assignment operator can't be generated diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/config.hpp new/armadillo-9.800.3/include/armadillo_bits/config.hpp --- old/armadillo-9.800.1/include/armadillo_bits/config.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/config.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -115,7 +115,7 @@ // #define ARMA_64BIT_WORD //// Uncomment the above line if you require matrices/vectors capable of holding more than 4 billion elements. //// Your machine and compiler must have support for 64 bit integers (eg. via "long" or "long long"). -//// Note that ARMA_64BIT_WORD is automatically enabled when a C++11 compiler is detected. +//// Note that ARMA_64BIT_WORD is automatically enabled when a C++11 compiler is detected and std::size_t has 64 bits. #endif #if !defined(ARMA_USE_HDF5) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/config.hpp.cmake new/armadillo-9.800.3/include/armadillo_bits/config.hpp.cmake --- old/armadillo-9.800.1/include/armadillo_bits/config.hpp.cmake 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/config.hpp.cmake 2016-06-16 18:20:25.000000000 +0200 @@ -115,7 +115,7 @@ // #define ARMA_64BIT_WORD //// Uncomment the above line if you require matrices/vectors capable of holding more than 4 billion elements. //// Your machine and compiler must have support for 64 bit integers (eg. via "long" or "long long"). -//// Note that ARMA_64BIT_WORD is automatically enabled when a C++11 compiler is detected. +//// Note that ARMA_64BIT_WORD is automatically enabled when a C++11 compiler is detected and std::size_t has 64 bits. #endif #if !defined(ARMA_USE_HDF5) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/def_lapack.hpp new/armadillo-9.800.3/include/armadillo_bits/def_lapack.hpp --- old/armadillo-9.800.1/include/armadillo_bits/def_lapack.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/def_lapack.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -510,10 +510,10 @@ void arma_fortran(arma_zgetrf)(const blas_int* m, const blas_int* n, blas_cxd* a, const blas_int* lda, blas_int* ipiv, blas_int* info); // solve system of linear equations using pre-computed LU decomposition - void arma_fortran(arma_sgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, float* a, const blas_int* lda, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info, const blas_len trans_len); - void arma_fortran(arma_dgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, double* a, const blas_int* lda, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info, const blas_len trans_len); - void arma_fortran(arma_cgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, blas_cxf* a, const blas_int* lda, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info, const blas_len trans_len); - void arma_fortran(arma_zgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, blas_cxd* a, const blas_int* lda, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info, const blas_len trans_len); + void arma_fortran(arma_sgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const float* a, const blas_int* lda, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info, const blas_len trans_len); + void arma_fortran(arma_dgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const double* a, const blas_int* lda, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info, const blas_len trans_len); + void arma_fortran(arma_cgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const blas_cxf* a, const blas_int* lda, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info, const blas_len trans_len); + void arma_fortran(arma_zgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const blas_cxd* a, const blas_int* lda, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info, const blas_len trans_len); // matrix inversion (using pre-computed LU decomposition) void arma_fortran(arma_sgetri)(const blas_int* n, float* a, const blas_int* lda, const blas_int* ipiv, float* work, const blas_int* lwork, blas_int* info); @@ -676,10 +676,10 @@ void arma_fortran(arma_zgbtrf)(const blas_int* m, const blas_int* n, const blas_int* kl, const blas_int* ku, blas_cxd* ab, const blas_int* ldab, blas_int* ipiv, blas_int* info); // solve system of linear equations using pre-computed LU decomposition (general band matrix) - void arma_fortran(arma_sgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, float* ab, const blas_int* ldab, blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info, blas_len trans_len); - void arma_fortran(arma_dgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, double* ab, const blas_int* ldab, blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info, blas_len trans_len); - void arma_fortran(arma_cgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, blas_cxf* ab, const blas_int* ldab, blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info, blas_len trans_len); - void arma_fortran(arma_zgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, blas_cxd* ab, const blas_int* ldab, blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info, blas_len trans_len); + void arma_fortran(arma_sgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const float* ab, const blas_int* ldab, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info, blas_len trans_len); + void arma_fortran(arma_dgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const double* ab, const blas_int* ldab, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info, blas_len trans_len); + void arma_fortran(arma_cgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const blas_cxf* ab, const blas_int* ldab, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info, blas_len trans_len); + void arma_fortran(arma_zgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const blas_cxd* ab, const blas_int* ldab, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info, blas_len trans_len); // solve system of linear equations (general band matrix) void arma_fortran(arma_sgbsv)(const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, float* ab, const blas_int* ldab, blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info); @@ -821,10 +821,10 @@ void arma_fortran(arma_zgetrf)(const blas_int* m, const blas_int* n, blas_cxd* a, const blas_int* lda, blas_int* ipiv, blas_int* info); // solve system of linear equations using pre-computed LU decomposition - void arma_fortran(arma_sgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, float* a, const blas_int* lda, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info); - void arma_fortran(arma_dgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, double* a, const blas_int* lda, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info); - void arma_fortran(arma_cgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, blas_cxf* a, const blas_int* lda, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info); - void arma_fortran(arma_zgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, blas_cxd* a, const blas_int* lda, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info); + void arma_fortran(arma_sgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const float* a, const blas_int* lda, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info); + void arma_fortran(arma_dgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const double* a, const blas_int* lda, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info); + void arma_fortran(arma_cgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const blas_cxf* a, const blas_int* lda, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info); + void arma_fortran(arma_zgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const blas_cxd* a, const blas_int* lda, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info); // matrix inversion (using pre-computed LU decomposition) void arma_fortran(arma_sgetri)(const blas_int* n, float* a, const blas_int* lda, const blas_int* ipiv, float* work, const blas_int* lwork, blas_int* info); @@ -987,10 +987,10 @@ void arma_fortran(arma_zgbtrf)(const blas_int* m, const blas_int* n, const blas_int* kl, const blas_int* ku, blas_cxd* ab, const blas_int* ldab, blas_int* ipiv, blas_int* info); // solve system of linear equations using pre-computed LU decomposition (general band matrix) - void arma_fortran(arma_sgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, float* ab, const blas_int* ldab, blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info); - void arma_fortran(arma_dgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, double* ab, const blas_int* ldab, blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info); - void arma_fortran(arma_cgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, blas_cxf* ab, const blas_int* ldab, blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info); - void arma_fortran(arma_zgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, blas_cxd* ab, const blas_int* ldab, blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info); + void arma_fortran(arma_sgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const float* ab, const blas_int* ldab, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info); + void arma_fortran(arma_dgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const double* ab, const blas_int* ldab, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info); + void arma_fortran(arma_cgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const blas_cxf* ab, const blas_int* ldab, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info); + void arma_fortran(arma_zgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const blas_cxd* ab, const blas_int* ldab, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info); // solve system of linear equations (general band matrix) void arma_fortran(arma_sgbsv)(const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, float* ab, const blas_int* ldab, blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/diskio_bones.hpp new/armadillo-9.800.3/include/armadillo_bits/diskio_bones.hpp --- old/armadillo-9.800.1/include/armadillo_bits/diskio_bones.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/diskio_bones.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -31,7 +31,9 @@ template<typename eT> inline arma_cold static std::string gen_txt_header(const Cube<eT>&); template<typename eT> inline arma_cold static std::string gen_bin_header(const Cube<eT>&); - inline arma_cold static file_type guess_file_type(std::istream& f); + inline arma_deprecated static file_type guess_file_type(std::istream& f); + + inline arma_cold static file_type guess_file_type_internal(std::istream& f); inline arma_cold static std::string gen_tmp_name(const std::string& x); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/diskio_meat.hpp new/armadillo-9.800.3/include/armadillo_bits/diskio_meat.hpp --- old/armadillo-9.800.1/include/armadillo_bits/diskio_meat.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/diskio_meat.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -213,12 +213,24 @@ inline -arma_cold +arma_deprecated file_type diskio::guess_file_type(std::istream& f) { arma_extra_debug_sigprint(); + return diskio::guess_file_type_internal(f); + } + + + +inline +arma_cold +file_type +diskio::guess_file_type_internal(std::istream& f) + { + arma_extra_debug_sigprint(); + f.clear(); const std::fstream::pos_type pos1 = f.tellg(); @@ -2164,7 +2176,7 @@ } else { - const file_type ft = guess_file_type(f); + const file_type ft = guess_file_type_internal(f); switch(ft) { @@ -3844,7 +3856,7 @@ } else { - const file_type ft = guess_file_type(f); + const file_type ft = guess_file_type_internal(f); switch(ft) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/sp_auxlib_meat.hpp new/armadillo-9.800.3/include/armadillo_bits/sp_auxlib_meat.hpp --- old/armadillo-9.800.1/include/armadillo_bits/sp_auxlib_meat.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/sp_auxlib_meat.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -1534,6 +1534,12 @@ ++n_check; } + else + { + const eT A = (*it); + + if(std::abs(A.imag()) > tol) { return false; } + } ++it; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/subview_bones.hpp new/armadillo-9.800.3/include/armadillo_bits/subview_bones.hpp --- old/armadillo-9.800.1/include/armadillo_bits/subview_bones.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/subview_bones.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -284,7 +284,6 @@ typedef eT& reference; arma_aligned Mat<eT>* M; - arma_aligned eT* current_ptr; arma_aligned uword current_row; arma_aligned uword current_col; @@ -319,7 +318,6 @@ typedef const eT& reference; arma_aligned const Mat<eT>* M; - arma_aligned const eT* current_ptr; arma_aligned uword current_row; arma_aligned uword current_col; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/include/armadillo_bits/subview_meat.hpp new/armadillo-9.800.3/include/armadillo_bits/subview_meat.hpp --- old/armadillo-9.800.1/include/armadillo_bits/subview_meat.hpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/include/armadillo_bits/subview_meat.hpp 2016-06-16 18:20:25.000000000 +0200 @@ -2756,7 +2756,6 @@ inline subview<eT>::row_iterator::row_iterator() : M (NULL) - , current_ptr(NULL) , current_row(0 ) , current_col(0 ) , aux_col1 (0 ) @@ -2772,7 +2771,6 @@ inline subview<eT>::row_iterator::row_iterator(const row_iterator& X) : M (X.M ) - , current_ptr(X.current_ptr) , current_row(X.current_row) , current_col(X.current_col) , aux_col1 (X.aux_col1 ) @@ -2787,7 +2785,6 @@ inline subview<eT>::row_iterator::row_iterator(subview<eT>& in_sv, const uword in_row, const uword in_col) : M (&(const_cast< Mat<eT>& >(in_sv.m))) - , current_ptr(&(M->at(in_row,in_col)) ) , current_row(in_row ) , current_col(in_col ) , aux_col1 (in_sv.aux_col1 ) @@ -2804,7 +2801,7 @@ eT& subview<eT>::row_iterator::operator*() { - return (*current_ptr); + return M->at(current_row,current_col); } @@ -2820,12 +2817,6 @@ { current_col = aux_col1; current_row++; - - current_ptr = &( (*M).at(current_row,current_col) ); - } - else - { - current_ptr += (*M).n_rows; } return *this; @@ -2854,7 +2845,7 @@ bool subview<eT>::row_iterator::operator==(const row_iterator& rhs) const { - return (current_ptr == rhs.current_ptr); + return ( (current_row == rhs.current_row) && (current_col == rhs.current_col) ); } @@ -2865,7 +2856,7 @@ bool subview<eT>::row_iterator::operator!=(const row_iterator& rhs) const { - return (current_ptr != rhs.current_ptr); + return ( (current_row != rhs.current_row) || (current_col != rhs.current_col) ); } @@ -2876,7 +2867,7 @@ bool subview<eT>::row_iterator::operator==(const const_row_iterator& rhs) const { - return (current_ptr == rhs.current_ptr); + return ( (current_row == rhs.current_row) && (current_col == rhs.current_col) ); } @@ -2887,7 +2878,7 @@ bool subview<eT>::row_iterator::operator!=(const const_row_iterator& rhs) const { - return (current_ptr != rhs.current_ptr); + return ( (current_row != rhs.current_row) || (current_col != rhs.current_col) ); } @@ -2902,7 +2893,6 @@ inline subview<eT>::const_row_iterator::const_row_iterator() : M (NULL) - , current_ptr(NULL) , current_row(0 ) , current_col(0 ) , aux_col1 (0 ) @@ -2918,7 +2908,6 @@ inline subview<eT>::const_row_iterator::const_row_iterator(const row_iterator& X) : M (X.M ) - , current_ptr(X.current_ptr) , current_row(X.current_row) , current_col(X.current_col) , aux_col1 (X.aux_col1 ) @@ -2933,7 +2922,6 @@ inline subview<eT>::const_row_iterator::const_row_iterator(const const_row_iterator& X) : M (X.M ) - , current_ptr(X.current_ptr) , current_row(X.current_row) , current_col(X.current_col) , aux_col1 (X.aux_col1 ) @@ -2948,7 +2936,6 @@ inline subview<eT>::const_row_iterator::const_row_iterator(const subview<eT>& in_sv, const uword in_row, const uword in_col) : M (&(in_sv.m) ) - , current_ptr(&(M->at(in_row,in_col)) ) , current_row(in_row ) , current_col(in_col ) , aux_col1 (in_sv.aux_col1 ) @@ -2965,7 +2952,7 @@ const eT& subview<eT>::const_row_iterator::operator*() const { - return (*current_ptr); + return M->at(current_row,current_col); } @@ -2981,12 +2968,6 @@ { current_col = aux_col1; current_row++; - - current_ptr = &( (*M).at(current_row,current_col) ); - } - else - { - current_ptr += (*M).n_rows; } return *this; @@ -3015,7 +2996,7 @@ bool subview<eT>::const_row_iterator::operator==(const row_iterator& rhs) const { - return (current_ptr == rhs.current_ptr); + return ( (current_row == rhs.current_row) && (current_col == rhs.current_col) ); } @@ -3026,7 +3007,7 @@ bool subview<eT>::const_row_iterator::operator!=(const row_iterator& rhs) const { - return (current_ptr != rhs.current_ptr); + return ( (current_row != rhs.current_row) || (current_col != rhs.current_col) ); } @@ -3037,7 +3018,7 @@ bool subview<eT>::const_row_iterator::operator==(const const_row_iterator& rhs) const { - return (current_ptr == rhs.current_ptr); + return ( (current_row == rhs.current_row) && (current_col == rhs.current_col) ); } @@ -3048,7 +3029,7 @@ bool subview<eT>::const_row_iterator::operator!=(const const_row_iterator& rhs) const { - return (current_ptr != rhs.current_ptr); + return ( (current_row != rhs.current_row) || (current_col != rhs.current_col) ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/src/wrapper1.cpp new/armadillo-9.800.3/src/wrapper1.cpp --- old/armadillo-9.800.1/src/wrapper1.cpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/src/wrapper1.cpp 2016-06-16 18:20:25.000000000 +0200 @@ -223,22 +223,22 @@ - void arma_fortran_with_prefix(arma_sgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, float* a, const blas_int* lda, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info) + void arma_fortran_with_prefix(arma_sgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const float* a, const blas_int* lda, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info) { arma_fortran_sans_prefix(arma_sgetrs)(trans, n, nrhs, a, lda, ipiv, b, ldb, info); } - void arma_fortran_with_prefix(arma_dgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, double* a, const blas_int* lda, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info) + void arma_fortran_with_prefix(arma_dgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const double* a, const blas_int* lda, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info) { arma_fortran_sans_prefix(arma_dgetrs)(trans, n, nrhs, a, lda, ipiv, b, ldb, info); } - void arma_fortran_with_prefix(arma_cgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, blas_cxf* a, const blas_int* lda, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info) + void arma_fortran_with_prefix(arma_cgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const blas_cxf* a, const blas_int* lda, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info) { arma_fortran_sans_prefix(arma_cgetrs)(trans, n, nrhs, a, lda, ipiv, b, ldb, info); } - void arma_fortran_with_prefix(arma_zgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, blas_cxd* a, const blas_int* lda, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info) + void arma_fortran_with_prefix(arma_zgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const blas_cxd* a, const blas_int* lda, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info) { arma_fortran_sans_prefix(arma_zgetrs)(trans, n, nrhs, a, lda, ipiv, b, ldb, info); } @@ -757,22 +757,22 @@ - void arma_fortran_with_prefix(arma_sgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, float* ab, const blas_int* ldab, blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info) + void arma_fortran_with_prefix(arma_sgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const float* ab, const blas_int* ldab, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info) { arma_fortran_sans_prefix(arma_sgbtrs)(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info); } - void arma_fortran_with_prefix(arma_dgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, double* ab, const blas_int* ldab, blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info) + void arma_fortran_with_prefix(arma_dgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const double* ab, const blas_int* ldab, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info) { arma_fortran_sans_prefix(arma_dgbtrs)(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info); } - void arma_fortran_with_prefix(arma_cgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, blas_cxf* ab, const blas_int* ldab, blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info) + void arma_fortran_with_prefix(arma_cgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const blas_cxf* ab, const blas_int* ldab, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info) { arma_fortran_sans_prefix(arma_cgbtrs)(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info); } - void arma_fortran_with_prefix(arma_zgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, blas_cxd* ab, const blas_int* ldab, blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info) + void arma_fortran_with_prefix(arma_zgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const blas_cxd* ab, const blas_int* ldab, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info) { arma_fortran_sans_prefix(arma_zgbtrs)(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-9.800.1/src/wrapper2.cpp new/armadillo-9.800.3/src/wrapper2.cpp --- old/armadillo-9.800.1/src/wrapper2.cpp 2016-06-16 18:20:23.000000000 +0200 +++ new/armadillo-9.800.3/src/wrapper2.cpp 2016-06-16 18:20:25.000000000 +0200 @@ -175,22 +175,22 @@ - void arma_fortran_with_prefix(arma_sgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, float* a, const blas_int* lda, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info, const blas_len trans_len) + void arma_fortran_with_prefix(arma_sgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const float* a, const blas_int* lda, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info, const blas_len trans_len) { arma_fortran_sans_prefix(arma_sgetrs)(trans, n, nrhs, a, lda, ipiv, b, ldb, info, trans_len); } - void arma_fortran_with_prefix(arma_dgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, double* a, const blas_int* lda, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info, const blas_len trans_len) + void arma_fortran_with_prefix(arma_dgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const double* a, const blas_int* lda, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info, const blas_len trans_len) { arma_fortran_sans_prefix(arma_dgetrs)(trans, n, nrhs, a, lda, ipiv, b, ldb, info, trans_len); } - void arma_fortran_with_prefix(arma_cgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, blas_cxf* a, const blas_int* lda, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info, const blas_len trans_len) + void arma_fortran_with_prefix(arma_cgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const blas_cxf* a, const blas_int* lda, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info, const blas_len trans_len) { arma_fortran_sans_prefix(arma_cgetrs)(trans, n, nrhs, a, lda, ipiv, b, ldb, info, trans_len); } - void arma_fortran_with_prefix(arma_zgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, blas_cxd* a, const blas_int* lda, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info, const blas_len trans_len) + void arma_fortran_with_prefix(arma_zgetrs)(const char* trans, const blas_int* n, const blas_int* nrhs, const blas_cxd* a, const blas_int* lda, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info, const blas_len trans_len) { arma_fortran_sans_prefix(arma_zgetrs)(trans, n, nrhs, a, lda, ipiv, b, ldb, info, trans_len); } @@ -709,22 +709,22 @@ - void arma_fortran_with_prefix(arma_sgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, float* ab, const blas_int* ldab, blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info, blas_len trans_len) + void arma_fortran_with_prefix(arma_sgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const float* ab, const blas_int* ldab, const blas_int* ipiv, float* b, const blas_int* ldb, blas_int* info, blas_len trans_len) { arma_fortran_sans_prefix(arma_sgbtrs)(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info, trans_len); } - void arma_fortran_with_prefix(arma_dgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, double* ab, const blas_int* ldab, blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info, blas_len trans_len) + void arma_fortran_with_prefix(arma_dgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const double* ab, const blas_int* ldab, const blas_int* ipiv, double* b, const blas_int* ldb, blas_int* info, blas_len trans_len) { arma_fortran_sans_prefix(arma_dgbtrs)(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info, trans_len); } - void arma_fortran_with_prefix(arma_cgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, blas_cxf* ab, const blas_int* ldab, blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info, blas_len trans_len) + void arma_fortran_with_prefix(arma_cgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const blas_cxf* ab, const blas_int* ldab, const blas_int* ipiv, blas_cxf* b, const blas_int* ldb, blas_int* info, blas_len trans_len) { arma_fortran_sans_prefix(arma_cgbtrs)(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info, trans_len); } - void arma_fortran_with_prefix(arma_zgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, blas_cxd* ab, const blas_int* ldab, blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info, blas_len trans_len) + void arma_fortran_with_prefix(arma_zgbtrs)(const char* trans, const blas_int* n, const blas_int* kl, const blas_int* ku, const blas_int* nrhs, const blas_cxd* ab, const blas_int* ldab, const blas_int* ipiv, blas_cxd* b, const blas_int* ldb, blas_int* info, blas_len trans_len) { arma_fortran_sans_prefix(arma_zgbtrs)(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info, trans_len); }