Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
MathApfloat.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* MathApfloat.h (C) 2000-2020 */
9/* */
10/* Fonctions mathématiques diverses pour le type apfloat. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_MATHAPFLOAT_H
13#define ARCANE_UTILS_MATHAPFLOAT_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include <apfloat.h>
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane::math
23{
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26/*!
27 * \brief Logarithme népérien de \a v.
28 */
29inline apfloat
30log(apfloat v)
31{
32#ifdef ARCANE_CHECK_MATH
33 if (v==0.0 || v<0.0)
35#endif
36 return ::log(v);
37}
38
39/*!
40 * \brief Arondir \a v à l'entier immédiatement inférieur.
41 */
42inline apfloat
43floor(apfloat v)
44{
45 return ::floor(v);
46}
47
48/*---------------------------------------------------------------------------*/
49/*---------------------------------------------------------------------------*/
50/*!
51 * \brief Exponentielle de \a v.
52 */
53inline apfloat
54exp(apfloat v)
55{
56 return ::exp(v);
57}
58
59/*---------------------------------------------------------------------------*/
60/*---------------------------------------------------------------------------*/
61/*!
62 * \brief Racine carrée de \a v.
63 */
64inline apfloat
65sqrt(apfloat v)
66{
67#ifdef ARCANE_CHECK_MATH
68 if (v<0.)
70#endif
71 return ::sqrt(v);
72}
73
74/*---------------------------------------------------------------------------*/
75/*---------------------------------------------------------------------------*/
76/*!
77 * \brief Fonction puissance.
78 *
79 * Calcul \a x à la puissance \a y.
80 *
81 * \pre x>=0 ou y entier
82 */
83inline apfloat
84pow(apfloat x,apfloat y)
85{
86#ifdef ARCANE_CHECK_MATH
87 // Arguments invalides si x est négatif et y non entier
88 if (x<0.0 && ::floor(y)!=y)
90#endif
91 return ::pow(x,y);
92}
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96/*!
97 * \brief Retourne le minimum de deux réels.
98 * \ingroup GroupMathUtils
99 */
100inline apfloat
101min(apfloat a,apfloat b)
102{
103 return ( (a<b) ? a : b );
104}
105
106/*---------------------------------------------------------------------------*/
107/*---------------------------------------------------------------------------*/
108/*!
109 * \brief Retourne le maximum de deux réels.
110 * \ingroup GroupMathUtils
111 */
112inline apfloat
113max(apfloat a,apfloat b)
114{
115 return ( (a<b) ? b : a );
116}
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
120/*!
121 * \brief Retourne la valeur absolue d'un réel.
122 * \ingroup GroupMathUtils
123 */
124inline apfloat
125abs(apfloat a)
126{
127 return ::abs(a);
128}
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
132
133} // End namespace Arcane::math
134
135/*---------------------------------------------------------------------------*/
136/*---------------------------------------------------------------------------*/
137
138#endif
__host__ __device__ Real2 min(Real2 a, Real2 b)
Retourne le minimum de deux Real2.
Definition MathUtils.h:336
T max(const T &a, const T &b, const T &c)
Retourne le maximum de trois éléments.
Definition MathUtils.h:392
double toDouble(Real r)
Converti un Real en double.
Definition Convert.h:40
Espace de nom pour les fonctions mathématiques.
Definition MathUtils.h:41
__host__ __device__ double pow(double x, double y)
Fonction puissance.
Definition Math.h:166
__host__ __device__ double floor(double v)
Arondir v à l'entier immédiatement inférieur.
Definition Math.h:96
__host__ __device__ double sqrt(double v)
Racine carrée de v.
Definition Math.h:135
__host__ __device__ double log(double v)
Logarithme népérien de v.
Definition Math.h:40
__host__ __device__ double exp(double v)
Exponentielle de v.
Definition Math.h:116
__host__ __device__ void arcaneMathError(long double arg_value, const char *func_name)
Signale un argument invalide d'une fonction mathématique.