Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Sacado_cmath.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Sacado Package
5
// Copyright (2006) Sandia Corporation
6
//
7
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8
// the U.S. Government retains certain rights in this software.
9
//
10
// This library is free software; you can redistribute it and/or modify
11
// it under the terms of the GNU Lesser General Public License as
12
// published by the Free Software Foundation; either version 2.1 of the
13
// License, or (at your option) any later version.
14
//
15
// This library is distributed in the hope that it will be useful, but
16
// WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
// Lesser General Public License for more details.
19
//
20
// You should have received a copy of the GNU Lesser General Public
21
// License along with this library; if not, write to the Free Software
22
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23
// USA
24
// Questions? Contact David M. Gay (dmgay@sandia.gov) or Eric T. Phipps
25
// (etphipp@sandia.gov).
26
//
27
// ***********************************************************************
28
// @HEADER
29
30
#ifndef SACADO_CMATH_HPP
31
#define SACADO_CMATH_HPP
32
33
#include <cmath>
// for most math functions
34
#include "
Sacado_ConfigDefs.h
"
35
36
namespace
Sacado
{
37
38
// Replacement for ternary operator, for scalar types that don't implement
39
// logical operations that return bool, e.g., a simd scalar type that returns
40
// a simd bool. Sacado overloaded operators use this internally when ever
41
// the ternary operator would be used. It can also be used by client code.
42
template
<
typename
Cond,
typename
T>
43
SACADO_INLINE_FUNCTION
44
T
if_then_else
(
const
Cond cond,
const
T
&
a
,
const
T
& b) {
45
return
cond ?
a
: b;
46
}
47
48
// Special version of sqrt(x) that avoids the NaN if x==0 in the derivative.
49
// The default implementation just calls the standard sqrt(x).
50
template
<
typename
T>
51
SACADO_INLINE_FUNCTION
52
T
safe_sqrt
(
const
T
& x) {
53
using
std::sqrt;
54
return
sqrt
(x);
55
}
56
57
}
58
59
#endif
// SACADO_CMATH_HPP
a
a
Definition
Sacado_CacheFad_Ops.hpp:426
Sacado_ConfigDefs.h
SACADO_INLINE_FUNCTION
#define SACADO_INLINE_FUNCTION
Definition
Sacado_ConfigDefs.h:110
sqrt
sqrt(expr.val())
T
#define T
Definition
Sacado_rad.hpp:573
Sacado
Definition
Sacado_mpl_apply.hpp:39
Sacado::if_then_else
SACADO_INLINE_FUNCTION T if_then_else(const Cond cond, const T &a, const T &b)
Definition
Sacado_cmath.hpp:44
Sacado::safe_sqrt
SACADO_INLINE_FUNCTION T safe_sqrt(const T &x)
Definition
Sacado_cmath.hpp:52
Generated by
1.17.0