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