Arcane  v3.14.10.0
Documentation développeur
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/*---------------------------------------------------------------------------*/
29inline apfloat
31{
32#ifdef ARCANE_CHECK_MATH
33 if (v==0.0 || v<0.0)
35#endif
36 return ::log(v);
37}
38
42inline apfloat
44{
45 return ::floor(v);
46}
47
48/*---------------------------------------------------------------------------*/
49/*---------------------------------------------------------------------------*/
53inline apfloat
55{
56 return ::exp(v);
57}
58
59/*---------------------------------------------------------------------------*/
60/*---------------------------------------------------------------------------*/
64inline apfloat
66{
67#ifdef ARCANE_CHECK_MATH
68 if (v<0.)
70#endif
71 return ::sqrt(v);
72}
73
74/*---------------------------------------------------------------------------*/
75/*---------------------------------------------------------------------------*/
83inline apfloat
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/*---------------------------------------------------------------------------*/
100inline apfloat
102{
103 return ( (a<b) ? a : b );
104}
105
106/*---------------------------------------------------------------------------*/
107/*---------------------------------------------------------------------------*/
112inline apfloat
114{
115 return ( (a<b) ? b : a );
116}
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
124inline apfloat
126{
127 return ::abs(a);
128}
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
132
133} // End namespace Arcane::math
134
135/*---------------------------------------------------------------------------*/
136/*---------------------------------------------------------------------------*/
137
138#endif
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
T max(const T &a, const T &b, const T &c)
Retourne le maximum de trois éléments.
Definition MathUtils.h:392
ARCCORE_HOST_DEVICE Real2 min(Real2 a, Real2 b)
Retourne le minimum de deux Real2.
Definition MathUtils.h:336
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
ARCCORE_HOST_DEVICE double floor(double v)
Arondir v à l'entier immédiatement inférieur.
Definition Math.h:96
ARCCORE_HOST_DEVICE double exp(double v)
Exponentielle de v.
Definition Math.h:116
ARCCORE_HOST_DEVICE double log(double v)
Logarithme népérien de v.
Definition Math.h:40
ARCCORE_HOST_DEVICE double pow(double x, double y)
Fonction puissance.
Definition Math.h:166
ARCCORE_HOST_DEVICE double sqrt(double v)
Racine carrée de v.
Definition Math.h:135
ARCCORE_HOST_DEVICE void arcaneMathError(long double arg_value, const char *func_name)
Signale un argument invalide d'une fonction mathématique.