|
| bool | is_finite (const double x) |
| bool | is_finite (const std::complex< double > &x) |
| bool | is_finite (const std::complex< float > &x) |
| bool | is_finite (const std::complex< long double > &x) |
| template<typename Number1, typename Number2> |
| constexpr bool | values_are_equal (const Number1 &value_1, const Number2 &value_2) |
| template<typename Number1, typename Number2> |
| constexpr bool | values_are_not_equal (const Number1 &value_1, const Number2 &value_2) |
| template<typename Number> |
| constexpr bool | value_is_zero (const Number &value) |
| template<typename Number1, typename Number2> |
| bool | value_is_less_than (const Number1 &value_1, const Number2 &value_2) |
| template<typename Number1, typename Number2> |
| bool | value_is_less_than_or_equal_to (const Number1 &value_1, const Number2 &value_2) |
| template<typename Number1, typename Number2> |
| bool | value_is_greater_than (const Number1 &value_1, const Number2 &value_2) |
| template<typename Number1, typename Number2> |
| bool | value_is_greater_than_or_equal_to (const Number1 &value_1, const Number2 &value_2) |
| bool | is_nan (const double x) |
| bool | values_are_equal (const adouble &value_1, const adouble &value_2) |
| template<typename Number> |
| bool | values_are_equal (const adouble &value_1, const Number &value_2) |
| template<typename Number> |
| bool | values_are_equal (const Number &value_1, const adouble &value_2) |
| bool | value_is_less_than (const adouble &value_1, const adouble &value_2) |
| template<typename Number> |
| bool | value_is_less_than (const adouble &value_1, const Number &value_2) |
| template<typename Number> |
| bool | value_is_less_than (const Number &value_1, const adouble &value_2) |
| template<class T> |
| T | signaling_nan () |
Namespace for the declaration of universal constants. Since the availability in math.h is not always guaranteed, we put them here. Since this file is included by base/config.h, they are available to the whole library.
The constants defined here are a subset of the M_XXX constants sometimes declared in the system include file math.h, but without the prefix M_.
In addition to that, we declare invalid_unsigned_int to be the largest unsigned integer representable; this value is widely used in the library as a marker for an invalid index, an invalid size of an array, and similar purposes.
| bool numbers::is_finite |
( |
const double | x | ) |
|
|
inline |
Return true if the given value is a finite floating point number, i.e. is neither plus or minus infinity nor NaN (not a number).
Note that the argument type of this function is double. In other words, if you give a very large number of type long
double, this function may return false even if the number is finite with respect to type long double.
Definition at line 507 of file numbers.h.
template<typename Number1, typename Number2>
| bool numbers::values_are_equal |
( |
const Number1 & | value_1, |
|
|
const Number2 & | value_2 ) |
|
constexpr |
Return whether two numbers are equal to one another.
For intricate data types (e.g. some automatically differentiable numbers), this function returns the result of the comparison of scalar values stored by the input arguments.
- Note
- This function expects that
value_2 is castable to the type of value_1.
Definition at line 865 of file numbers.h.
template<typename Number1, typename Number2>
| bool numbers::values_are_not_equal |
( |
const Number1 & | value_1, |
|
|
const Number2 & | value_2 ) |
|
inlineconstexpr |
Return whether two numbers are not equal to one another.
For intricate data types (e.g. some automatically differentiable numbers), this function returns the result of the comparison of scalar values stored by the input arguments.
- Note
- This function expects that
value_2 is castable to the type of value_1.
Definition at line 873 of file numbers.h.
template<typename Number>
| bool numbers::value_is_zero |
( |
const Number & | value | ) |
|
|
constexpr |
Return whether or not a value is equal to zero.
For intricate data types (e.g. some automatically differentiable numbers), this function returns the result of the comparison of scalar values stored by the input arguments.
Definition at line 881 of file numbers.h.
template<typename Number1, typename Number2>
| bool numbers::value_is_less_than |
( |
const Number1 & | value_1, |
|
|
const Number2 & | value_2 ) |
|
inline |
Return whether value_1 is less than that of value_2.
For intricate data types (e.g. some automatically differentiable numbers), this function returns the result of the comparison of scalar values stored by the input arguments.
- Note
- This function expects that
value_2 is castable to the type of value_1.
Definition at line 889 of file numbers.h.
template<typename Number1, typename Number2>
| bool numbers::value_is_less_than_or_equal_to |
( |
const Number1 & | value_1, |
|
|
const Number2 & | value_2 ) |
|
inline |
Return whether value_1 is less than or equal to that of value_2.
For intricate data types (e.g. some automatically differentiable numbers), this function returns the result of the comparison of scalar values stored by the input arguments.
- Note
- This function expects that
value_2 is castable to the type of value_1.
Definition at line 897 of file numbers.h.
template<typename Number1, typename Number2>
| bool numbers::value_is_greater_than |
( |
const Number1 & | value_1, |
|
|
const Number2 & | value_2 ) |
Return whether value_1 is greater than that of value_2.
For intricate data types (e.g. some automatically differentiable numbers), this function returns the result of the comparison of scalar values stored by the input arguments.
- Note
- This function expects that
value_2 is castable to the type of value_1.
Definition at line 906 of file numbers.h.
template<typename Number1, typename Number2>
| bool numbers::value_is_greater_than_or_equal_to |
( |
const Number1 & | value_1, |
|
|
const Number2 & | value_2 ) |
|
inline |
Return whether value_1 is greater than or equal to that of value_2.
For intricate data types (e.g. some automatically differentiable numbers), this function returns the result of the comparison of scalar values stored by the input arguments.
- Note
- This function expects that
value_2 is castable to the type of value_1.
Definition at line 914 of file numbers.h.
template<typename Number>
| bool numbers::value_is_less_than |
( |
const adouble & | value_1, |
|
|
const Number & | value_2 ) |
Return whether value_1 is less than that of value_2.
For intricate data types (e.g. some automatically differentiable numbers), this function returns the result of the comparison of scalar values stored by the input arguments.
- Note
- When ADOL-C is compiled with the "advanced branching" feature, then this specialization is only intended for use in assertions and other code paths that do not affect the end result of a computation.
Definition at line 832 of file numbers.h.
template<typename Number>
| bool numbers::value_is_less_than |
( |
const Number & | value_1, |
|
|
const adouble & | value_2 ) |
Return whether value_1 is less than that of value_2.
For intricate data types (e.g. some automatically differentiable numbers), this function returns the result of the comparison of scalar values stored by the input arguments.
- Note
- When ADOL-C is compiled with the "advanced branching" feature, then this specialization is only intended for use in assertions and other code paths that do not affect the end result of a computation.
Definition at line 853 of file numbers.h.
template<class T>
| T numbers::signaling_nan |
( |
| ) |
|
Provide an object of type T filled with a signaling NaN that will cause an exception when used in a computation. The content of these objects is a "signaling NaN" ("NaN" stands for "not a number", and "signaling" implies that at least on platforms where this is supported, any arithmetic operation using them terminates the program). The purpose of such objects is to use them as markers for invalid objects and arrays that are required to be initialized to valid values at some point, and to trigger an error when this later initialization does not happen before the first use. An example is code such as this:
if (some condition)
{
...much code computing a,b,c...
x = f(a,b,c);
}
else
{
...more code...
}
::VectorizedArray< Number, width > sin(const ::VectorizedArray< Number, width > &)
The bug is that the else branch forgot to write a value into the x variable. If your platform supports signaling NaNs, then this mistake will become apparent in the last line above because the program is going to be terminated by a floating point exception: The processor realizes that the code is attempting to do an operation on the signaling NaN still stored in x and aborts the program, thereby facilitating an easy way to find what the problem is. This would not have been an easy bug to find if one had just initialized x to zero in the first line (or just left it uninitialized altogether): In that case, the call to std::sin in the last line would have simply computed the sine of "something" if some condition == false, but this invalid results may not have been obvious to the calling site and would have required a substantial amount of debugging to uncover because downstream computations would simply have been wrong, without any indication of why they are wrong.
- Template Parameters
-
- Note
- Because the type
T is not used as a function argument, the compiler cannot deduce it from the type of arguments. Consequently, you have to provide it explicitly. For example, the line Tensor<1,dim> tensor = Utilities::signaling_nan<Tensor<1,dim> >();
initializes a tensor with invalid values.
Definition at line 270 of file signaling_nan.h.
| unsigned int numbers::invalid_unsigned_int = static_cast<unsigned int>(-1) |
|
constexpr |
Representation of the largest number that can be put into an unsigned integer. This value is widely used throughout the library as a marker for an invalid unsigned integer value, such as an invalid array index, an invalid array size, and the like.
This value is an example of an invalid value. See there for more information.
Definition at line 238 of file types.h.
Initial value:A boundary indicator number that we reserve for internal faces. We assume that all valid boundary_ids lie in the range [0,
internal_face_boundary_id).
This is an indicator that is used internally (by the library) to differentiate between faces that lie at the boundary of the domain and faces that lie in the interior of the domain. You should never try to assign this boundary indicator to anything in user code.
This value is an example of an invalid value. See there for more information.
- See also
- Glossary entry on boundary indicators
Definition at line 329 of file types.h.