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 300 #define ARMA_VERSION_MINOR 300
#define ARMA_VERSION_PATCH 6 #define ARMA_VERSION_PATCH 8
#define ARMA_VERSION_NAME "Medieval Cornea Scraper" #define ARMA_VERSION_NAME "Medieval Cornea Scraper"
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


 armadillo   armadillo 
skipping to change at line 36 skipping to change at line 36
#include <vector> #include <vector>
#if ( defined(__unix__) || defined(__unix) || defined(_POSIX_C_SOURCE) || ( defined(__APPLE__) && defined(__MACH__)) ) && !defined(_WIN32) #if ( defined(__unix__) || defined(__unix) || defined(_POSIX_C_SOURCE) || ( defined(__APPLE__) && defined(__MACH__)) ) && !defined(_WIN32)
#include <unistd.h> #include <unistd.h>
#endif #endif
#if (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L)) #if (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L))
#include <sys/time.h> #include <sys/time.h>
#endif #endif
#if (__cplusplus >= 201103L)
#undef ARMA_USE_CXX11
#define ARMA_USE_CXX11
#endif
#include "armadillo_bits/config.hpp" #include "armadillo_bits/config.hpp"
#include "armadillo_bits/compiler_setup.hpp" #include "armadillo_bits/compiler_setup.hpp"
#if defined(ARMA_USE_CXX11) #if defined(ARMA_USE_CXX11)
#include <initializer_list> #include <initializer_list>
#include <cstdint> #include <cstdint>
#include <random> #include <random>
#if !defined(ARMA_DONT_USE_CXX11_CHRONO) #if !defined(ARMA_DONT_USE_CXX11_CHRONO)
#include <chrono> #include <chrono>
#endif #endif
 End of changes. 1 change blocks. 
5 lines changed or deleted 0 lines changed or added


 compiler_setup.hpp   compiler_setup.hpp 
skipping to change at line 139 skipping to change at line 139
#define arma_aligned __attribute__((__aligned__)) #define arma_aligned __attribute__((__aligned__))
#define arma_align_mem __attribute__((__aligned__(16))) #define arma_align_mem __attribute__((__aligned__(16)))
#define arma_warn_unused __attribute__((__warn_unused_result__)) #define arma_warn_unused __attribute__((__warn_unused_result__))
#define arma_deprecated __attribute__((__deprecated__)) #define arma_deprecated __attribute__((__deprecated__))
#define arma_malloc __attribute__((__malloc__)) #define arma_malloc __attribute__((__malloc__))
#define arma_inline inline __attribute__((__always_inline__)) #define arma_inline inline __attribute__((__always_inline__))
#define arma_noinline __attribute__((__noinline__)) #define arma_noinline __attribute__((__noinline__))
#define ARMA_HAVE_ALIGNED_ATTRIBUTE #define ARMA_HAVE_ALIGNED_ATTRIBUTE
#if defined(__GXX_EXPERIMENTAL_CXX0X__)
#undef ARMA_USE_CXX11
#define ARMA_USE_CXX11
#endif
#if defined(ARMA_USE_CXX11) #if defined(ARMA_USE_CXX11)
#if (ARMA_GCC_VERSION < 40700) && !defined(__clang__) #if (ARMA_GCC_VERSION < 40800) && !defined(__clang__)
#pragma message ("WARNING: your C++ compiler is in C++11 mode, but it has incomplete support for C++11 features; if something breaks, you get to keep all the pieces") #pragma message ("WARNING: your C++ compiler is in C++11 mode, but it has incomplete support for C++11 features; if something breaks, you get to keep all the pieces")
#pragma message ("WARNING: to forcefully prevent Armadillo from using C++11 features, #define ARMA_DONT_USE_CXX11 before #include <armadillo>")
#define ARMA_DONT_USE_CXX11_CHRONO #define ARMA_DONT_USE_CXX11_CHRONO
#endif #endif
#endif #endif
#if !defined(ARMA_USE_CXX11) #if !defined(ARMA_USE_CXX11)
#if defined(_GLIBCXX_USE_C99_MATH_TR1) && defined(_GLIBCXX_USE_C99_COMP LEX_TR1) #if defined(_GLIBCXX_USE_C99_MATH_TR1) && defined(_GLIBCXX_USE_C99_COMP LEX_TR1)
#define ARMA_HAVE_TR1 #define ARMA_HAVE_TR1
#endif #endif
#endif #endif
 End of changes. 3 change blocks. 
