<T>LAPACK 0.1.1
C++ Template Linear Algebra PACKage
Loading...
Searching...
No Matches
tlapack::StrongZero Struct Reference

Strong zero type. More...

#include <StrongZero.hpp>

Public Member Functions

template<typename T >
constexpr operator T () const noexcept
 
constexpr bool operator!= (StrongZero) const noexcept
 
constexpr StrongZero operator- () const noexcept
 
constexpr bool operator< (StrongZero) const noexcept
 
constexpr bool operator<= (StrongZero) const noexcept
 
constexpr bool operator== (StrongZero) const noexcept
 
constexpr bool operator> (StrongZero) const noexcept
 
constexpr bool operator>= (StrongZero) const noexcept
 
template<typename T >
constexpr StrongZero (const T &x) noexcept
 
template<typename T , typename U >
constexpr StrongZero (const T &x, const U &y) noexcept
 

Friends

constexpr StrongZero abs (StrongZero) noexcept
 
constexpr StrongZero ceil (StrongZero) noexcept
 
constexpr StrongZero floor (StrongZero) noexcept
 
constexpr bool isinf (StrongZero) noexcept
 
constexpr bool isnan (StrongZero) noexcept
 
constexpr float log2 (StrongZero) noexcept
 
template<typename T >
constexpr StrongZero operator* (const T &, StrongZero) noexcept
 
template<typename T >
constexpr StrongZero operator* (StrongZero, const T &) noexcept
 
constexpr StrongZero operator* (StrongZero, StrongZero) noexcept
 
template<typename T >
constexpr T & operator*= (T &lhs, StrongZero) noexcept
 
template<typename T >
constexproperator+ (const T &lhs, StrongZero) noexcept
 
template<typename T >
constexproperator+ (StrongZero, const T &rhs) noexcept
 
constexpr StrongZero operator+ (StrongZero, StrongZero) noexcept
 
template<typename T >
constexpr T & operator+= (T &lhs, StrongZero) noexcept
 
template<typename T >
constexproperator- (const T &lhs, StrongZero) noexcept
 
template<typename T >
constexproperator- (StrongZero, const T &rhs) noexcept
 
constexpr StrongZero operator- (StrongZero, StrongZero) noexcept
 
template<typename T >
constexpr T & operator-= (T &lhs, StrongZero) noexcept
 
template<typename T >
constexproperator/ (const T &, StrongZero) noexcept
 
template<typename T >
constexpr StrongZero operator/ (StrongZero, const T &) noexcept
 
constexpr float operator/ (StrongZero, StrongZero) noexcept
 
template<typename T >
constexpr T & operator/= (T &lhs, StrongZero) noexcept
 
constexpr int pow (int, StrongZero) noexcept
 
constexpr StrongZero sqrt (StrongZero) noexcept
 

Detailed Description

Strong zero type.

Used to enforce the BLAS behavior of ignoring part of the input when a coefficient is zero.

Note
this type satisfies the concepts: tlapack::concepts::Scalar, tlapack::concepts::Real, and tlapack::concepts::Complex.

Suppose x is of type T, and z is of type StrongZero. Then:

  1. z is equivalent to T(0).
  2. x += z and x -= z do not modify x.
  3. x *= z is equivalent to x = T(0).
  4. x /= z is equivalent to setting x to infinity.
  5. x + z, x - z and z + x return x.
  6. x - z returns -x.
  7. x * z and z * x return z.
  8. x / z returns infinity.
  9. z / x returns z.
  10. z * z returns a quiet NaN.

The documentation for this struct was generated from the following file: