ndarray
NumPy-friendly multidimensional arrays in C++
Loading...
Searching...
No Matches
Functions
operators.h File Reference

Arithmetic and logical operators for Array. More...

#include "ndarray/Array.h"
#include <boost/call_traits.hpp>
#include <boost/utility/enable_if.hpp>
#include "ndarray/detail/UnaryOp.h"
#include "ndarray/detail/BinaryOp.h"
#include "ndarray/types.h"

Go to the source code of this file.

Functions

template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::PlusTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator+ (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::PlusTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator+ (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::PlusTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator+ (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::MinusTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator- (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::MinusTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator- (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::MinusTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator- (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::MultipliesTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator* (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::MultipliesTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator* (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::MultipliesTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator* (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::DividesTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator/ (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::DividesTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator/ (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::DividesTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator/ (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::ModulusTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator% (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::ModulusTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator% (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::ModulusTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator% (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseXorTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator^ (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseXorTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator^ (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::BitwiseXorTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator^ (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseOrTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator| (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseOrTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator| (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::BitwiseOrTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator| (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseAndTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator& (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseAndTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator& (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::BitwiseAndTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator& (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseLeftShiftTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator<< (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseLeftShiftTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator<< (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::BitwiseLeftShiftTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator<< (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseRightShiftTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::operator>> (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::BitwiseRightShiftTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::operator>> (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::BitwiseRightShiftTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::operator>> (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::EqualToTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::equal (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::EqualToTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::equal (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::EqualToTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::equal (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::NotEqualToTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::not_equal (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::NotEqualToTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::not_equal (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::NotEqualToTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::not_equal (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::LessTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::less (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::LessTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::less (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::LessTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::less (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::GreaterTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::greater (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::GreaterTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::greater (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::GreaterTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::greater (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::LessEqualTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::less_equal (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::LessEqualTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::less_equal (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::LessEqualTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::less_equal (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::GreaterEqualTag::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::great_equal (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::GreaterEqualTag::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::great_equal (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::GreaterEqualTag::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::great_equal (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::LogicalAnd::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::logical_and (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::LogicalAnd::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::logical_and (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::LogicalAnd::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::logical_and (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::LogicalOr::templateExprScalar< Operand, Scalar >::Bound > >::type ndarray::logical_or (ExpressionBase< Operand > const &operand, Scalar const &scalar)
 
template<typename Operand , typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, detail::UnaryOpExpression< Operand, typenamedetail::LogicalOr::templateScalarExpr< Operand, Scalar >::Bound > >::type ndarray::logical_or (Scalar const &scalar, ExpressionBase< Operand > const &operand)
 
template<typename Operand1 , typename Operand2 >
detail::BinaryOpExpression< Operand1, Operand2, typename detail::LogicalOr::template ExprExpr< Operand1, Operand2 >::BinaryFunction > ndarray::logical_or (ExpressionBase< Operand1 > const &operand1, ExpressionBase< Operand2 > const &operand2)
 
template<typename Operand >
detail::UnaryOpExpression< Operand, std::negate< typename ExpressionTraits< Operand >::Element > > ndarray::operator- (ExpressionBase< Operand > const &operand)
 
template<typename Operand >
detail::UnaryOpExpression< Operand, std::logical_not< typename ExpressionTraits< Operand >::Element > > ndarray::logical_not (ExpressionBase< Operand > const &operand)
 
template<typename Operand >
detail::UnaryOpExpression< Operand, detail::BitwiseNot< typename ExpressionTraits< Operand >::Element > > ndarray::operator~ (ExpressionBase< Operand > const &operand)
 
template<typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, bool >::type ndarray::any (Scalar const &scalar)
 
template<typename Derived >
bool ndarray::any (ExpressionBase< Derived > const &expr)
 Return true if any of the elements of the given expression are true.
 
template<typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, bool >::type ndarray::all (Scalar const &scalar)
 
template<typename Derived >
bool ndarray::all (ExpressionBase< Derived > const &expr)
 Return true if all of the elements of the given expression are true.
 
template<typename Scalar1 , typename Scalar2 >
boost::enable_if< boost::mpl::and_< typenameExpressionTraits< Scalar1 >::IsScalar, typenameExpressionTraits< Scalar2 >::IsScalar >, bool >::type ndarray::allclose (Scalar1 const &scalar1, Scalar2 const &scalar2, double tol=1E-8)
 
template<typename Scalar , typename Derived >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, bool >::type ndarray::allclose (Scalar const &scalar, ExpressionBase< Derived > const &expr, double tol=1E-8)
 
template<typename Scalar , typename Derived >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, bool >::type ndarray::allclose (ExpressionBase< Derived > const &expr, Scalar const &scalar, double tol=1E-8)
 
template<typename Derived1 , typename Derived2 >
bool ndarray::allclose (ExpressionBase< Derived1 > const &expr1, ExpressionBase< Derived2 > const &expr2, double tol=1E-8)
 
template<typename Scalar >
boost::enable_if< typenameExpressionTraits< Scalar >::IsScalar, Scalar >::type ndarray::sum (Scalar const &scalar)
 
template<typename Derived >
Derived::Element ndarray::sum (ExpressionBase< Derived > const &expr)
 Return the sum of all elements of the given expression.
 

Detailed Description

Arithmetic and logical operators for Array.