6 lines changed or deleted 2 lines changed or added


 config.hpp   config.hpp 
skipping to change at line 72 skipping to change at line 72
//// Uncomment the above line if you require matrices/vectors capable of ho lding more than 4 billion elements. //// Uncomment the above line if you require matrices/vectors capable of ho lding more than 4 billion elements.
//// Your machine and compiler must have support for 64 bit integers (eg. v ia "long" or "long long") //// Your machine and compiler must have support for 64 bit integers (eg. v ia "long" or "long long")
#endif #endif
#if !defined(ARMA_USE_CXX11) #if !defined(ARMA_USE_CXX11)
// #define ARMA_USE_CXX11 // #define ARMA_USE_CXX11
//// Uncomment the above line if you have a C++ compiler that supports the C++11 standard //// Uncomment the above line if you have a C++ compiler that supports the C++11 standard
//// This will enable additional features, such as use of initialiser lists //// This will enable additional features, such as use of initialiser lists
#endif #endif
#if (__cplusplus >= 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X__)
#undef ARMA_USE_CXX11
#define ARMA_USE_CXX11
#endif
#if !defined(ARMA_USE_U64S64) #if !defined(ARMA_USE_U64S64)
// #define ARMA_USE_U64S64 // #define ARMA_USE_U64S64
//// Uncomment the above line if you require u64 and s64 integer types. //// Uncomment the above line if you require u64 and s64 integer types.
//// Your machine and compiler must have support for 64 bit integers (eg. v ia "long" or "long long"). //// Your machine and compiler must have support for 64 bit integers (eg. v ia "long" or "long long").
//// Note that ARMA_USE_U64S64 is automatically enabled when ARMA_64BIT_WOR D or ARMA_USE_CXX11 are enabled //// Note that ARMA_USE_U64S64 is automatically enabled when ARMA_64BIT_WOR D or ARMA_USE_CXX11 are enabled
#endif #endif
#if !defined(ARMA_USE_HDF5) #if !defined(ARMA_USE_HDF5)
#define ARMA_USE_HDF5 #define ARMA_USE_HDF5
//// Uncomment the above line to allow the ability to save and load matrice s stored in HDF5 format; //// Uncomment the above line to allow the ability to save and load matrice s stored in HDF5 format;
 End of changes. 1 change blocks. 
0 lines changed or deleted 5 lines changed or added


 debug.hpp   debug.hpp 
