SyTen
thresholds.h File Reference

Numerical Thresholds. More...

#include <limits>
#include <cmath>
#include "inc/util/configuration.h"
+ Include dependency graph for thresholds.h:
+ This graph shows which files directly or indirectly include this file:

Variables

const SYTEN_SRDEF_TYPE SYTEN_BROADENING_EPSILON = std::pow(std::numeric_limits<SYTEN_SRDEF_TYPE>::epsilon(), 12./16.)
 Broadening threshold epsilon to be used in inexact inversion \( \frac{1}{x} \approx \frac{x}{x^2 + \epsilon} \). More...
 
const SYTEN_SRDEF_TYPE SYTEN_DEBUG_THRESHOLD = std::pow(std::numeric_limits<SYTEN_SRDEF_TYPE>::epsilon(), 5./16.)
 If \(x == y\) from theory, abs(x-y) < SYTEN_DEBUG_THRESHOLD More...
 
const SYTEN_SRDEF_TYPE SYTEN_DEBUG_THRESHOLD_SQD = (SYTEN_DEBUG_THRESHOLD * SYTEN_DEBUG_THRESHOLD)
 Squared value of the debug threshold. More...
 
const SYTEN_SRDEF_TYPE SYTEN_EZERO_THRESHOLD = std::pow(std::numeric_limits<SYTEN_SRDEF_TYPE>::epsilon(), 11./16.)
 An element is considered zero during EliminateZero::Yes processing if it is smaller than this times the element-specific threshold. More...
 
const SYTEN_SRDEF_TYPE SYTEN_EZERO_THRESHOLD_SQD = (SYTEN_EZERO_THRESHOLD * SYTEN_EZERO_THRESHOLD)
 Squared value of the eliminate zero threshold. More...
 
const SYTEN_SRDEF_TYPE SYTEN_PARALLEL_THRESHOLD = std::pow(std::numeric_limits<SYTEN_SRDEF_TYPE>::epsilon(), 10./16.)
 Two tensors are considered parallel if the ratios between individual elements differ at most by this. More...
 
const SYTEN_SRDEF_TYPE SYTEN_PARALLEL_THRESHOLD_SQD = (SYTEN_PARALLEL_THRESHOLD * SYTEN_PARALLEL_THRESHOLD)
 Squared value of the parallel threshold. More...
 
const SYTEN_SRDEF_TYPE SYTEN_SMALL_THRESHOLD = std::pow(std::numeric_limits<SYTEN_SRDEF_TYPE>::epsilon(), 15./16.)
 A generic small threshold, suitable for comparison for equality. More...
 
const SYTEN_SRDEF_TYPE SYTEN_SMALL_THRESHOLD_SQD = (SYTEN_SMALL_THRESHOLD * SYTEN_SMALL_THRESHOLD)
 Squared value of small threshold. More...
 
const SYTEN_SRDEF_TYPE SYTEN_ZERO_THRESHOLD = std::pow(std::numeric_limits<SYTEN_SRDEF_TYPE>::epsilon(), 18./16.)
 A very small threshold, suitable to discard values lower than it. More...
 
const SYTEN_SRDEF_TYPE SYTEN_ZERO_THRESHOLD_SQD = (SYTEN_SMALL_THRESHOLD * SYTEN_SMALL_THRESHOLD)
 Squared value of very small threshold. More...
 
const SYTEN_SRDEF_TYPE SYTEN_ZNORM_THRESHOLD = std::pow(std::numeric_limits<SYTEN_SRDEF_TYPE>::epsilon(), 8./16.)
 An object with norm() below this is considered unnormalisable. More...
 
const SYTEN_SRDEF_TYPE SYTEN_ZNORM_THRESHOLD_SQD = (SYTEN_ZNORM_THRESHOLD * SYTEN_ZNORM_THRESHOLD)
 Squared value of the zero norm threshold. More...
 

Detailed Description

Numerical Thresholds.

Remarks
GCC has constexpr std::pow, but Clang doesn't, so we can't make these constexpr at the moment. In practice, they are evaluated at compile-time.