Loading...
Searching...
No Matches
SparseDiffMath.h
Go to the documentation of this file.
//# SparseDiffMath.h: Implements all mathematical functions for SparseDiff.
//# Copyright (C) 2007
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef SCIMATH_SPARSEDIFFMATH_H
#define SCIMATH_SPARSEDIFFMATH_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/casa/BasicMath/Math.h>
#include <casacore/scimath/Mathematics/SparseDiff.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
// <summary>
// Implements all mathematical operators and functions for SparseDiff.
// </summary>
//
// <reviewed reviewer="UNKNOWN" date="" tests="tSparseDiff" demos="">
// </reviewed>
//
// <prerequisite>
// <li> <linkto class=SparseDiff>SparseDiff</linkto> class
// </prerequisite>
//
// <etymology>
// Implements all mathematical operators and functions for SparseDiff.
// </etymology>
//
// <todo asof="20001/08/12">
// <li> nothing I know of
// </todo>
// <group name="SparseDiff mathematical operations">
// Unary arithmetic operators.
// <group>
template<class T>
SparseDiff<T> operator+(const SparseDiff<T> &other);
template<class T>
SparseDiff<T> operator-(const SparseDiff<T> &other);
// </group>
// Arithmetic on two SparseDiff objects, returning a SparseDiff object
// <group>
template<class T>
SparseDiff<T> operator+(const SparseDiff<T> &left, const SparseDiff<T> &right);
template<class T>
SparseDiff<T> operator-(const SparseDiff<T> &left, const SparseDiff<T> &right);
template<class T>
SparseDiff<T> operator*(const SparseDiff<T> &left, const SparseDiff<T> &right);
template<class T>
SparseDiff<T> operator/(const SparseDiff<T> &left, const SparseDiff<T> &right);
// </group>
// Arithmetic on a SparseDiff and a scalar, returning a SparseDiff
// <group>
template<class T>
SparseDiff<T> operator+(const SparseDiff<T> &left, const T &right);
template<class T>
SparseDiff<T> operator-(const SparseDiff<T> &left, const T &right);
template<class T>
SparseDiff<T> operator*(const SparseDiff<T> &left, const T &right);
template<class T>
SparseDiff<T> operator/(const SparseDiff<T> &left, const T &right);
// </group>
// Arithmetic between a scalar and a SparseDiff returning a SparseDiff
// <group>
template<class T>
SparseDiff<T> operator+(const T &left, const SparseDiff<T> &right);
template<class T>
SparseDiff<T> operator-(const T &left, const SparseDiff<T> &right);
template<class T>
SparseDiff<T> operator*(const T &left, const SparseDiff<T> &right);
template<class T>
SparseDiff<T> operator/(const T &left, const SparseDiff<T> &right);
// </group>
// Transcendental functions
// <group>
template<class T> SparseDiff<T> acos(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> asin(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> atan(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> atan2(const SparseDiff<T> &y,
const SparseDiff<T> &x);
template<class T> SparseDiff<T> cos(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> cosh(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> exp(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> log(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> log10(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> erf(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> erfc(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> pow(const SparseDiff<T> &a,
const SparseDiff<T> &b);
template<class T> SparseDiff<T> pow(const SparseDiff<T> &a, const T &b);
template<class T> SparseDiff<T> square(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> cube(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> sin(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> sinh(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> sqrt(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> tan(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> tanh(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> abs(const SparseDiff<T> &ad);
// </group>
// Floating-point remainder of x/c, with the same sign as x, where c is
// a constant.
// <group>
template<class T> SparseDiff<T> fmod(const SparseDiff<T> &x, const T &c);
template<class T> SparseDiff<T> fmod(const SparseDiff<T> &x,
const SparseDiff<T> &c);
// </group>
// Floor and ceil of values
// <group>
template<class T> SparseDiff<T> floor(const SparseDiff<T> &ad);
template<class T> SparseDiff<T> ceil(const SparseDiff<T> &ad);
// </group>
// Comparison operators. Only the values are compared: in the actual
// functions, comparisons are used to decide on algorithms. To check
// if two SparseDiff values are equal, use comparison for both
// value and derivatives.
// <note role=tip> To check if two SparseDiff values are equal, use the
// member method <src>equals()</src> (e.g. for debugging and testing).
// </note>
// <group>
// Compare two SparseDiff's
template<class T> Bool operator>(const SparseDiff<T> &left,
const SparseDiff<T> &right);
template<class T> Bool operator<(const SparseDiff<T> &left,
const SparseDiff<T> &right);
template<class T> Bool operator>=(const SparseDiff<T> &left,
const SparseDiff<T> &right);
template<class T> Bool operator<=(const SparseDiff<T> &left,
const SparseDiff<T> &right);
template<class T> Bool operator==(const SparseDiff<T> &left,
const SparseDiff<T> &right);
template<class T> Bool operator!=(const SparseDiff<T> &left,
const SparseDiff<T> &right);
template<class T> Bool near(const SparseDiff<T> &left,
const SparseDiff<T> &right);
template<class T> Bool near(const SparseDiff<T> &left,
const SparseDiff<T> &right, const Double tol);
template<class T> Bool allnear(const SparseDiff<T> &left,
const SparseDiff<T> &right, const Double tol);
template<class T> Bool nearAbs(const SparseDiff<T> &left,
const SparseDiff<T> &right, const Double tol);
template<class T> Bool allnearAbs(const SparseDiff<T> &left,
const SparseDiff<T> &right, const Double tol);
// </group>
// Compare a SparseDiff and a constant
// <group>
template<class T> Bool operator>(const SparseDiff<T> &left, const T &right);
template<class T> Bool operator<(const SparseDiff<T> &left, const T &right);
template<class T> Bool operator>=(const SparseDiff<T> &left, const T &right);
template<class T> Bool operator<=(const SparseDiff<T> &left, const T &right);
template<class T> Bool operator==(const SparseDiff<T> &left, const T &right);
template<class T> Bool operator!=(const SparseDiff<T> &left, const T &right);
template<class T> Bool near(const SparseDiff<T> &left, const T &right);
template<class T> Bool near(const SparseDiff<T> &left, const T &right,
const Double tol);
template<class T> Bool allnear(const SparseDiff<T> &left, const T &right,
const Double tol);
template<class T> Bool nearAbs(const SparseDiff<T> &left, const T &right,
const Double tol);
template<class T> Bool allnearAbs(const SparseDiff<T> &left, const T &right,
const Double tol);
// </group>
// Compare a constant and a SparseDiff
// <group>
template<class T> Bool operator>(const T &left, const SparseDiff<T> &right);
template<class T> Bool operator<(const T &left, const SparseDiff<T> &right);
template<class T> Bool operator>=(const T &left, const SparseDiff<T> &right);
template<class T> Bool operator<=(const T &left, const SparseDiff<T> &right);
template<class T> Bool operator==(const T &left, const SparseDiff<T> &right);
template<class T> Bool operator!=(const T &left, const SparseDiff<T> &right);
template<class T> Bool near(const T &left, const SparseDiff<T> &right,
const Double tol);
template<class T> Bool allnear(const T &left, const SparseDiff<T> &right,
const Double tol);
template<class T> Bool nearAbs(const T &left, const SparseDiff<T> &right,
const Double tol);
template<class T> Bool allnearAbs(const T &left, const SparseDiff<T> &right,
const Double tol);
// </group>
// Test special values
// <group>
template<class T> Bool isNaN(const SparseDiff<T> &val);
template<class T> Bool isInf(SparseDiff<T> &val);
// </group>
// Minimum/maximum
// <group>
template<class T> SparseDiff<T> min(const SparseDiff<T> &left,
const SparseDiff<T> &right);
template<class T> SparseDiff<T> max(const SparseDiff<T> &left,
const SparseDiff<T> &right);
// </group>
// </group>
} //# NAMESPACE CASACORE - END
#ifndef CASACORE_NO_AUTO_TEMPLATES
#include <casacore/scimath/Mathematics/SparseDiffMath.tcc>
#endif //# CASACORE_NO_AUTO_TEMPLATES
#endif
casacore::SparseDiff
Definition SparseDiff.h:276
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::Double
double Double
Definition aipstype.h:53
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations
Definition SparseDiffMath.h:57
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator<
Bool operator<(const SparseDiff< T > &left, const T &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::near
Bool near(const T &left, const SparseDiff< T > &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::cosh
SparseDiff< T > cosh(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::atan
SparseDiff< T > atan(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator-
SparseDiff< T > operator-(const T &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator+
SparseDiff< T > operator+(const T &left, const SparseDiff< T > &right)
Arithmetic between a scalar and a SparseDiff returning a SparseDiff.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::pow
SparseDiff< T > pow(const SparseDiff< T > &a, const SparseDiff< T > &b)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::ceil
SparseDiff< T > ceil(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::near
Bool near(const SparseDiff< T > &left, const T &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::sinh
SparseDiff< T > sinh(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator!=
Bool operator!=(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::acos
SparseDiff< T > acos(const SparseDiff< T > &ad)
Transcendental functions.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator+
SparseDiff< T > operator+(const SparseDiff< T > &other)
Unary arithmetic operators.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::min
SparseDiff< T > min(const SparseDiff< T > &left, const SparseDiff< T > &right)
Minimum/maximum.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::square
SparseDiff< T > square(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator*
SparseDiff< T > operator*(const SparseDiff< T > &left, const T &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator/
SparseDiff< T > operator/(const T &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator-
SparseDiff< T > operator-(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator*
SparseDiff< T > operator*(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::tanh
SparseDiff< T > tanh(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::log10
SparseDiff< T > log10(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::allnearAbs
Bool allnearAbs(const SparseDiff< T > &left, const T &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::near
Bool near(const SparseDiff< T > &left, const SparseDiff< T > &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator>=
Bool operator>=(const SparseDiff< T > &left, const T &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::tan
SparseDiff< T > tan(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator==
Bool operator==(const T &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator+
SparseDiff< T > operator+(const SparseDiff< T > &left, const SparseDiff< T > &right)
Arithmetic on two SparseDiff objects, returning a SparseDiff object.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator<
Bool operator<(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator<=
Bool operator<=(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator+
SparseDiff< T > operator+(const SparseDiff< T > &left, const T &right)
Arithmetic on a SparseDiff and a scalar, returning a SparseDiff.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::allnear
Bool allnear(const SparseDiff< T > &left, const SparseDiff< T > &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::atan2
SparseDiff< T > atan2(const SparseDiff< T > &y, const SparseDiff< T > &x)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator==
Bool operator==(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::max
SparseDiff< T > max(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator<
Bool operator<(const T &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::asin
SparseDiff< T > asin(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::near
Bool near(const SparseDiff< T > &left, const T &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator/
SparseDiff< T > operator/(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator<=
Bool operator<=(const T &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::isInf
Bool isInf(SparseDiff< T > &val)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::allnearAbs
Bool allnearAbs(const T &left, const SparseDiff< T > &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::cos
SparseDiff< T > cos(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator>
Bool operator>(const T &left, const SparseDiff< T > &right)
Compare a constant and a SparseDiff.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator-
SparseDiff< T > operator-(const SparseDiff< T > &other)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::sqrt
SparseDiff< T > sqrt(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator>=
Bool operator>=(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::near
Bool near(const SparseDiff< T > &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::allnear
Bool allnear(const T &left, const SparseDiff< T > &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::erfc
SparseDiff< T > erfc(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator!=
Bool operator!=(const SparseDiff< T > &left, const T &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator>=
Bool operator>=(const T &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator*
SparseDiff< T > operator*(const T &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator>
Bool operator>(const SparseDiff< T > &left, const SparseDiff< T > &right)
Comparison operators.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::nearAbs
Bool nearAbs(const SparseDiff< T > &left, const SparseDiff< T > &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::fmod
SparseDiff< T > fmod(const SparseDiff< T > &x, const T &c)
Floating-point remainder of x/c, with the same sign as x, where c is a constant.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::allnear
Bool allnear(const SparseDiff< T > &left, const T &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator==
Bool operator==(const SparseDiff< T > &left, const T &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::fmod
SparseDiff< T > fmod(const SparseDiff< T > &x, const SparseDiff< T > &c)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::pow
SparseDiff< T > pow(const SparseDiff< T > &a, const T &b)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::nearAbs
Bool nearAbs(const T &left, const SparseDiff< T > &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::allnearAbs
Bool allnearAbs(const SparseDiff< T > &left, const SparseDiff< T > &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::floor
SparseDiff< T > floor(const SparseDiff< T > &ad)
Floor and ceil of values.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::log
SparseDiff< T > log(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator-
SparseDiff< T > operator-(const SparseDiff< T > &left, const T &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::sin
SparseDiff< T > sin(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::erf
SparseDiff< T > erf(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::abs
SparseDiff< T > abs(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator>
Bool operator>(const SparseDiff< T > &left, const T &right)
Compare a SparseDiff and a constant.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::nearAbs
Bool nearAbs(const SparseDiff< T > &left, const T &right, const Double tol)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::cube
SparseDiff< T > cube(const SparseDiff< T > &ad)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator<=
Bool operator<=(const SparseDiff< T > &left, const T &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator/
SparseDiff< T > operator/(const SparseDiff< T > &left, const T &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::operator!=
Bool operator!=(const T &left, const SparseDiff< T > &right)
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::isNaN
Bool isNaN(const SparseDiff< T > &val)
Test special values.
casacore::SparseDiffMath_global_functions_SparseDiff_mathematical_operations::exp
SparseDiff< T > exp(const SparseDiff< T > &ad)