skipping to change at line 390 skipping to change at line 390
template<typename eT> template<typename eT>
arma_cold arma_cold
arma_noinline arma_noinline
static static
std::string std::string
arma_incompat_size_string(const subview_cube<eT>& Q, const Mat<eT>& A, cons t char* x) arma_incompat_size_string(const subview_cube<eT>& Q, const Mat<eT>& A, cons t char* x)
{ {
std::stringstream tmp; std::stringstream tmp;
tmp << x tmp << x
<< ": interpreting matrix as cube with dimenensions: " << ": interpreting matrix as cube with dimensions: "
<< A.n_rows << 'x' << A.n_cols << 'x' << 1 << A.n_rows << 'x' << A.n_cols << 'x' << 1
<< " or " << " or "
<< A.n_rows << 'x' << 1 << 'x' << A.n_cols << A.n_rows << 'x' << 1 << 'x' << A.n_cols
<< " or " << " or "
<< 1 << 'x' << A.n_rows << 'x' << A.n_cols << 1 << 'x' << A.n_rows << 'x' << A.n_cols
<< " is incompatible with cube dimensions: " << " is incompatible with cube dimensions: "
<< Q.n_rows << 'x' << Q.n_cols << 'x' << Q.n_slices; << Q.n_rows << 'x' << Q.n_cols << 'x' << Q.n_slices;
return tmp.str(); return tmp.str();
} }
skipping to change at line 805 skipping to change at line 805
( (Q_n_rows == M_n_rows) && (Q_n_slices == M_n_cols) ) ( (Q_n_rows == M_n_rows) && (Q_n_slices == M_n_cols) )
|| ||
( (Q_n_cols == M_n_rows) && (Q_n_slices == M_n_cols) ) ( (Q_n_cols == M_n_rows) && (Q_n_slices == M_n_cols) )
) )
== false == false
) )
{ {
std::stringstream tmp; std::stringstream tmp;
tmp << x tmp << x
<< ": can't interpret cube with dimenensions " << ": can't interpret cube with dimensions "
<< Q_n_rows << 'x' << Q_n_cols << 'x' << Q_n_slices << Q_n_rows << 'x' << Q_n_cols << 'x' << Q_n_slices
<< " as a matrix with dimensions " << " as a matrix with dimensions "
<< M_n_rows << 'x' << M_n_cols; << M_n_rows << 'x' << M_n_cols;
arma_stop( tmp.str() ); arma_stop( tmp.str() );
} }
} }
else else
{ {
if(Q_n_slices == 1) if(Q_n_slices == 1)
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 subview_cube_meat.hpp   subview_cube_meat.hpp 
// Copyright (C) 2008-2013 Conrad Sanderson // Copyright (C) 2008-2014 Conrad Sanderson
// Copyright (C) 2008-2013 NICTA (www.nicta.com.au) // Copyright (C) 2008-2014 NICTA (www.nicta.com.au)
// //
// This Source Code Form is subject to the terms of the Mozilla Public // This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this // License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/. // file, You can obtain one at http://mozilla.org/MPL/2.0/.
//! \addtogroup subview_cube //! \addtogroup subview_cube
//! @{ //! @{
template<typename eT> template<typename eT>
inline inline
skipping to change at line 486 skipping to change at line 486
const Mat<eT>& x = tmp.M; const Mat<eT>& x = tmp.M;
subview_cube<eT>& t = *this; subview_cube<eT>& t = *this;
const uword t_n_rows = t.n_rows; const uword t_n_rows = t.n_rows;
const uword t_n_cols = t.n_cols; const uword t_n_cols = t.n_cols;
const uword t_n_slices = t.n_slices; const uword t_n_slices = t.n_slices;
const uword x_n_rows = x.n_rows; const uword x_n_rows = x.n_rows;
const uword x_n_cols = x.n_cols; const uword x_n_cols = x.n_cols;
if( ((x_n_rows == 1) || (x_n_cols == 1)) && (t_n_rows == 1) && (t_n_cols
== 1) && (x.n_elem == t_n_slices) )
{
Cube<eT>& Q = const_cast< Cube<eT>& >(t.m);
const uword t_aux_row1 = t.aux_row1;
const uword t_aux_col1 = t.aux_col1;
const uword t_aux_slice1 = t.aux_slice1;
const eT* x_mem = x.memptr();
uword i,j;
for(i=0, j=1; j < t_n_slices; i+=2, j+=2)
{
const eT tmp_i = x_mem[i];
const eT tmp_j = x_mem[j];
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) = tmp_i;
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + j) = tmp_j;
}
if(i < t_n_slices)
{
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) = x_mem[i];
}
}
else
if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) ) if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) )
{ {
// interpret the matrix as a cube with one slice // interpret the matrix as a cube with one slice
for(uword col = 0; col < t_n_cols; ++col) for(uword col = 0; col < t_n_cols; ++col)
{ {
arrayops::copy( t.slice_colptr(0, col), x.colptr(col), t_n_rows ); arrayops::copy( t.slice_colptr(0, col), x.colptr(col), t_n_rows );
} }
} }
else else
skipping to change at line 563 skipping to change at line 589
const Mat<eT>& x = tmp.M; const Mat<eT>& x = tmp.M;
subview_cube<eT>& t = *this; subview_cube<eT>& t = *this;
const uword t_n_rows = t.n_rows; const uword t_n_rows = t.n_rows;
const uword t_n_cols = t.n_cols; const uword t_n_cols = t.n_cols;
const uword t_n_slices = t.n_slices; const uword t_n_slices = t.n_slices;
const uword x_n_rows = x.n_rows; const uword x_n_rows = x.n_rows;
const uword x_n_cols = x.n_cols; const uword x_n_cols = x.n_cols;
if( ((x_n_rows == 1) || (x_n_cols == 1)) && (t_n_rows == 1) && (t_n_cols
== 1) && (x.n_elem == t_n_slices) )
{
Cube<eT>& Q = const_cast< Cube<eT>& >(t.m);
const uword t_aux_row1 = t.aux_row1;
const uword t_aux_col1 = t.aux_col1;
const uword t_aux_slice1 = t.aux_slice1;
const eT* x_mem = x.memptr();
uword i,j;
for(i=0, j=1; j < t_n_slices; i+=2, j+=2)
{
const eT tmp_i = x_mem[i];
const eT tmp_j = x_mem[j];
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) += tmp_i;
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + j) += tmp_j;
}
if(i < t_n_slices)
{
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) += x_mem[i];
}
}
else
if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) ) if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) )
{ {
for(uword col = 0; col < t_n_cols; ++col) for(uword col = 0; col < t_n_cols; ++col)
{ {
arrayops::inplace_plus( t.slice_colptr(0, col), x.colptr(col), t_n_ro ws ); arrayops::inplace_plus( t.slice_colptr(0, col), x.colptr(col), t_n_ro ws );
} }
} }
else else
if( (t_n_rows == x_n_rows) && (t_n_cols == 1) && (t_n_slices == x_n_cols) ) if( (t_n_rows == x_n_rows) && (t_n_cols == 1) && (t_n_slices == x_n_cols) )
{ {
skipping to change at line 638 skipping to change at line 690
const Mat<eT>& x = tmp.M; const Mat<eT>& x = tmp.M;
subview_cube<eT>& t = *this; subview_cube<eT>& t = *this;
const uword t_n_rows = t.n_rows; const uword t_n_rows = t.n_rows;
const uword t_n_cols = t.n_cols; const uword t_n_cols = t.n_cols;
const uword t_n_slices = t.n_slices; const uword t_n_slices = t.n_slices;
const uword x_n_rows = x.n_rows; const uword x_n_rows = x.n_rows;
const uword x_n_cols = x.n_cols; const uword x_n_cols = x.n_cols;
if( ((x_n_rows == 1) || (x_n_cols == 1)) && (t_n_rows == 1) && (t_n_cols
== 1) && (x.n_elem == t_n_slices) )
{
Cube<eT>& Q = const_cast< Cube<eT>& >(t.m);
const uword t_aux_row1 = t.aux_row1;
const uword t_aux_col1 = t.aux_col1;
const uword t_aux_slice1 = t.aux_slice1;
const eT* x_mem = x.memptr();
uword i,j;
for(i=0, j=1; j < t_n_slices; i+=2, j+=2)
{
const eT tmp_i = x_mem[i];
const eT tmp_j = x_mem[j];
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) -= tmp_i;
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + j) -= tmp_j;
}
if(i < t_n_slices)
{
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) -= x_mem[i];
}
}
else
if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) ) if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) )
{ {
for(uword col = 0; col < t_n_cols; ++col) for(uword col = 0; col < t_n_cols; ++col)
{ {
arrayops::inplace_minus( t.slice_colptr(0, col), x.colptr(col), t_n_r ows ); arrayops::inplace_minus( t.slice_colptr(0, col), x.colptr(col), t_n_r ows );
} }
} }
else else
if( (t_n_rows == x_n_rows) && (t_n_cols == 1) && (t_n_slices == x_n_cols) ) if( (t_n_rows == x_n_rows) && (t_n_cols == 1) && (t_n_slices == x_n_cols) )
{ {
skipping to change at line 713 skipping to change at line 791
const Mat<eT>& x = tmp.M; const Mat<eT>& x = tmp.M;
subview_cube<eT>& t = *this; subview_cube<eT>& t = *this;
const uword t_n_rows = t.n_rows; const uword t_n_rows = t.n_rows;
const uword t_n_cols = t.n_cols; const uword t_n_cols = t.n_cols;
const uword t_n_slices = t.n_slices; const uword t_n_slices = t.n_slices;
const uword x_n_rows = x.n_rows; const uword x_n_rows = x.n_rows;
const uword x_n_cols = x.n_cols; const uword x_n_cols = x.n_cols;
if( ((x_n_rows == 1) || (x_n_cols == 1)) && (t_n_rows == 1) && (t_n_cols
== 1) && (x.n_elem == t_n_slices) )
{
Cube<eT>& Q = const_cast< Cube<eT>& >(t.m);
const uword t_aux_row1 = t.aux_row1;
const uword t_aux_col1 = t.aux_col1;
const uword t_aux_slice1 = t.aux_slice1;
const eT* x_mem = x.memptr();
uword i,j;
for(i=0, j=1; j < t_n_slices; i+=2, j+=2)
{
const eT tmp_i = x_mem[i];
const eT tmp_j = x_mem[j];
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) *= tmp_i;
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + j) *= tmp_j;
}
if(i < t_n_slices)
{
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) *= x_mem[i];
}
}
else
if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) ) if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) )
{ {
for(uword col = 0; col < t_n_cols; ++col) for(uword col = 0; col < t_n_cols; ++col)
{ {
arrayops::inplace_mul( t.slice_colptr(0, col), x.colptr(col), t_n_row s ); arrayops::inplace_mul( t.slice_colptr(0, col), x.colptr(col), t_n_row s );
} }
} }
else else
if( (t_n_rows == x_n_rows) && (t_n_cols == 1) && (t_n_slices == x_n_cols) ) if( (t_n_rows == x_n_rows) && (t_n_cols == 1) && (t_n_slices == x_n_cols) )
{ {
skipping to change at line 788 skipping to change at line 892
const Mat<eT>& x = tmp.M; const Mat<eT>& x = tmp.M;
subview_cube<eT>& t = *this; subview_cube<eT>& t = *this;
const uword t_n_rows = t.n_rows; const uword t_n_rows = t.n_rows;
const uword t_n_cols = t.n_cols; const uword t_n_cols = t.n_cols;
const uword t_n_slices = t.n_slices; const uword t_n_slices = t.n_slices;
const uword x_n_rows = x.n_rows; const uword x_n_rows = x.n_rows;
const uword x_n_cols = x.n_cols; const uword x_n_cols = x.n_cols;
if( ((x_n_rows == 1) || (x_n_cols == 1)) && (t_n_rows == 1) && (t_n_cols
== 1) && (x.n_elem == t_n_slices) )
{
Cube<eT>& Q = const_cast< Cube<eT>& >(t.m);
const uword t_aux_row1 = t.aux_row1;
const uword t_aux_col1 = t.aux_col1;
const uword t_aux_slice1 = t.aux_slice1;
const eT* x_mem = x.memptr();
uword i,j;
for(i=0, j=1; j < t_n_slices; i+=2, j+=2)
{
const eT tmp_i = x_mem[i];
const eT tmp_j = x_mem[j];
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) /= tmp_i;
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + j) /= tmp_j;
}
if(i < t_n_slices)
{
Q.at(t_aux_row1, t_aux_col1, t_aux_slice1 + i) /= x_mem[i];
}
}
else
if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) ) if( (t_n_rows == x_n_rows) && (t_n_cols == x_n_cols) && (t_n_slices == 1) )
{ {
for(uword col = 0; col < t_n_cols; ++col) for(uword col = 0; col < t_n_cols; ++col)
{ {
arrayops::inplace_div( t.slice_colptr(0, col), x.colptr(col), t_n_row s ); arrayops::inplace_div( t.slice_colptr(0, col), x.colptr(col), t_n_row s );
} }
} }
else else
if( (t_n_rows == x_n_rows) && (t_n_cols == 1) && (t_n_slices == x_n_cols) ) if( (t_n_rows == x_n_rows) && (t_n_cols == 1) && (t_n_slices == x_n_cols) )
{ {
 End of changes. 6 change blocks. 
2 lines changed or deleted 137 lines changed or added

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