Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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
// Define some math functions that aren't usually in cmath
37
#if !( (defined(_GLIBCXX_USE_C99_MATH_TR1) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || defined(HAVE_SACADO_CXX11) || defined(HAS_C99_TR1_CMATH) || defined(USER_DISABLE_SACADO_TR1_CMATH) )
38
namespace
std {
39
inline
float
acosh
(
float
x) {
40
return
std::log
(x +
std::sqrt
(x*x -
float
(1.0))); }
41
inline
float
asinh
(
float
x) {
42
return
std::log
(x +
std::sqrt
(x*x +
float
(1.0))); }
43
inline
float
atanh
(
float
x) {
44
return
float(0.5)*
std::log
((
float
(1.0)+x)/(
float
(1.0)-x)); }
45
46
inline
double
acosh
(
double
x) {
47
return
std::log
(x +
std::sqrt
(x*x -
double
(1.0))); }
48
inline
double
asinh
(
double
x) {
49
return
std::log
(x +
std::sqrt
(x*x +
double
(1.0))); }
50
inline
double
atanh
(
double
x) {
51
return
double(0.5)*
std::log
((
double
(1.0)+x)/(
double
(1.0)-x)); }
52
}
53
#endif // HAS_C99_TR1_CMATH
54
55
namespace
Sacado {
56
57
// Replacement for ternary operator, for scalar types that don't implement
58
// logical operations that return bool, e.g., a simd scalar type that returns
59
// a simd bool. Sacado overloaded operators use this internally when ever
60
// the ternary operator would be used. It can also be used by client code.
61
template
<
typename
Cond,
typename
T>
62
KOKKOS_INLINE_FUNCTION
63
T
if_then_else
(
const
Cond cond,
const
T
&
a
,
const
T
& b) {
64
return
cond ? a : b;
65
}
66
67
}
68
69
#endif // SACADO_CMATH_HPP
asinh
asinh(expr.val())
atanh
atanh(expr.val())
a
a
Definition:
Sacado_CacheFad_Ops.hpp:426
KOKKOS_INLINE_FUNCTION
#define KOKKOS_INLINE_FUNCTION
Definition:
Sacado_ConfigDefs.h:90
T
#define T
Definition:
Sacado_rad.hpp:573
sqrt
sqrt(expr.val())
log
log(expr.val())
acosh
acosh(expr.val())
Sacado::if_then_else
KOKKOS_INLINE_FUNCTION T if_then_else(const Cond cond, const T &a, const T &b)
Definition:
Sacado_cmath.hpp:63
Sacado_ConfigDefs.h
Generated by
1.8.5