12#ifndef ARCANE_CORE_VARIABLEDATATYPETRAITS_H
13#define ARCANE_CORE_VARIABLEDATATYPETRAITS_H
17#include "arcane/utils/PlatformUtils.h"
18#include "arcane/utils/ValueConvert.h"
19#include "arcane/utils/BFloat16.h"
20#include "arcane/utils/Float16.h"
21#include "arcane/utils/Float128.h"
22#include "arcane/utils/Int128.h"
39template <
typename DataType>
inline void
42 std::ostringstream sbuf;
55template <
typename DataType>
92 typedef Byte BasicType;
94 static constexpr Integer nbBasicType() {
return 1; }
96 typedef Byte NormType;
101 static constexpr const char*
typeName() {
return "Byte"; }
113 static bool verifDifferent(
Byte v1,
Byte v2,
Byte& diff,
114 [[maybe_unused]]
bool is_nan_equal =
false)
116 return _verifDifferent(v1, v2, diff, v1);
119 [[maybe_unused]]
bool is_nan_equal =
false)
121 return _verifDifferent(v1, v2, diff, norm);
124 static NormType normeMax(Byte v)
126 return static_cast<Byte>(math::abs(v));
134 auto abs_diff = v1 - v2;
135 if (!math::isZero(divider))
136 abs_diff = abs_diff / divider;
137 diff =
static_cast<Byte>(diff);
159 typedef TrueType HasDump;
162 typedef TrueType HasReduce;
165 typedef TrueType HasReduceMinMax;
168 typedef TrueType IsNumeric;
170 typedef Real BasicType;
172 static constexpr Integer nbBasicType() {
return 1; }
174 typedef Real NormType;
179 static constexpr const char* typeName() {
return "Real"; }
189 static bool getValue(
Type& v,
const String& s) {
return builtInGetValue(v, s); }
191 static bool verifDifferentNorm(
Type v1,
Type v2,
Type& diff,
Type norm,
bool is_nan_equal =
false)
193 return _verifDifferent(v1, v2, diff, norm, is_nan_equal);
196 static bool verifDifferent(
Type v1,
Type v2,
Type& diff,
bool is_nan_equal =
false)
198 return _verifDifferent(v1, v2, diff, v1, is_nan_equal);
201 static NormType normeMax(Real v)
208 static bool _verifDifferent(
Type v1,
Type v2,
Type& diff,
Type divider,
bool is_nan_equal)
211 if (std::isnan(v1) && std::isnan(v2))
216 if (platform::isDenormalized(v1) || platform::isDenormalized(v2)) {
221 if (math::abs(divider) < 1.e-100)
224 diff = (v1 - v2) / divider;
259 static constexpr Int32 nbBasicType() {
return 1; }
266 static constexpr const char*
typeName() {
return "Float128"; }
278 static bool verifDifferent(
Type v1,
Type v2,
Type& diff, [[maybe_unused]]
bool is_nan_equal =
false)
280 return _verifDifferent(v1, v2, diff, v1);
283 static bool verifDifferentNorm(
Type v1,
Type v2,
Type& diff, NormType norm, [[maybe_unused]]
bool is_nan_equal)
285 return _verifDifferent(v1, v2, diff, norm);
288 static NormType normeMax(Float128 v)
298 if (math::abs(divider) < 1.e-100)
301 diff = (v1 - v2) / divider;
334 typedef Int8 BasicType;
336 static constexpr Int32 nbBasicType() {
return 1; }
338 typedef Int8 NormType;
343 static constexpr const char*
typeName() {
return "Int8"; }
354 static bool verifDifferent(
Int8 v1,
Int8 v2,
Int8& diff,
355 [[maybe_unused]]
bool is_nan_equal =
false)
359 diff = (
Int8)(v1 - v2);
361 diff = (
Int8)((v1 - v2) / v1);
366 static bool verifDifferentNorm(
Type v1,
Type v2,
Type& diff,
367 [[maybe_unused]] NormType norm,
368 [[maybe_unused]]
bool is_nan_equal =
false)
370 return verifDifferent(v1, v2, diff, is_nan_equal);
372 static NormType normeMax(Int8 v)
374 return static_cast<Int8>(math::abs(v));
404 typedef Int16 BasicType;
406 static constexpr Integer nbBasicType() {
return 1; }
408 typedef Int16 NormType;
413 static constexpr const char*
typeName() {
return "Int16"; }
425 [[maybe_unused]]
bool is_nan_equal =
false)
429 diff = (
Int16)(v1 - v2);
431 diff = (
Int16)((v1 - v2) / v1);
436 static bool verifDifferentNorm(
Type v1,
Type v2,
Type& diff,
437 [[maybe_unused]] NormType norm,
438 [[maybe_unused]]
bool is_nan_equal =
false)
440 return verifDifferent(v1, v2, diff, is_nan_equal);
442 static NormType normeMax(Int16 v)
474 typedef Int32 BasicType;
476 static constexpr Integer nbBasicType() {
return 1; }
478 typedef Int32 NormType;
483 static constexpr const char*
typeName() {
return "Int32"; }
495 [[maybe_unused]]
bool is_nan_equal =
false)
501 diff = (v1 - v2) / v1;
506 static bool verifDifferentNorm(
Type v1,
Type v2,
Type& diff,
507 [[maybe_unused]] NormType norm,
508 [[maybe_unused]]
bool is_nan_equal =
false)
510 return verifDifferent(v1, v2, diff, is_nan_equal);
513 static NormType normeMax(Int32 v)
545 typedef Int64 BasicType;
547 static constexpr Integer nbBasicType() {
return 1; }
549 typedef Int64 NormType;
554 static constexpr const char*
typeName() {
return "Int64"; }
566 static bool verifDifferent(
Type v1,
Type v2,
Type& diff,
567 [[maybe_unused]]
bool is_nan_equal =
false)
573 diff = (v1 - v2) / v1;
579 static bool verifDifferentNorm(
Type v1,
Type v2,
Type& diff,
580 [[maybe_unused]] NormType norm,
581 [[maybe_unused]]
bool is_nan_equal =
false)
583 return verifDifferent(v1, v2, diff, is_nan_equal);
586 static NormType normeMax(Int64 v)
620 static constexpr Int32 nbBasicType() {
return 1; }
627 static constexpr const char*
typeName() {
return "Int128"; }
639 static bool verifDifferent(
Type v1,
Type v2,
Type& diff,
640 [[maybe_unused]]
bool is_nan_equal =
false)
646 diff = (v1 - v2) / v1;
652 static bool verifDifferentNorm(
Type v1,
Type v2,
Type& diff,
653 [[maybe_unused]] NormType norm,
654 [[maybe_unused]]
bool is_nan_equal =
false)
656 return verifDifferent(v1, v2, diff, is_nan_equal);
659 static NormType normeMax(Int16 v)
661 return static_cast<Int16
>(math::abs(v));
696 static constexpr Integer nbBasicType() {
return 1; }
701 static constexpr const char*
typeName() {
return "String"; }
713 static bool verifDifferent(
const Type v1,
const Type& v2,
Type& diff,
714 [[maybe_unused]]
bool is_nan_equal =
false)
719 static bool verifDifferentNorm(
const Type v1,
const Type& v2,
Type& diff,
720 [[maybe_unused]]
const String& divider,
721 [[maybe_unused]]
bool is_nan_equal =
false)
723 return verifDifferent(v1, v2, diff, is_nan_equal);
755 static constexpr Integer nbBasicType() {
return 1; }
762 static constexpr const char*
typeName() {
return "BFloat16"; }
774 static bool verifDifferent(
float v1,
float v2,
BFloat16& diff,
775 [[maybe_unused]]
bool is_nan_equal =
false)
777 return _verifDifferent(v1, v2, diff, v1);
780 static bool verifDifferentNorm(
float v1,
float v2, BFloat16& diff, NormType norm,
781 [[maybe_unused]]
bool is_nan_equal =
false)
783 return _verifDifferent(v1, v2, diff, norm);
788 return static_cast<Type>(math::abs(v));
793 static bool _verifDifferent(
float v1,
float v2, BFloat16& diff,
float divider)
797 if (math::abs(divider) != 0.0)
800 fdiff = (v1 - v2) / divider;
801 diff =
static_cast<Type>(fdiff);
836 static constexpr Integer nbBasicType() {
return 1; }
843 static constexpr const char*
typeName() {
return "Float16"; }
855 static bool verifDifferent(
float v1,
float v2,
Float16& diff,
856 [[maybe_unused]]
bool is_nan_equal =
false)
858 return _verifDifferent(v1, v2, diff, v1);
861 static bool verifDifferentNorm(
float v1,
float v2, Float16& diff, NormType norm,
862 [[maybe_unused]]
bool is_nan_equal =
false)
864 return _verifDifferent(v1, v2, diff, norm);
867 static Float16 normeMax(Float16 v)
869 return static_cast<Float16>(math::abs(v));
874 static bool _verifDifferent(
float v1,
float v2, Float16& diff,
float divider)
878 if (math::abs(divider) != 0.0)
881 fdiff = (v1 - v2) / divider;
882 diff =
static_cast<Type>(fdiff);
915 typedef Real BasicType;
917 static constexpr Integer nbBasicType() {
return 1; }
924 static constexpr const char*
typeName() {
return "Float32"; }
936 static bool verifDifferentNorm(
Type v1,
Type v2,
Type& diff, NormType norm,
bool is_nan_equal =
false)
938 return _verifDifferent(v1, v2, diff, norm, is_nan_equal);
941 static bool verifDifferent(
Type v1,
Type v2,
Type& diff,
bool is_nan_equal =
false)
943 return _verifDifferent(v1, v2, diff, v1, is_nan_equal);
946 static Float32 normeMax(Float32 v)
953 static bool _verifDifferent(
Type v1,
Type v2,
Type& diff,
Type divider,
bool is_nan_equal)
956 if (std::isnan(v1) && std::isnan(v2))
961 if (platform::isDenormalized(v1) || platform::isDenormalized(v2)) {
966 if (math::abs(divider) < 1.e-40)
969 diff = (v1 - v2) / divider;
991 typedef TrueType HasDump;
994 typedef TrueType HasReduce;
997 typedef TrueType HasReduceMinMax;
1000 typedef TrueType IsNumeric;
1002 typedef Real BasicType;
1004 static constexpr Integer nbBasicType() {
return 2; }
1006 typedef Real NormType;
1010 using SubTraits = VariableDataTypeTraitsT<Real>;
1015 static constexpr const char* typeName() {
return "Real2"; }
1019 static void dumpValue(String& s,
const Type&) { s =
"N/A"; }
1025 static bool getValue(
Type& v,
const String& s) {
return builtInGetValue(v, s); }
1027 static bool verifDifferent(Real2 v1, Real2 v2, Real2& diff,
bool is_nan_equal =
false)
1029 bool is_different =
false;
1030 is_different |= SubTraits::verifDifferent(v1.x, v2.x, diff.x, is_nan_equal);
1031 is_different |= SubTraits::verifDifferent(v1.y, v2.y, diff.y, is_nan_equal);
1032 return is_different;
1035 static bool verifDifferentNorm(
const Real2& v1,
const Real2& v2, Real2& diff, NormType norm, [[maybe_unused]]
bool is_nan_equal)
1037 if (norm < 1.e-100) {
1038 diff.x = math::abs(v2.x);
1039 diff.y = math::abs(v2.y);
1042 diff.x = math::abs(v2.x - v1.x) / norm;
1043 diff.y = math::abs(v2.y - v1.y) / norm;
1045 bool is_different = (normeMax(diff) != 0.);
1046 return is_different;
1049 static NormType normeMax(
const Real2& v)
1051 Real vx = SubTraits::normeMax(v.x);
1052 Real vy = SubTraits::normeMax(v.y);
1053 return math::max(vx, vy);
1072 typedef TrueType HasDump;
1075 typedef TrueType HasReduce;
1078 typedef TrueType HasReduceMinMax;
1081 typedef TrueType IsNumeric;
1083 typedef Real BasicType;
1085 static constexpr Integer nbBasicType() {
return 3; }
1087 typedef Real NormType;
1091 using SubTraits = VariableDataTypeTraitsT<Real>;
1096 static constexpr const char* typeName() {
return "Real3"; }
1100 static void dumpValue(String& s,
const Type&) { s =
"N/A"; }
1106 static bool getValue(
Type& v,
const String& s) {
return builtInGetValue(v, s); }
1108 static bool verifDifferent(Real3 v1, Real3 v2, Real3& diff,
bool is_nan_equal =
false)
1110 bool is_different =
false;
1111 is_different |= SubTraits::verifDifferent(v1.x, v2.x, diff.x, is_nan_equal);
1112 is_different |= SubTraits::verifDifferent(v1.y, v2.y, diff.y, is_nan_equal);
1113 is_different |= SubTraits::verifDifferent(v1.z, v2.z, diff.z, is_nan_equal);
1114 return is_different;
1117 static bool verifDifferentNorm(
const Real3& v1,
const Real3& v2, Real3& diff, NormType norm, [[maybe_unused]]
bool is_nan_equal)
1119 if (norm < 1.e-100) {
1120 diff.x = math::abs(v2.x);
1121 diff.y = math::abs(v2.y);
1122 diff.z = math::abs(v2.z);
1125 diff.x = math::abs(v2.x - v1.x) / norm;
1126 diff.y = math::abs(v2.y - v1.y) / norm;
1127 diff.z = math::abs(v2.z - v1.z) / norm;
1129 bool is_different = (normeMax(diff) != 0.);
1130 return is_different;
1133 static NormType normeMax(
const Real3& v)
1135 Real vx = SubTraits::normeMax(v.x);
1136 Real vy = SubTraits::normeMax(v.y);
1137 Real vz = SubTraits::normeMax(v.z);
1138 return math::max(vx, math::max(vy, vz));
1168 typedef Real BasicType;
1170 static constexpr Integer nbBasicType() {
return 4; }
1172 typedef Real NormType;
1181 static constexpr const char*
typeName() {
return "Real2x2"; }
1195 bool is_different =
false;
1196 is_different |= SubTraits::verifDifferent(v1.
x, v2.
x, diff.
x, is_nan_equal);
1197 is_different |= SubTraits::verifDifferent(v1.
y, v2.
y, diff.
y, is_nan_equal);
1198 return is_different;
1201 static bool verifDifferentNorm(
const Real2x2& v1,
const Real2x2& v2, Real2x2& diff, NormType norm, [[maybe_unused]]
bool is_nan_equal)
1203 if (norm < 1.e-100) {
1204 diff.x.x = math::abs(v2.x.x);
1205 diff.x.y = math::abs(v2.x.y);
1207 diff.y.x = math::abs(v2.y.x);
1208 diff.y.y = math::abs(v2.y.y);
1211 diff.x.x = math::abs(v2.x.x - v1.x.x) / norm;
1212 diff.x.y = math::abs(v2.x.y - v1.x.y) / norm;
1214 diff.y.x = math::abs(v2.y.x - v1.y.x) / norm;
1215 diff.y.y = math::abs(v2.y.y - v1.y.y) / norm;
1217 bool is_different = (normeMax(diff) != 0.);
1218 return is_different;
1221 static NormType normeMax(
const Real2x2& v)
1223 Real vx = SubTraits::normeMax(v.x);
1224 Real vy = SubTraits::normeMax(v.y);
1225 return SubTraits::normeMax(Real2(vx, vy));
1255 typedef Real BasicType;
1257 static constexpr Integer nbBasicType() {
return 9; }
1259 typedef Real NormType;
1268 static constexpr const char*
typeName() {
return "Real3x3"; }
1282 bool is_different =
false;
1283 is_different |= SubTraits::verifDifferent(v1.
x, v2.
x, diff.
x, is_nan_equal);
1284 is_different |= SubTraits::verifDifferent(v1.
y, v2.
y, diff.
y, is_nan_equal);
1285 is_different |= SubTraits::verifDifferent(v1.
z, v2.
z, diff.
z, is_nan_equal);
1286 return is_different;
1289 static bool verifDifferentNorm(
const Real3x3& v1,
const Real3x3& v2, Real3x3& diff, NormType norm, [[maybe_unused]]
bool is_nan_equal)
1291 if (norm < 1.e-100) {
1292 diff.x.x = math::abs(v2.x.x);
1293 diff.x.y = math::abs(v2.x.y);
1294 diff.x.z = math::abs(v2.x.z);
1296 diff.y.x = math::abs(v2.y.x);
1297 diff.y.y = math::abs(v2.y.y);
1298 diff.y.z = math::abs(v2.y.z);
1300 diff.z.x = math::abs(v2.z.x);
1301 diff.z.y = math::abs(v2.z.y);
1302 diff.z.z = math::abs(v2.z.z);
1305 diff.x.x = math::abs(v2.x.x - v1.x.x) / norm;
1306 diff.x.y = math::abs(v2.x.y - v1.x.y) / norm;
1307 diff.x.z = math::abs(v2.x.z - v1.x.z) / norm;
1309 diff.y.x = math::abs(v2.y.x - v1.y.x) / norm;
1310 diff.y.y = math::abs(v2.y.y - v1.y.y) / norm;
1311 diff.y.z = math::abs(v2.y.z - v1.y.z) / norm;
1313 diff.z.x = math::abs(v2.z.x - v1.z.x) / norm;
1314 diff.z.y = math::abs(v2.z.y - v1.z.y) / norm;
1315 diff.z.z = math::abs(v2.z.z - v1.z.z) / norm;
1317 bool is_different = (normeMax(diff) != 0.);
1318 return is_different;
1321 static NormType normeMax(
const Real3x3& v)
1323 Real vx = SubTraits::normeMax(v.x);
1324 Real vy = SubTraits::normeMax(v.y);
1325 Real vz = SubTraits::normeMax(v.z);
1326 return VariableDataTypeTraitsT<Real3>::normeMax(Real3(vx, vy, vz));
Fichier contenant les définitions des types de données gérés par Arcane.
Type flottant sur 128 bits.
Type flottant demi-précision.
Type entier sur 128 bits.
Classe gérant un vecteur de réel de dimension 2.
Classe gérant une matrice de réel de dimension 2x2.
Real2 x
Première composante.
Real2 y
Deuxième composante.
Classe gérant un vecteur de réel de dimension 3.
Classe gérant une matrice de réel de dimension 3x3.
Real3 z
premier élément du triplet
Real3 y
premier élément du triplet
Real3 x
premier élément du triplet
Chaîne de caractères unicode.
TrueType IsNumeric
Indique si le type est numérique.
static constexpr eDataType type()
Retourne le type de la variable.
BFloat16 Type
Type du paramètre template.
FalseType HasReduce
Indique si le type peut être subir une réduction.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
FalseType HasDump
Indique si le type peut être sauvé et relu.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType IsNumeric
Indique si le type est numérique.
TrueType HasDump
Indique si le type peut être sauvé et relu.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
Byte Type
Type du paramètre template.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
FalseType HasReduce
Indique si le type peut être subir une réduction.
static constexpr eDataType type()
Retourne le type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
TrueType HasDump
Indique si le type peut être sauvé et relu.
TrueType IsNumeric
Indique si le type est numérique.
Float128 Type
Type du paramètre template.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static constexpr eDataType type()
Retourne le type de la variable.
FalseType HasDump
Indique si le type peut être sauvé et relu.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
Float16 Type
Type du paramètre template.
TrueType IsNumeric
Indique si le type est numérique.
FalseType HasReduce
Indique si le type peut être subir une réduction.
Float32 Type
Type du paramètre template.
TrueType HasReduce
Indique si le type peut être subir une réduction.
FalseType HasDump
Indique si le type peut être sauvé et relu.
TrueType IsNumeric
Indique si le type est numérique.
static constexpr eDataType type()
Retourne le type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
TrueType IsNumeric
Indique si le type est numérique.
Int128 Type
Type du paramètre template.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static constexpr eDataType type()
Retourne le type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
FalseType HasReduce
Indique si le type peut être subir une réduction.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
TrueType IsNumeric
Indique si le type est numérique.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
Int16 Type
Type du paramètre template.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
TrueType HasDump
Indique si le type peut être sauvé et relu.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
Int32 Type
Type du paramètre template.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType IsNumeric
Indique si le type est numérique.
TrueType HasReduce
Indique si le type peut être subir une réduction.
TrueType HasReduce
Indique si le type peut être subir une réduction.
static constexpr eDataType type()
Retourne le type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
Int64 Type
Type du paramètre template.
TrueType IsNumeric
Indique si le type est numérique.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
Int8 Type
Type du paramètre template.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
TrueType IsNumeric
Indique si le type est numérique.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
static constexpr eDataType type()
Retourne le type de la variable.
TrueType IsNumeric
Indique si le type est numérique.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
Real2x2 Type
Type du paramètre template.
static bool getValue(Type &, const String &)
Stocke la conversion de la chaîne s en le type Type dans v.
TrueType HasDump
Indique si le type peut être sauvé et relu.
static void dumpValue(String &s, const Type &)
Ecrit dans la chaîne s la valeur de v.
TrueType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
TrueType HasDump
Indique si le type peut être sauvé et relu.
static constexpr eDataType type()
Retourne le type de la variable.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
TrueType HasReduce
Indique si le type peut être subir une réduction.
Real3x3 Type
Type du paramètre template.
static bool getValue(Type &, const String &)
Stocke la conversion de la chaîne s en le type Type dans v.
static void dumpValue(String &s, const Type &)
Ecrit dans la chaîne s la valeur de v.
TrueType IsNumeric
Indique si le type est numérique.
FalseType HasReduceMinMax
Indique si le type peut être subir une réduction Min/Max.
static constexpr eDataType type()
Retourne le type de la variable.
static constexpr const char * typeName()
Retourne le nom du type de la variable.
FalseType IsNumeric
Indique si le type est numérique.
TrueType HasDump
Indique si le type peut être sauvé et relu.
FalseType HasReduce
Indique si le type peut être subir une réduction.
static void dumpValue(String &s, const Type &v)
Ecrit dans la chaîne s la valeur de v.
static bool getValue(Type &v, const String &s)
Stocke la conversion de la chaîne s en le type Type dans v.
String Type
Type du paramètre template.
Classe template d'informations sur un type d'une variable.
bool isZero(const BuiltInProxy< _Type > &a)
Teste si une valeur est exactement égale à zéro.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int8_t Int8
Type entier signé sur 8 bits.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
void builtInDumpValue(String &s, const DataType &v)
Ecriture dans la chaine s d'un type basique de valeur v.
std::int16_t Int16
Type entier signé sur 16 bits.
double Real
Type représentant un réel.
unsigned char Byte
Type d'un octet.
float Float32
Type flottant IEEE-753 simple précision.
eDataType
Type d'une donnée.
@ DT_Float32
Donnée de type 'Float32'.
@ DT_Int128
Donnée de type entier sur 128 bits.
@ DT_Real2x2
Donnée de type tenseur 3x3.
@ DT_Int16
Donnée de type entier 16 bits.
@ DT_Int8
Donnée de type entier sur 8 bits.
@ DT_Real3x3
Donnée de type tenseur 3x3.
@ DT_Int32
Donnée de type entier 32 bits.
@ DT_Real3
Donnée de type vecteur 3.
@ DT_Float16
Donnée de type 'Float16'.
@ DT_Int64
Donnée de type entier 64 bits.
@ DT_Unknown
Donnée de type inconnue ou non initialisée.
@ DT_String
Donnée de type chaîne de caractère UTF-8.
@ DT_BFloat16
Donnée de type 'BFloat16'.
@ DT_Real2
Donnée de type vecteur 2.
@ DT_Real
Donnée de type réel.
@ DT_Byte
Donnée de type octet.
@ DT_Float128
Donnée de type flottant sur 128 bits.
std::int32_t Int32
Type entier signé sur 32 bits.
Arcane::BFloat16 BFloat16
Type 'Brain Float16'.
Arcane::Float16 Float16
Type 'Float16' (binary16)
Structure équivalente à la valeur booléenne vrai.
Structure équivalente à la valeur booléenne vrai.