diff --git a/c++/src/H5PredType.cpp b/c++/src/H5PredType.cpp
index f8a63b34b2b..304f70f81d2 100644
--- a/c++/src/H5PredType.cpp
+++ b/c++/src/H5PredType.cpp
@@ -154,6 +154,8 @@ PredType *PredType::IEEE_F64LE_;
PredType *PredType::FLOAT_BFLOAT16BE_;
PredType *PredType::FLOAT_BFLOAT16LE_;
+PredType *PredType::FLOAT_F8E4M3_;
+PredType *PredType::FLOAT_F8E5M2_;
PredType *PredType::UNIX_D32BE_;
PredType *PredType::UNIX_D32LE_;
@@ -344,6 +346,8 @@ PredType::makePredTypes()
FLOAT_BFLOAT16BE_ = new PredType(H5T_FLOAT_BFLOAT16BE);
FLOAT_BFLOAT16LE_ = new PredType(H5T_FLOAT_BFLOAT16LE);
+ FLOAT_F8E4M3_ = new PredType(H5T_FLOAT_F8E4M3);
+ FLOAT_F8E5M2_ = new PredType(H5T_FLOAT_F8E5M2);
UNIX_D32BE_ = new PredType(H5T_UNIX_D32BE);
UNIX_D32LE_ = new PredType(H5T_UNIX_D32LE);
@@ -500,6 +504,8 @@ PredType::deleteConstants()
delete FLOAT_BFLOAT16BE_;
delete FLOAT_BFLOAT16LE_;
+ delete FLOAT_F8E4M3_;
+ delete FLOAT_F8E5M2_;
delete UNIX_D32BE_;
delete UNIX_D32LE_;
@@ -660,6 +666,8 @@ const PredType &PredType::IEEE_F64LE = *IEEE_F64LE_;
const PredType &PredType::FLOAT_BFLOAT16BE = *FLOAT_BFLOAT16BE_;
const PredType &PredType::FLOAT_BFLOAT16LE = *FLOAT_BFLOAT16LE_;
+const PredType &PredType::FLOAT_F8E4M3 = *FLOAT_F8E4M3_;
+const PredType &PredType::FLOAT_F8E5M2 = *FLOAT_F8E5M2_;
const PredType &PredType::UNIX_D32BE = *UNIX_D32BE_;
const PredType &PredType::UNIX_D32LE = *UNIX_D32LE_;
diff --git a/c++/src/H5PredType.h b/c++/src/H5PredType.h
index 7668755b6c4..dbc17a5c733 100644
--- a/c++/src/H5PredType.h
+++ b/c++/src/H5PredType.h
@@ -94,6 +94,8 @@ class H5CPP_DLL PredType : public AtomType {
static const PredType &FLOAT_BFLOAT16BE;
static const PredType &FLOAT_BFLOAT16LE;
+ static const PredType &FLOAT_F8E4M3;
+ static const PredType &FLOAT_F8E5M2;
static const PredType &UNIX_D32BE;
static const PredType &UNIX_D32LE;
@@ -267,6 +269,8 @@ class H5CPP_DLL PredType : public AtomType {
static PredType *FLOAT_BFLOAT16BE_;
static PredType *FLOAT_BFLOAT16LE_;
+ static PredType *FLOAT_F8E4M3_;
+ static PredType *FLOAT_F8E5M2_;
static PredType *UNIX_D32BE_;
static PredType *UNIX_D32LE_;
diff --git a/doxygen/dox/DDLBNF200.dox b/doxygen/dox/DDLBNF200.dox
index 9ea466e25e4..1e5c8d611a0 100644
--- a/doxygen/dox/DDLBNF200.dox
+++ b/doxygen/dox/DDLBNF200.dox
@@ -100,6 +100,7 @@ This section contains a brief explanation of the symbols used in the DDL.
H5T_IEEE_F32BE | H5T_IEEE_F32LE |
H5T_IEEE_F64BE | H5T_IEEE_F64LE |
H5T_FLOAT_BFLOAT16BE | H5T_FLOAT_BFLOAT16LE |
+ H5T_FLOAT_F8E4M3 | H5T_FLOAT_F8E5M2 |
H5T_NATIVE_FLOAT16 | H5T_NATIVE_FLOAT |
H5T_NATIVE_DOUBLE | H5T_NATIVE_LDOUBLE
diff --git a/doxygen/examples/tables/predefinedDatatypes.dox b/doxygen/examples/tables/predefinedDatatypes.dox
index ead4daca4f3..4ec666dea08 100644
--- a/doxygen/examples/tables/predefinedDatatypes.dox
+++ b/doxygen/examples/tables/predefinedDatatypes.dox
@@ -50,6 +50,14 @@
#H5T_FLOAT_BFLOAT16LE |
16-bit little-endian bfloat16 floating point |
+
+#H5T_FLOAT_F8E4M3 |
+8-bit FP8 E4M3 (4 exponent bits, 3 mantissa bits) floating point |
+
+
+#H5T_FLOAT_F8E5M2 |
+8-bit FP8 E5M2 (5 exponent bits, 2 mantissa bits) floating point |
+
//! [predefined_alt_float_datatypes_table]
*
diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c
index a9300d9c045..5f72111ad81 100644
--- a/fortran/src/H5_f.c
+++ b/fortran/src/H5_f.c
@@ -253,6 +253,10 @@ h5init_types_c(hid_t_f *types, hid_t_f *floatingtypes, hid_t_f *integertypes)
return ret_value;
if ((floatingtypes[7] = (hid_t_f)H5Tcopy(H5T_FLOAT_BFLOAT16LE)) < 0)
return ret_value;
+ if ((floatingtypes[8] = (hid_t_f)H5Tcopy(H5T_FLOAT_F8E4M3)) < 0)
+ return ret_value;
+ if ((floatingtypes[9] = (hid_t_f)H5Tcopy(H5T_FLOAT_F8E5M2)) < 0)
+ return ret_value;
if ((integertypes[0] = (hid_t_f)H5Tcopy(H5T_STD_I8BE)) < 0)
return ret_value;
diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90
index 33e62b16b62..76582208297 100644
--- a/fortran/src/H5_ff.F90
+++ b/fortran/src/H5_ff.F90
@@ -295,6 +295,8 @@ END FUNCTION h5init1_flags_c
H5T_IEEE_F16LE = floating_types(6)
H5T_FLOAT_BFLOAT16BE = floating_types(7)
H5T_FLOAT_BFLOAT16LE = floating_types(8)
+ H5T_FLOAT_F8E4M3 = floating_types(9)
+ H5T_FLOAT_F8E5M2 = floating_types(10)
H5T_STD_I8BE = integer_types(1)
H5T_STD_I8LE = integer_types(2)
diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90
index 7e691ee38bf..6d8dd2c4685 100644
--- a/fortran/src/H5f90global.F90
+++ b/fortran/src/H5f90global.F90
@@ -63,7 +63,7 @@ MODULE H5GLOBAL
! Do not forget to change these values when new predefined
! datatypes are added
INTEGER, PARAMETER :: PREDEF_TYPES_LEN = 19
- INTEGER, PARAMETER :: FLOATING_TYPES_LEN = 8
+ INTEGER, PARAMETER :: FLOATING_TYPES_LEN = 10
INTEGER, PARAMETER :: INTEGER_TYPES_LEN = 28
! These arrays need to be global because they are used in
@@ -91,6 +91,8 @@ MODULE H5GLOBAL
!DEC$ATTRIBUTES DLLEXPORT :: H5T_IEEE_F16LE
!DEC$ATTRIBUTES DLLEXPORT :: H5T_FLOAT_BFLOAT16BE
!DEC$ATTRIBUTES DLLEXPORT :: H5T_FLOAT_BFLOAT16LE
+ !DEC$ATTRIBUTES DLLEXPORT :: H5T_FLOAT_F8E4M3
+ !DEC$ATTRIBUTES DLLEXPORT :: H5T_FLOAT_F8E5M2
!DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I8BE
!DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I8LE
!DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I16BE
@@ -145,6 +147,8 @@ MODULE H5GLOBAL
INTEGER(HID_T) :: H5T_IEEE_F16LE !< H5T_IEEE_F16LE
INTEGER(HID_T) :: H5T_FLOAT_BFLOAT16BE !< H5T_FLOAT_BFLOAT16BE
INTEGER(HID_T) :: H5T_FLOAT_BFLOAT16LE !< H5T_FLOAT_BFLOAT16LE
+ INTEGER(HID_T) :: H5T_FLOAT_F8E4M3 !< H5T_FLOAT_F8E4M3
+ INTEGER(HID_T) :: H5T_FLOAT_F8E5M2 !< H5T_FLOAT_F8E5M2
INTEGER(HID_T) :: H5T_STD_I8BE !< H5T_STD_I8BE
INTEGER(HID_T) :: H5T_STD_I8LE !< H5T_STD_I8LE
INTEGER(HID_T) :: H5T_STD_I16BE !< H5T_STD_I16BE
diff --git a/hl/src/H5LT.c b/hl/src/H5LT.c
index e737009d99b..73c91cdc436 100644
--- a/hl/src/H5LT.c
+++ b/hl/src/H5LT.c
@@ -2311,6 +2311,12 @@ H5LT_dtype_to_text(hid_t dtype, char *dt_str, H5LT_lang_t lang, size_t *slen, bo
else if (H5Tequal(dtype, H5T_FLOAT_BFLOAT16LE)) {
snprintf(dt_str, *slen, "H5T_FLOAT_BFLOAT16LE");
}
+ else if (H5Tequal(dtype, H5T_FLOAT_F8E4M3)) {
+ snprintf(dt_str, *slen, "H5T_FLOAT_F8E4M3");
+ }
+ else if (H5Tequal(dtype, H5T_FLOAT_F8E5M2)) {
+ snprintf(dt_str, *slen, "H5T_FLOAT_F8E5M2");
+ }
#ifdef H5_HAVE__FLOAT16
else if (H5Tequal(dtype, H5T_NATIVE_FLOAT16)) {
snprintf(dt_str, *slen, "H5T_NATIVE_FLOAT16");
diff --git a/hl/src/H5LTanalyze.c b/hl/src/H5LTanalyze.c
index 300332facd5..591f875df2c 100644
--- a/hl/src/H5LTanalyze.c
+++ b/hl/src/H5LTanalyze.c
@@ -645,8 +645,8 @@ static void yynoreturn yy_fatal_error ( const char* msg );
(yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 79
-#define YY_END_OF_BUFFER 80
+#define YY_NUM_RULES 81
+#define YY_END_OF_BUFFER 82
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -654,47 +654,47 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[352] =
+static const flex_int16_t yy_accept[361] =
{ 0,
- 78, 78, 80, 79, 78, 79, 70, 76, 77, 79,
- 79, 79, 79, 74, 75, 72, 73, 78, 0, 70,
- 0, 0, 0, 0, 0, 71, 0, 0, 0, 0,
- 0, 52, 0, 0, 0, 0, 0, 53, 0, 0,
+ 80, 80, 82, 81, 80, 81, 72, 78, 79, 81,
+ 81, 81, 81, 76, 77, 74, 75, 80, 0, 72,
+ 0, 0, 0, 0, 0, 73, 0, 0, 0, 0,
+ 0, 54, 0, 0, 0, 0, 0, 55, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 51, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 69, 50, 0, 0, 0, 59, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,
+ 0, 0, 0, 71, 52, 0, 0, 0, 61, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
- 68, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 70, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 67, 0, 0, 0, 0, 0,
- 0, 0, 0, 49, 0, 0, 0, 66, 0, 0,
+ 0, 0, 0, 0, 69, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 0, 0, 0, 68, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 0, 0, 0, 0, 0, 0,
- 9, 10, 0, 0, 61, 0, 0, 58, 0, 0,
+ 0, 0, 0, 0, 1, 2, 0, 0, 0, 0,
+ 0, 0, 9, 10, 0, 0, 63, 0, 0, 60,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
- 4, 5, 6, 7, 8, 11, 12, 13, 14, 15,
- 16, 0, 0, 0, 0, 57, 0, 60, 28, 29,
- 30, 31, 32, 33, 0, 0, 0, 22, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 17, 0, 0, 0, 0, 24, 0,
- 0, 0, 23, 0, 0, 0, 55, 0, 0, 0,
- 0, 0, 37, 0, 26, 18, 20, 19, 0, 25,
- 0, 54, 56, 0, 0, 38, 0, 0, 0, 27,
+ 0, 0, 3, 4, 5, 6, 7, 8, 11, 12,
+ 13, 14, 15, 16, 0, 0, 0, 0, 59, 0,
+ 0, 0, 62, 28, 29, 30, 31, 32, 33, 0,
+ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 17, 0, 0, 0, 0, 24, 0, 0, 0, 23,
+ 0, 0, 0, 57, 0, 0, 0, 0, 36, 37,
+ 0, 39, 0, 26, 18, 20, 19, 0, 25, 0,
- 21, 0, 0, 0, 36, 0, 39, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 34, 35,
+ 56, 58, 0, 0, 40, 0, 0, 0, 27, 21,
+ 0, 0, 0, 38, 0, 41, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 34, 35, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 40, 41, 42, 43, 44, 45, 0, 0,
- 0, 0, 0, 0, 0, 46, 0, 47, 0, 48,
- 0
+ 0, 42, 43, 44, 45, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 48, 0, 49, 0, 50, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -738,93 +738,95 @@ static const YY_CHAR yy_meta[42] =
1
} ;
-static const flex_int16_t yy_base[354] =
+static const flex_int16_t yy_base[363] =
{ 0,
- 0, 0, 377, 378, 374, 0, 0, 378, 378, 12,
- 366, 347, 342, 378, 378, 378, 378, 370, 368, 0,
- 352, 334, 337, 339, 337, 378, 334, 337, 324, 323,
- 17, 378, 343, 34, 15, 346, 337, 378, 329, 31,
- 332, 28, 338, 341, 327, 322, 35, 330, 337, 333,
- 313, 319, 323, 328, 315, 312, 317, 313, 323, 309,
- 325, 45, 309, 319, 300, 315, 378, 316, 319, 305,
- 300, 325, 305, 314, 296, 308, 303, 296, 284, 33,
- 300, 296, 302, 378, 378, 284, 40, 279, 378, 378,
- 286, 287, 276, 281, 281, 43, 287, 43, 297, 378,
-
- 378, 378, 292, 277, 55, 269, 293, 287, 287, 286,
- 71, 78, 283, 270, 274, 285, 265, 273, 267, 265,
- 280, 269, 85, 254, 378, 282, 285, 282, 56, 279,
- 282, 279, 71, 378, 263, 271, 261, 244, 265, 265,
- 261, 260, 239, 267, 270, 267, 80, 78, 83, 85,
- 256, 255, 90, 92, 94, 254, 253, 247, 253, 250,
- 245, 378, 244, 254, 241, 233, 96, 99, 101, 241,
- 235, 237, 234, 103, 102, 105, 240, 239, 238, 237,
- 236, 235, 378, 378, 234, 233, 232, 231, 230, 229,
- 378, 378, 53, 228, 378, 227, 222, 378, 217, 237,
-
- 223, 222, 221, 220, 219, 218, 221, 202, 207, 201,
- 205, 204, 204, 207, 201, 205, 200, 107, 203, 378,
- 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
- 378, 209, 204, 194, 202, 378, 205, 378, 378, 378,
- 378, 378, 378, 378, 189, 202, 202, 378, 183, 189,
- 193, 198, 182, 196, 178, 182, 182, 180, 188, 175,
- 189, 184, 170, 378, 177, 168, 183, 177, 378, 167,
- 164, 165, 378, 168, 172, 162, 378, 166, 172, 149,
- 182, 168, 86, 162, 378, 378, 378, 378, 164, 378,
- 152, 378, 378, 163, 171, 141, 169, 162, 159, 378,
-
- 378, 127, 116, 160, 378, 149, 135, 163, 166, 163,
- 152, 151, 142, 143, 150, 121, 123, 125, 378, 378,
- 141, 137, 137, 144, 143, 142, 141, 140, 139, 129,
- 132, 130, 378, 378, 378, 378, 378, 378, 130, 134,
- 123, 129, 111, 120, 108, 378, 123, 378, 70, 378,
- 378, 148, 74
+ 0, 0, 386, 387, 383, 0, 0, 387, 387, 12,
+ 375, 356, 351, 387, 387, 387, 387, 379, 377, 0,
+ 361, 343, 346, 348, 346, 387, 343, 346, 333, 332,
+ 17, 387, 352, 34, 15, 355, 346, 387, 338, 31,
+ 341, 28, 347, 350, 336, 331, 35, 339, 346, 342,
+ 322, 328, 332, 337, 324, 321, 326, 322, 332, 318,
+ 334, 45, 318, 328, 309, 324, 387, 325, 328, 314,
+ 309, 334, 314, 323, 305, 317, 312, 305, 293, 33,
+ 309, 305, 311, 387, 387, 293, 40, 288, 387, 387,
+ 295, 296, 285, 290, 290, 43, 296, 43, 306, 387,
+
+ 387, 387, 301, 286, 55, 278, 302, 296, 296, 295,
+ 71, 78, 292, 279, 283, 294, 274, 282, 276, 274,
+ 65, 279, 85, 264, 387, 292, 295, 292, 56, 289,
+ 292, 289, 71, 387, 273, 281, 271, 254, 275, 275,
+ 271, 270, 277, 248, 276, 279, 276, 80, 78, 83,
+ 85, 265, 264, 90, 92, 94, 263, 262, 256, 262,
+ 259, 254, 387, 253, 263, 250, 254, 241, 96, 99,
+ 101, 249, 243, 245, 242, 103, 102, 105, 248, 247,
+ 246, 245, 244, 243, 387, 387, 242, 241, 240, 239,
+ 238, 237, 387, 387, 103, 236, 387, 235, 230, 387,
+
+ 225, 123, 245, 231, 230, 229, 228, 227, 226, 229,
+ 210, 215, 209, 213, 212, 212, 215, 209, 213, 208,
+ 110, 211, 387, 387, 387, 387, 387, 387, 387, 387,
+ 387, 387, 387, 387, 217, 212, 202, 210, 387, 213,
+ 202, 201, 387, 387, 387, 387, 387, 387, 387, 195,
+ 208, 208, 387, 189, 195, 199, 204, 188, 202, 184,
+ 188, 188, 186, 194, 181, 195, 190, 176, 199, 199,
+ 387, 181, 172, 187, 181, 387, 171, 168, 169, 387,
+ 172, 176, 166, 387, 170, 176, 153, 186, 387, 387,
+ 172, 86, 166, 387, 387, 387, 387, 168, 387, 156,
+
+ 387, 387, 167, 175, 145, 173, 166, 163, 387, 387,
+ 132, 123, 164, 387, 153, 139, 167, 170, 167, 156,
+ 155, 146, 147, 154, 125, 126, 128, 387, 387, 145,
+ 141, 141, 148, 147, 146, 145, 144, 143, 133, 136,
+ 134, 387, 387, 387, 387, 387, 387, 134, 138, 128,
+ 135, 116, 124, 111, 387, 126, 387, 70, 387, 387,
+ 151, 74
} ;
-static const flex_int16_t yy_def[354] =
+static const flex_int16_t yy_def[363] =
{ 0,
- 351, 1, 351, 351, 351, 352, 353, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 352, 353,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
-
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
-
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
-
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 0, 351, 351
+ 360, 1, 360, 360, 360, 361, 362, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 361, 362,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 0,
+ 360, 360
} ;
-static const flex_int16_t yy_nxt[420] =
+static const flex_int16_t yy_nxt[429] =
{ 0,
4, 5, 6, 7, 7, 7, 7, 7, 7, 7,
7, 8, 9, 4, 4, 10, 4, 4, 4, 4,
@@ -833,48 +835,49 @@ static const flex_int16_t yy_nxt[420] =
17, 21, 22, 36, 48, 49, 37, 39, 63, 40,
57, 41, 42, 58, 97, 43, 53, 64, 44, 45,
54, 79, 103, 46, 111, 104, 47, 114, 119, 55,
- 151, 98, 115, 80, 112, 126, 20, 127, 152, 232,
- 128, 129, 130, 233, 131, 156, 120, 132, 133, 144,
- 297, 145, 177, 157, 146, 170, 171, 179, 172, 181,
-
- 178, 173, 174, 350, 185, 180, 187, 182, 189, 175,
- 201, 176, 186, 203, 188, 205, 190, 214, 202, 211,
- 216, 204, 215, 206, 298, 212, 217, 218, 213, 256,
- 311, 308, 257, 309, 219, 324, 310, 326, 312, 328,
- 349, 348, 347, 325, 346, 327, 345, 329, 19, 344,
- 19, 343, 342, 341, 340, 339, 338, 337, 336, 335,
- 334, 333, 332, 331, 330, 323, 322, 321, 320, 319,
- 318, 317, 316, 315, 314, 313, 307, 306, 305, 304,
- 303, 302, 301, 300, 299, 296, 295, 294, 293, 292,
- 291, 290, 289, 288, 287, 286, 285, 284, 283, 282,
-
- 281, 280, 279, 278, 277, 276, 275, 274, 273, 272,
- 271, 270, 269, 268, 267, 266, 265, 264, 263, 262,
- 261, 260, 259, 258, 255, 254, 253, 252, 251, 250,
- 249, 248, 247, 246, 245, 244, 243, 242, 241, 240,
- 239, 238, 237, 236, 235, 234, 231, 230, 229, 228,
- 227, 226, 225, 224, 223, 222, 221, 220, 210, 209,
- 208, 207, 200, 199, 198, 197, 196, 195, 194, 193,
- 192, 191, 184, 183, 169, 168, 167, 166, 165, 164,
- 163, 162, 161, 160, 159, 158, 155, 154, 153, 150,
- 149, 148, 147, 143, 142, 141, 140, 139, 138, 137,
-
- 136, 135, 134, 125, 124, 123, 122, 121, 118, 117,
- 116, 113, 110, 109, 108, 107, 106, 105, 102, 101,
- 100, 99, 96, 95, 94, 93, 92, 91, 90, 89,
- 88, 87, 86, 85, 84, 83, 82, 81, 78, 77,
- 76, 75, 74, 73, 72, 71, 70, 69, 68, 67,
- 66, 65, 62, 61, 60, 59, 56, 52, 51, 50,
- 38, 35, 34, 33, 32, 31, 30, 29, 28, 27,
- 26, 18, 25, 24, 23, 18, 351, 3, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
-
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351
+ 152, 98, 115, 80, 112, 126, 20, 127, 153, 142,
+ 128, 129, 130, 143, 131, 157, 120, 132, 133, 145,
+ 306, 146, 179, 158, 147, 172, 173, 181, 174, 183,
+
+ 180, 175, 176, 359, 187, 182, 189, 184, 191, 177,
+ 204, 178, 188, 206, 190, 208, 192, 217, 205, 214,
+ 219, 207, 218, 209, 307, 215, 220, 221, 216, 235,
+ 241, 242, 261, 236, 222, 262, 317, 320, 318, 333,
+ 335, 319, 337, 358, 357, 321, 356, 334, 336, 355,
+ 338, 19, 354, 19, 353, 352, 351, 350, 349, 348,
+ 347, 346, 345, 344, 343, 342, 341, 340, 339, 332,
+ 331, 330, 329, 328, 327, 326, 325, 324, 323, 322,
+ 316, 315, 314, 313, 312, 311, 310, 309, 308, 305,
+ 304, 303, 302, 301, 300, 299, 298, 297, 296, 295,
+
+ 294, 293, 292, 291, 290, 289, 288, 287, 286, 285,
+ 284, 283, 282, 281, 280, 279, 278, 277, 276, 275,
+ 274, 273, 272, 271, 270, 269, 268, 267, 266, 265,
+ 264, 263, 260, 259, 258, 257, 256, 255, 254, 253,
+ 252, 251, 250, 249, 248, 247, 246, 245, 244, 243,
+ 240, 239, 238, 237, 234, 233, 232, 231, 230, 229,
+ 228, 227, 226, 225, 224, 223, 213, 212, 211, 210,
+ 203, 202, 201, 200, 199, 198, 197, 196, 195, 194,
+ 193, 186, 185, 171, 170, 169, 168, 167, 166, 165,
+ 164, 163, 162, 161, 160, 159, 156, 155, 154, 151,
+
+ 150, 149, 148, 144, 141, 140, 139, 138, 137, 136,
+ 135, 134, 125, 124, 123, 122, 121, 118, 117, 116,
+ 113, 110, 109, 108, 107, 106, 105, 102, 101, 100,
+ 99, 96, 95, 94, 93, 92, 91, 90, 89, 88,
+ 87, 86, 85, 84, 83, 82, 81, 78, 77, 76,
+ 75, 74, 73, 72, 71, 70, 69, 68, 67, 66,
+ 65, 62, 61, 60, 59, 56, 52, 51, 50, 38,
+ 35, 34, 33, 32, 31, 30, 29, 28, 27, 26,
+ 18, 25, 24, 23, 18, 360, 3, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360
} ;
-static const flex_int16_t yy_chk[420] =
+static const flex_int16_t yy_chk[429] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -883,45 +886,46 @@ static const flex_int16_t yy_chk[420] =
1, 10, 10, 31, 35, 35, 31, 34, 47, 34,
42, 34, 34, 42, 80, 34, 40, 47, 34, 34,
40, 62, 87, 34, 96, 87, 34, 98, 105, 40,
- 129, 80, 98, 62, 96, 111, 353, 111, 129, 193,
- 111, 111, 112, 193, 112, 133, 105, 112, 112, 123,
- 283, 123, 148, 133, 123, 147, 147, 149, 147, 150,
-
- 148, 147, 147, 349, 153, 149, 154, 150, 155, 147,
- 167, 147, 153, 168, 154, 169, 155, 175, 167, 174,
- 176, 168, 175, 169, 283, 174, 176, 176, 174, 218,
- 303, 302, 218, 302, 176, 316, 302, 317, 303, 318,
- 347, 345, 344, 316, 343, 317, 342, 318, 352, 341,
- 352, 340, 339, 332, 331, 330, 329, 328, 327, 326,
- 325, 324, 323, 322, 321, 315, 314, 313, 312, 311,
- 310, 309, 308, 307, 306, 304, 299, 298, 297, 296,
- 295, 294, 291, 289, 284, 282, 281, 280, 279, 278,
- 276, 275, 274, 272, 271, 270, 268, 267, 266, 265,
-
- 263, 262, 261, 260, 259, 258, 257, 256, 255, 254,
- 253, 252, 251, 250, 249, 247, 246, 245, 237, 235,
- 234, 233, 232, 219, 217, 216, 215, 214, 213, 212,
- 211, 210, 209, 208, 207, 206, 205, 204, 203, 202,
- 201, 200, 199, 197, 196, 194, 190, 189, 188, 187,
- 186, 185, 182, 181, 180, 179, 178, 177, 173, 172,
- 171, 170, 166, 165, 164, 163, 161, 160, 159, 158,
- 157, 156, 152, 151, 146, 145, 144, 143, 142, 141,
+ 129, 80, 98, 62, 96, 111, 362, 111, 129, 121,
+ 111, 111, 112, 121, 112, 133, 105, 112, 112, 123,
+ 292, 123, 149, 133, 123, 148, 148, 150, 148, 151,
+
+ 149, 148, 148, 358, 154, 150, 155, 151, 156, 148,
+ 169, 148, 154, 170, 155, 171, 156, 177, 169, 176,
+ 178, 170, 177, 171, 292, 176, 178, 178, 176, 195,
+ 202, 202, 221, 195, 178, 221, 311, 312, 311, 325,
+ 326, 311, 327, 356, 354, 312, 353, 325, 326, 352,
+ 327, 361, 351, 361, 350, 349, 348, 341, 340, 339,
+ 338, 337, 336, 335, 334, 333, 332, 331, 330, 324,
+ 323, 322, 321, 320, 319, 318, 317, 316, 315, 313,
+ 308, 307, 306, 305, 304, 303, 300, 298, 293, 291,
+ 288, 287, 286, 285, 283, 282, 281, 279, 278, 277,
+
+ 275, 274, 273, 272, 270, 269, 268, 267, 266, 265,
+ 264, 263, 262, 261, 260, 259, 258, 257, 256, 255,
+ 254, 252, 251, 250, 242, 241, 240, 238, 237, 236,
+ 235, 222, 220, 219, 218, 217, 216, 215, 214, 213,
+ 212, 211, 210, 209, 208, 207, 206, 205, 204, 203,
+ 201, 199, 198, 196, 192, 191, 190, 189, 188, 187,
+ 184, 183, 182, 181, 180, 179, 175, 174, 173, 172,
+ 168, 167, 166, 165, 164, 162, 161, 160, 159, 158,
+ 157, 153, 152, 147, 146, 145, 144, 143, 142, 141,
140, 139, 138, 137, 136, 135, 132, 131, 130, 128,
- 127, 126, 124, 122, 121, 120, 119, 118, 117, 116,
-
- 115, 114, 113, 110, 109, 108, 107, 106, 104, 103,
- 99, 97, 95, 94, 93, 92, 91, 88, 86, 83,
- 82, 81, 79, 78, 77, 76, 75, 74, 73, 72,
- 71, 70, 69, 68, 66, 65, 64, 63, 61, 60,
- 59, 58, 57, 56, 55, 54, 53, 52, 51, 50,
- 49, 48, 46, 45, 44, 43, 41, 39, 37, 36,
- 33, 30, 29, 28, 27, 25, 24, 23, 22, 21,
- 19, 18, 13, 12, 11, 5, 3, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
-
- 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 351
+
+ 127, 126, 124, 122, 120, 119, 118, 117, 116, 115,
+ 114, 113, 110, 109, 108, 107, 106, 104, 103, 99,
+ 97, 95, 94, 93, 92, 91, 88, 86, 83, 82,
+ 81, 79, 78, 77, 76, 75, 74, 73, 72, 71,
+ 70, 69, 68, 66, 65, 64, 63, 61, 60, 59,
+ 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,
+ 48, 46, 45, 44, 43, 41, 39, 37, 36, 33,
+ 30, 29, 28, 27, 25, 24, 23, 22, 21, 19,
+ 18, 13, 12, 11, 5, 3, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360
} ;
static yy_state_type yy_last_accepting_state;
@@ -980,8 +984,8 @@ static int my_yyinput(char *, int);
extern char *myinput;
extern size_t input_len;
-#line 954 "hl/src//H5LTanalyze.c"
-#line 955 "hl/src//H5LTanalyze.c"
+#line 958 "hl/src//H5LTanalyze.c"
+#line 959 "hl/src//H5LTanalyze.c"
#define INITIAL 0
@@ -1193,7 +1197,7 @@ YY_DECL
#line 53 "hl/src//H5LTanalyze.l"
-#line 1167 "hl/src//H5LTanalyze.c"
+#line 1171 "hl/src//H5LTanalyze.c"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1220,13 +1224,13 @@ YY_DECL
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 352 )
+ if ( yy_current_state >= 361 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 378 );
+ while ( yy_base[yy_current_state] != 387 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -1428,232 +1432,242 @@ YY_RULE_SETUP
case 36:
YY_RULE_SETUP
#line 93 "hl/src//H5LTanalyze.l"
-{return hid(H5T_NATIVE_FLOAT16_TOKEN);}
+{return hid(H5T_FLOAT_F8E4M3_TOKEN);}
YY_BREAK
case 37:
YY_RULE_SETUP
#line 94 "hl/src//H5LTanalyze.l"
-{return hid(H5T_NATIVE_FLOAT_TOKEN);}
+{return hid(H5T_FLOAT_F8E5M2_TOKEN);}
YY_BREAK
case 38:
YY_RULE_SETUP
#line 95 "hl/src//H5LTanalyze.l"
-{return hid(H5T_NATIVE_DOUBLE_TOKEN);}
+{return hid(H5T_NATIVE_FLOAT16_TOKEN);}
YY_BREAK
case 39:
YY_RULE_SETUP
#line 96 "hl/src//H5LTanalyze.l"
-{return hid(H5T_NATIVE_LDOUBLE_TOKEN);}
+{return hid(H5T_NATIVE_FLOAT_TOKEN);}
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 98 "hl/src//H5LTanalyze.l"
-{return hid(H5T_COMPLEX_IEEE_F16BE_TOKEN);}
+#line 97 "hl/src//H5LTanalyze.l"
+{return hid(H5T_NATIVE_DOUBLE_TOKEN);}
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 99 "hl/src//H5LTanalyze.l"
-{return hid(H5T_COMPLEX_IEEE_F16LE_TOKEN);}
+#line 98 "hl/src//H5LTanalyze.l"
+{return hid(H5T_NATIVE_LDOUBLE_TOKEN);}
YY_BREAK
case 42:
YY_RULE_SETUP
#line 100 "hl/src//H5LTanalyze.l"
-{return hid(H5T_COMPLEX_IEEE_F32BE_TOKEN);}
+{return hid(H5T_COMPLEX_IEEE_F16BE_TOKEN);}
YY_BREAK
case 43:
YY_RULE_SETUP
#line 101 "hl/src//H5LTanalyze.l"
-{return hid(H5T_COMPLEX_IEEE_F32LE_TOKEN);}
+{return hid(H5T_COMPLEX_IEEE_F16LE_TOKEN);}
YY_BREAK
case 44:
YY_RULE_SETUP
#line 102 "hl/src//H5LTanalyze.l"
-{return hid(H5T_COMPLEX_IEEE_F64BE_TOKEN);}
+{return hid(H5T_COMPLEX_IEEE_F32BE_TOKEN);}
YY_BREAK
case 45:
YY_RULE_SETUP
#line 103 "hl/src//H5LTanalyze.l"
-{return hid(H5T_COMPLEX_IEEE_F64LE_TOKEN);}
+{return hid(H5T_COMPLEX_IEEE_F32LE_TOKEN);}
YY_BREAK
case 46:
YY_RULE_SETUP
#line 104 "hl/src//H5LTanalyze.l"
-{return hid(H5T_NATIVE_FLOAT_COMPLEX_TOKEN);}
+{return hid(H5T_COMPLEX_IEEE_F64BE_TOKEN);}
YY_BREAK
case 47:
YY_RULE_SETUP
#line 105 "hl/src//H5LTanalyze.l"
-{return hid(H5T_NATIVE_DOUBLE_COMPLEX_TOKEN);}
+{return hid(H5T_COMPLEX_IEEE_F64LE_TOKEN);}
YY_BREAK
case 48:
YY_RULE_SETUP
#line 106 "hl/src//H5LTanalyze.l"
-{return hid(H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN);}
+{return hid(H5T_NATIVE_FLOAT_COMPLEX_TOKEN);}
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 108 "hl/src//H5LTanalyze.l"
-{return token(H5T_STRING_TOKEN);}
+#line 107 "hl/src//H5LTanalyze.l"
+{return hid(H5T_NATIVE_DOUBLE_COMPLEX_TOKEN);}
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 109 "hl/src//H5LTanalyze.l"
-{return token(STRSIZE_TOKEN);}
+#line 108 "hl/src//H5LTanalyze.l"
+{return hid(H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN);}
YY_BREAK
case 51:
YY_RULE_SETUP
#line 110 "hl/src//H5LTanalyze.l"
-{return token(STRPAD_TOKEN);}
+{return token(H5T_STRING_TOKEN);}
YY_BREAK
case 52:
YY_RULE_SETUP
#line 111 "hl/src//H5LTanalyze.l"
-{return token(CSET_TOKEN);}
+{return token(STRSIZE_TOKEN);}
YY_BREAK
case 53:
YY_RULE_SETUP
#line 112 "hl/src//H5LTanalyze.l"
-{return token(CTYPE_TOKEN);}
+{return token(STRPAD_TOKEN);}
YY_BREAK
case 54:
YY_RULE_SETUP
#line 113 "hl/src//H5LTanalyze.l"
-{return token(H5T_STR_NULLTERM_TOKEN);}
+{return token(CSET_TOKEN);}
YY_BREAK
case 55:
YY_RULE_SETUP
#line 114 "hl/src//H5LTanalyze.l"
-{return token(H5T_STR_NULLPAD_TOKEN);}
+{return token(CTYPE_TOKEN);}
YY_BREAK
case 56:
YY_RULE_SETUP
#line 115 "hl/src//H5LTanalyze.l"
-{return token(H5T_STR_SPACEPAD_TOKEN);}
+{return token(H5T_STR_NULLTERM_TOKEN);}
YY_BREAK
case 57:
YY_RULE_SETUP
#line 116 "hl/src//H5LTanalyze.l"
-{return token(H5T_CSET_ASCII_TOKEN);}
+{return token(H5T_STR_NULLPAD_TOKEN);}
YY_BREAK
case 58:
YY_RULE_SETUP
#line 117 "hl/src//H5LTanalyze.l"
-{return token(H5T_CSET_UTF8_TOKEN);}
+{return token(H5T_STR_SPACEPAD_TOKEN);}
YY_BREAK
case 59:
YY_RULE_SETUP
#line 118 "hl/src//H5LTanalyze.l"
-{return token(H5T_C_S1_TOKEN);}
+{return token(H5T_CSET_ASCII_TOKEN);}
YY_BREAK
case 60:
YY_RULE_SETUP
#line 119 "hl/src//H5LTanalyze.l"
-{return token(H5T_FORTRAN_S1_TOKEN);}
+{return token(H5T_CSET_UTF8_TOKEN);}
YY_BREAK
case 61:
YY_RULE_SETUP
#line 120 "hl/src//H5LTanalyze.l"
-{return token(H5T_VARIABLE_TOKEN);}
+{return token(H5T_C_S1_TOKEN);}
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 122 "hl/src//H5LTanalyze.l"
-{return token(H5T_COMPOUND_TOKEN);}
+#line 121 "hl/src//H5LTanalyze.l"
+{return token(H5T_FORTRAN_S1_TOKEN);}
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 123 "hl/src//H5LTanalyze.l"
-{return token(H5T_ENUM_TOKEN);}
+#line 122 "hl/src//H5LTanalyze.l"
+{return token(H5T_VARIABLE_TOKEN);}
YY_BREAK
case 64:
YY_RULE_SETUP
#line 124 "hl/src//H5LTanalyze.l"
-{return token(H5T_ARRAY_TOKEN);}
+{return token(H5T_COMPOUND_TOKEN);}
YY_BREAK
case 65:
YY_RULE_SETUP
#line 125 "hl/src//H5LTanalyze.l"
-{return token(H5T_VLEN_TOKEN);}
+{return token(H5T_ENUM_TOKEN);}
YY_BREAK
case 66:
YY_RULE_SETUP
#line 126 "hl/src//H5LTanalyze.l"
-{return token(H5T_COMPLEX_TOKEN);}
+{return token(H5T_ARRAY_TOKEN);}
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 128 "hl/src//H5LTanalyze.l"
-{return token(H5T_OPAQUE_TOKEN);}
+#line 127 "hl/src//H5LTanalyze.l"
+{return token(H5T_VLEN_TOKEN);}
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 129 "hl/src//H5LTanalyze.l"
-{return token(OPQ_SIZE_TOKEN);}
+#line 128 "hl/src//H5LTanalyze.l"
+{return token(H5T_COMPLEX_TOKEN);}
YY_BREAK
case 69:
YY_RULE_SETUP
#line 130 "hl/src//H5LTanalyze.l"
-{return token(OPQ_TAG_TOKEN);}
+{return token(H5T_OPAQUE_TOKEN);}
YY_BREAK
case 70:
YY_RULE_SETUP
+#line 131 "hl/src//H5LTanalyze.l"
+{return token(OPQ_SIZE_TOKEN);}
+ YY_BREAK
+case 71:
+YY_RULE_SETUP
#line 132 "hl/src//H5LTanalyze.l"
+{return token(OPQ_TAG_TOKEN);}
+ YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 134 "hl/src//H5LTanalyze.l"
{
H5LTyylval.ival = atoi(yytext);
return NUMBER;
}
YY_BREAK
-case 71:
-/* rule 71 can match eol */
+case 73:
+/* rule 73 can match eol */
YY_RULE_SETUP
-#line 137 "hl/src//H5LTanalyze.l"
+#line 139 "hl/src//H5LTanalyze.l"
{
H5LTyylval.sval = trim_quotes(yytext);
return STRING;
}
YY_BREAK
-case 72:
-YY_RULE_SETUP
-#line 142 "hl/src//H5LTanalyze.l"
-{return token('{');}
- YY_BREAK
-case 73:
-YY_RULE_SETUP
-#line 143 "hl/src//H5LTanalyze.l"
-{return token('}');}
- YY_BREAK
case 74:
YY_RULE_SETUP
#line 144 "hl/src//H5LTanalyze.l"
-{return token('[');}
+{return token('{');}
YY_BREAK
case 75:
YY_RULE_SETUP
#line 145 "hl/src//H5LTanalyze.l"
-{return token(']');}
+{return token('}');}
YY_BREAK
case 76:
YY_RULE_SETUP
#line 146 "hl/src//H5LTanalyze.l"
-{return token(':');}
+{return token('[');}
YY_BREAK
case 77:
YY_RULE_SETUP
#line 147 "hl/src//H5LTanalyze.l"
-{return token(';');}
+{return token(']');}
YY_BREAK
case 78:
-/* rule 78 can match eol */
YY_RULE_SETUP
#line 148 "hl/src//H5LTanalyze.l"
-;
+{return token(':');}
YY_BREAK
case 79:
YY_RULE_SETUP
+#line 149 "hl/src//H5LTanalyze.l"
+{return token(';');}
+ YY_BREAK
+case 80:
+/* rule 80 can match eol */
+YY_RULE_SETUP
#line 150 "hl/src//H5LTanalyze.l"
+;
+ YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 152 "hl/src//H5LTanalyze.l"
ECHO;
YY_BREAK
-#line 1627 "hl/src//H5LTanalyze.c"
+#line 1641 "hl/src//H5LTanalyze.c"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -1950,7 +1964,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 352 )
+ if ( yy_current_state >= 361 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1978,11 +1992,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 352 )
+ if ( yy_current_state >= 361 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 351);
+ yy_is_jam = (yy_current_state == 360);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2658,7 +2672,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 150 "hl/src//H5LTanalyze.l"
+#line 152 "hl/src//H5LTanalyze.l"
/* Allocate a copy of `quoted` with the double quote character at
diff --git a/hl/src/H5LTanalyze.l b/hl/src/H5LTanalyze.l
index 6acefd6f981..fc504873bce 100644
--- a/hl/src/H5LTanalyze.l
+++ b/hl/src/H5LTanalyze.l
@@ -90,6 +90,8 @@ H5T_IEEE_F64BE {return hid(H5T_IEEE_F64BE_TOKEN);}
H5T_IEEE_F64LE {return hid(H5T_IEEE_F64LE_TOKEN);}
H5T_FLOAT_BFLOAT16BE {return hid(H5T_FLOAT_BFLOAT16BE_TOKEN);}
H5T_FLOAT_BFLOAT16LE {return hid(H5T_FLOAT_BFLOAT16LE_TOKEN);}
+H5T_FLOAT_F8E4M3 {return hid(H5T_FLOAT_F8E4M3_TOKEN);}
+H5T_FLOAT_F8E5M2 {return hid(H5T_FLOAT_F8E5M2_TOKEN);}
H5T_NATIVE_FLOAT16 {return hid(H5T_NATIVE_FLOAT16_TOKEN);}
H5T_NATIVE_FLOAT {return hid(H5T_NATIVE_FLOAT_TOKEN);}
H5T_NATIVE_DOUBLE {return hid(H5T_NATIVE_DOUBLE_TOKEN);}
diff --git a/hl/src/H5LTparse.c b/hl/src/H5LTparse.c
index 8abdf121380..7be3166e309 100644
--- a/hl/src/H5LTparse.c
+++ b/hl/src/H5LTparse.c
@@ -219,92 +219,94 @@ enum yysymbol_kind_t
YYSYMBOL_H5T_IEEE_F64LE_TOKEN = 35, /* H5T_IEEE_F64LE_TOKEN */
YYSYMBOL_H5T_FLOAT_BFLOAT16BE_TOKEN = 36, /* H5T_FLOAT_BFLOAT16BE_TOKEN */
YYSYMBOL_H5T_FLOAT_BFLOAT16LE_TOKEN = 37, /* H5T_FLOAT_BFLOAT16LE_TOKEN */
- YYSYMBOL_H5T_NATIVE_FLOAT16_TOKEN = 38, /* H5T_NATIVE_FLOAT16_TOKEN */
- YYSYMBOL_H5T_NATIVE_FLOAT_TOKEN = 39, /* H5T_NATIVE_FLOAT_TOKEN */
- YYSYMBOL_H5T_NATIVE_DOUBLE_TOKEN = 40, /* H5T_NATIVE_DOUBLE_TOKEN */
- YYSYMBOL_H5T_NATIVE_LDOUBLE_TOKEN = 41, /* H5T_NATIVE_LDOUBLE_TOKEN */
- YYSYMBOL_H5T_COMPLEX_IEEE_F16BE_TOKEN = 42, /* H5T_COMPLEX_IEEE_F16BE_TOKEN */
- YYSYMBOL_H5T_COMPLEX_IEEE_F16LE_TOKEN = 43, /* H5T_COMPLEX_IEEE_F16LE_TOKEN */
- YYSYMBOL_H5T_COMPLEX_IEEE_F32BE_TOKEN = 44, /* H5T_COMPLEX_IEEE_F32BE_TOKEN */
- YYSYMBOL_H5T_COMPLEX_IEEE_F32LE_TOKEN = 45, /* H5T_COMPLEX_IEEE_F32LE_TOKEN */
- YYSYMBOL_H5T_COMPLEX_IEEE_F64BE_TOKEN = 46, /* H5T_COMPLEX_IEEE_F64BE_TOKEN */
- YYSYMBOL_H5T_COMPLEX_IEEE_F64LE_TOKEN = 47, /* H5T_COMPLEX_IEEE_F64LE_TOKEN */
- YYSYMBOL_H5T_NATIVE_FLOAT_COMPLEX_TOKEN = 48, /* H5T_NATIVE_FLOAT_COMPLEX_TOKEN */
- YYSYMBOL_H5T_NATIVE_DOUBLE_COMPLEX_TOKEN = 49, /* H5T_NATIVE_DOUBLE_COMPLEX_TOKEN */
- YYSYMBOL_H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN = 50, /* H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN */
- YYSYMBOL_H5T_STRING_TOKEN = 51, /* H5T_STRING_TOKEN */
- YYSYMBOL_STRSIZE_TOKEN = 52, /* STRSIZE_TOKEN */
- YYSYMBOL_STRPAD_TOKEN = 53, /* STRPAD_TOKEN */
- YYSYMBOL_CSET_TOKEN = 54, /* CSET_TOKEN */
- YYSYMBOL_CTYPE_TOKEN = 55, /* CTYPE_TOKEN */
- YYSYMBOL_H5T_VARIABLE_TOKEN = 56, /* H5T_VARIABLE_TOKEN */
- YYSYMBOL_H5T_STR_NULLTERM_TOKEN = 57, /* H5T_STR_NULLTERM_TOKEN */
- YYSYMBOL_H5T_STR_NULLPAD_TOKEN = 58, /* H5T_STR_NULLPAD_TOKEN */
- YYSYMBOL_H5T_STR_SPACEPAD_TOKEN = 59, /* H5T_STR_SPACEPAD_TOKEN */
- YYSYMBOL_H5T_CSET_ASCII_TOKEN = 60, /* H5T_CSET_ASCII_TOKEN */
- YYSYMBOL_H5T_CSET_UTF8_TOKEN = 61, /* H5T_CSET_UTF8_TOKEN */
- YYSYMBOL_H5T_C_S1_TOKEN = 62, /* H5T_C_S1_TOKEN */
- YYSYMBOL_H5T_FORTRAN_S1_TOKEN = 63, /* H5T_FORTRAN_S1_TOKEN */
- YYSYMBOL_H5T_OPAQUE_TOKEN = 64, /* H5T_OPAQUE_TOKEN */
- YYSYMBOL_OPQ_SIZE_TOKEN = 65, /* OPQ_SIZE_TOKEN */
- YYSYMBOL_OPQ_TAG_TOKEN = 66, /* OPQ_TAG_TOKEN */
- YYSYMBOL_H5T_COMPOUND_TOKEN = 67, /* H5T_COMPOUND_TOKEN */
- YYSYMBOL_H5T_ENUM_TOKEN = 68, /* H5T_ENUM_TOKEN */
- YYSYMBOL_H5T_ARRAY_TOKEN = 69, /* H5T_ARRAY_TOKEN */
- YYSYMBOL_H5T_VLEN_TOKEN = 70, /* H5T_VLEN_TOKEN */
- YYSYMBOL_H5T_COMPLEX_TOKEN = 71, /* H5T_COMPLEX_TOKEN */
- YYSYMBOL_STRING = 72, /* STRING */
- YYSYMBOL_NUMBER = 73, /* NUMBER */
- YYSYMBOL_74_ = 74, /* '{' */
- YYSYMBOL_75_ = 75, /* '}' */
- YYSYMBOL_76_ = 76, /* '[' */
- YYSYMBOL_77_ = 77, /* ']' */
- YYSYMBOL_78_ = 78, /* ':' */
- YYSYMBOL_79_ = 79, /* ';' */
- YYSYMBOL_YYACCEPT = 80, /* $accept */
- YYSYMBOL_start = 81, /* start */
- YYSYMBOL_ddl_type = 82, /* ddl_type */
- YYSYMBOL_atomic_type = 83, /* atomic_type */
- YYSYMBOL_integer_type = 84, /* integer_type */
- YYSYMBOL_fp_type = 85, /* fp_type */
- YYSYMBOL_compound_type = 86, /* compound_type */
- YYSYMBOL_87_1 = 87, /* $@1 */
- YYSYMBOL_memb_list = 88, /* memb_list */
- YYSYMBOL_memb_def = 89, /* memb_def */
- YYSYMBOL_90_2 = 90, /* $@2 */
- YYSYMBOL_field_name = 91, /* field_name */
- YYSYMBOL_field_offset = 92, /* field_offset */
- YYSYMBOL_offset = 93, /* offset */
- YYSYMBOL_array_type = 94, /* array_type */
- YYSYMBOL_95_3 = 95, /* $@3 */
- YYSYMBOL_dim_list = 96, /* dim_list */
- YYSYMBOL_dim = 97, /* dim */
- YYSYMBOL_98_4 = 98, /* $@4 */
- YYSYMBOL_99_5 = 99, /* $@5 */
- YYSYMBOL_dimsize = 100, /* dimsize */
- YYSYMBOL_vlen_type = 101, /* vlen_type */
- YYSYMBOL_complex_type = 102, /* complex_type */
- YYSYMBOL_opaque_type = 103, /* opaque_type */
- YYSYMBOL_104_6 = 104, /* @6 */
- YYSYMBOL_105_7 = 105, /* $@7 */
- YYSYMBOL_opaque_size = 106, /* opaque_size */
- YYSYMBOL_opaque_tag = 107, /* opaque_tag */
- YYSYMBOL_string_type = 108, /* string_type */
- YYSYMBOL_109_8 = 109, /* $@8 */
- YYSYMBOL_110_9 = 110, /* $@9 */
- YYSYMBOL_111_10 = 111, /* $@10 */
- YYSYMBOL_112_11 = 112, /* @11 */
- YYSYMBOL_strsize = 113, /* strsize */
- YYSYMBOL_strpad = 114, /* strpad */
- YYSYMBOL_cset = 115, /* cset */
- YYSYMBOL_ctype = 116, /* ctype */
- YYSYMBOL_enum_type = 117, /* enum_type */
- YYSYMBOL_118_12 = 118, /* $@12 */
- YYSYMBOL_enum_list = 119, /* enum_list */
- YYSYMBOL_enum_def = 120, /* enum_def */
- YYSYMBOL_121_13 = 121, /* $@13 */
- YYSYMBOL_enum_symbol = 122, /* enum_symbol */
- YYSYMBOL_enum_val = 123 /* enum_val */
+ YYSYMBOL_H5T_FLOAT_F8E4M3_TOKEN = 38, /* H5T_FLOAT_F8E4M3_TOKEN */
+ YYSYMBOL_H5T_FLOAT_F8E5M2_TOKEN = 39, /* H5T_FLOAT_F8E5M2_TOKEN */
+ YYSYMBOL_H5T_NATIVE_FLOAT16_TOKEN = 40, /* H5T_NATIVE_FLOAT16_TOKEN */
+ YYSYMBOL_H5T_NATIVE_FLOAT_TOKEN = 41, /* H5T_NATIVE_FLOAT_TOKEN */
+ YYSYMBOL_H5T_NATIVE_DOUBLE_TOKEN = 42, /* H5T_NATIVE_DOUBLE_TOKEN */
+ YYSYMBOL_H5T_NATIVE_LDOUBLE_TOKEN = 43, /* H5T_NATIVE_LDOUBLE_TOKEN */
+ YYSYMBOL_H5T_COMPLEX_IEEE_F16BE_TOKEN = 44, /* H5T_COMPLEX_IEEE_F16BE_TOKEN */
+ YYSYMBOL_H5T_COMPLEX_IEEE_F16LE_TOKEN = 45, /* H5T_COMPLEX_IEEE_F16LE_TOKEN */
+ YYSYMBOL_H5T_COMPLEX_IEEE_F32BE_TOKEN = 46, /* H5T_COMPLEX_IEEE_F32BE_TOKEN */
+ YYSYMBOL_H5T_COMPLEX_IEEE_F32LE_TOKEN = 47, /* H5T_COMPLEX_IEEE_F32LE_TOKEN */
+ YYSYMBOL_H5T_COMPLEX_IEEE_F64BE_TOKEN = 48, /* H5T_COMPLEX_IEEE_F64BE_TOKEN */
+ YYSYMBOL_H5T_COMPLEX_IEEE_F64LE_TOKEN = 49, /* H5T_COMPLEX_IEEE_F64LE_TOKEN */
+ YYSYMBOL_H5T_NATIVE_FLOAT_COMPLEX_TOKEN = 50, /* H5T_NATIVE_FLOAT_COMPLEX_TOKEN */
+ YYSYMBOL_H5T_NATIVE_DOUBLE_COMPLEX_TOKEN = 51, /* H5T_NATIVE_DOUBLE_COMPLEX_TOKEN */
+ YYSYMBOL_H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN = 52, /* H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN */
+ YYSYMBOL_H5T_STRING_TOKEN = 53, /* H5T_STRING_TOKEN */
+ YYSYMBOL_STRSIZE_TOKEN = 54, /* STRSIZE_TOKEN */
+ YYSYMBOL_STRPAD_TOKEN = 55, /* STRPAD_TOKEN */
+ YYSYMBOL_CSET_TOKEN = 56, /* CSET_TOKEN */
+ YYSYMBOL_CTYPE_TOKEN = 57, /* CTYPE_TOKEN */
+ YYSYMBOL_H5T_VARIABLE_TOKEN = 58, /* H5T_VARIABLE_TOKEN */
+ YYSYMBOL_H5T_STR_NULLTERM_TOKEN = 59, /* H5T_STR_NULLTERM_TOKEN */
+ YYSYMBOL_H5T_STR_NULLPAD_TOKEN = 60, /* H5T_STR_NULLPAD_TOKEN */
+ YYSYMBOL_H5T_STR_SPACEPAD_TOKEN = 61, /* H5T_STR_SPACEPAD_TOKEN */
+ YYSYMBOL_H5T_CSET_ASCII_TOKEN = 62, /* H5T_CSET_ASCII_TOKEN */
+ YYSYMBOL_H5T_CSET_UTF8_TOKEN = 63, /* H5T_CSET_UTF8_TOKEN */
+ YYSYMBOL_H5T_C_S1_TOKEN = 64, /* H5T_C_S1_TOKEN */
+ YYSYMBOL_H5T_FORTRAN_S1_TOKEN = 65, /* H5T_FORTRAN_S1_TOKEN */
+ YYSYMBOL_H5T_OPAQUE_TOKEN = 66, /* H5T_OPAQUE_TOKEN */
+ YYSYMBOL_OPQ_SIZE_TOKEN = 67, /* OPQ_SIZE_TOKEN */
+ YYSYMBOL_OPQ_TAG_TOKEN = 68, /* OPQ_TAG_TOKEN */
+ YYSYMBOL_H5T_COMPOUND_TOKEN = 69, /* H5T_COMPOUND_TOKEN */
+ YYSYMBOL_H5T_ENUM_TOKEN = 70, /* H5T_ENUM_TOKEN */
+ YYSYMBOL_H5T_ARRAY_TOKEN = 71, /* H5T_ARRAY_TOKEN */
+ YYSYMBOL_H5T_VLEN_TOKEN = 72, /* H5T_VLEN_TOKEN */
+ YYSYMBOL_H5T_COMPLEX_TOKEN = 73, /* H5T_COMPLEX_TOKEN */
+ YYSYMBOL_STRING = 74, /* STRING */
+ YYSYMBOL_NUMBER = 75, /* NUMBER */
+ YYSYMBOL_76_ = 76, /* '{' */
+ YYSYMBOL_77_ = 77, /* '}' */
+ YYSYMBOL_78_ = 78, /* '[' */
+ YYSYMBOL_79_ = 79, /* ']' */
+ YYSYMBOL_80_ = 80, /* ':' */
+ YYSYMBOL_81_ = 81, /* ';' */
+ YYSYMBOL_YYACCEPT = 82, /* $accept */
+ YYSYMBOL_start = 83, /* start */
+ YYSYMBOL_ddl_type = 84, /* ddl_type */
+ YYSYMBOL_atomic_type = 85, /* atomic_type */
+ YYSYMBOL_integer_type = 86, /* integer_type */
+ YYSYMBOL_fp_type = 87, /* fp_type */
+ YYSYMBOL_compound_type = 88, /* compound_type */
+ YYSYMBOL_89_1 = 89, /* $@1 */
+ YYSYMBOL_memb_list = 90, /* memb_list */
+ YYSYMBOL_memb_def = 91, /* memb_def */
+ YYSYMBOL_92_2 = 92, /* $@2 */
+ YYSYMBOL_field_name = 93, /* field_name */
+ YYSYMBOL_field_offset = 94, /* field_offset */
+ YYSYMBOL_offset = 95, /* offset */
+ YYSYMBOL_array_type = 96, /* array_type */
+ YYSYMBOL_97_3 = 97, /* $@3 */
+ YYSYMBOL_dim_list = 98, /* dim_list */
+ YYSYMBOL_dim = 99, /* dim */
+ YYSYMBOL_100_4 = 100, /* $@4 */
+ YYSYMBOL_101_5 = 101, /* $@5 */
+ YYSYMBOL_dimsize = 102, /* dimsize */
+ YYSYMBOL_vlen_type = 103, /* vlen_type */
+ YYSYMBOL_complex_type = 104, /* complex_type */
+ YYSYMBOL_opaque_type = 105, /* opaque_type */
+ YYSYMBOL_106_6 = 106, /* @6 */
+ YYSYMBOL_107_7 = 107, /* $@7 */
+ YYSYMBOL_opaque_size = 108, /* opaque_size */
+ YYSYMBOL_opaque_tag = 109, /* opaque_tag */
+ YYSYMBOL_string_type = 110, /* string_type */
+ YYSYMBOL_111_8 = 111, /* $@8 */
+ YYSYMBOL_112_9 = 112, /* $@9 */
+ YYSYMBOL_113_10 = 113, /* $@10 */
+ YYSYMBOL_114_11 = 114, /* @11 */
+ YYSYMBOL_strsize = 115, /* strsize */
+ YYSYMBOL_strpad = 116, /* strpad */
+ YYSYMBOL_cset = 117, /* cset */
+ YYSYMBOL_ctype = 118, /* ctype */
+ YYSYMBOL_enum_type = 119, /* enum_type */
+ YYSYMBOL_120_12 = 120, /* $@12 */
+ YYSYMBOL_enum_list = 121, /* enum_list */
+ YYSYMBOL_enum_def = 122, /* enum_def */
+ YYSYMBOL_123_13 = 123, /* $@13 */
+ YYSYMBOL_enum_symbol = 124, /* enum_symbol */
+ YYSYMBOL_enum_val = 125 /* enum_val */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -630,21 +632,21 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 75
+#define YYFINAL 77
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 245
+#define YYLAST 251
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 80
+#define YYNTOKENS 82
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 44
/* YYNRULES -- Number of rules. */
-#define YYNRULES 108
+#define YYNRULES 110
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 153
+#define YYNSTATES 155
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 328
+#define YYMAXUTOK 330
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -663,14 +665,14 @@ static const yytype_int8 yytranslate[] =
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 78, 79,
+ 2, 2, 2, 2, 2, 2, 2, 2, 80, 81,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 76, 2, 77, 2, 2, 2, 2, 2, 2,
+ 2, 78, 2, 79, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 74, 2, 75, 2, 2, 2, 2,
+ 2, 2, 2, 76, 2, 77, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -690,24 +692,26 @@ static const yytype_int8 yytranslate[] =
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 109, 109, 110, 112, 113, 114, 115, 116, 118,
- 119, 120, 121, 122, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 169, 168, 177, 178, 180, 180, 217,
- 225, 226, 229, 231, 231, 240, 241, 243, 244, 243,
- 251, 254, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 274, 279, 271, 286, 288, 293, 300, 309,
- 316, 290, 340, 341, 343, 344, 345, 347, 348, 350,
- 351, 355, 354, 359, 360, 362, 362, 412, 414
+ 0, 110, 110, 111, 113, 114, 115, 116, 117, 119,
+ 120, 121, 122, 123, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 172, 171, 180, 181, 183,
+ 183, 220, 228, 229, 232, 234, 234, 243, 244, 246,
+ 247, 246, 254, 257, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 277, 282, 274, 289, 291, 296,
+ 303, 312, 319, 293, 343, 344, 346, 347, 348, 350,
+ 351, 353, 354, 358, 357, 362, 363, 365, 365, 415,
+ 417
};
#endif
@@ -738,6 +742,7 @@ static const char *const yytname[] =
"H5T_IEEE_F16LE_TOKEN", "H5T_IEEE_F32BE_TOKEN", "H5T_IEEE_F32LE_TOKEN",
"H5T_IEEE_F64BE_TOKEN", "H5T_IEEE_F64LE_TOKEN",
"H5T_FLOAT_BFLOAT16BE_TOKEN", "H5T_FLOAT_BFLOAT16LE_TOKEN",
+ "H5T_FLOAT_F8E4M3_TOKEN", "H5T_FLOAT_F8E5M2_TOKEN",
"H5T_NATIVE_FLOAT16_TOKEN", "H5T_NATIVE_FLOAT_TOKEN",
"H5T_NATIVE_DOUBLE_TOKEN", "H5T_NATIVE_LDOUBLE_TOKEN",
"H5T_COMPLEX_IEEE_F16BE_TOKEN", "H5T_COMPLEX_IEEE_F16LE_TOKEN",
@@ -783,22 +788,22 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 144, -24, -24, -24, -24, -24, -24, -24, -24, -24,
+ 148, -24, -24, -24, -24, -24, -24, -24, -24, -24,
-24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
-24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
-24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
- -24, -24, -24, -24, -24, -24, -24, -24, -24, -21,
- -15, -24, -14, -24, -4, -2, 123, -24, -24, -24,
- -24, -24, -24, -24, -24, -24, -24, -24, 72, 60,
- 53, 213, 54, 144, 144, -24, 70, 56, -24, 51,
- -24, 57, 58, -24, -24, 52, -24, 55, 71, -24,
- -3, -24, -24, -24, -24, -24, -24, -24, -24, -24,
- 61, -24, 84, 78, 73, -23, 124, -24, -1, 126,
- -24, 118, -24, -24, -24, -24, -24, -24, -24, -24,
- -24, 120, -24, 121, 128, 125, 129, 130, -24, -24,
- -24, -24, -24, -24, 127, -24, 149, 134, -24, -10,
- -24, -24, -24, 131, -24, 150, 0, -24, -24, 164,
- -24, 169, -24
+ -24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
+ -24, -21, -15, -24, -14, -24, -4, -2, 127, -24,
+ -24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
+ 74, 62, 55, 219, 56, 148, 148, -24, 72, 58,
+ -24, 53, -24, 59, 60, -24, -24, 54, -24, 57,
+ 73, -24, -3, -24, -24, -24, -24, -24, -24, -24,
+ -24, -24, 63, -24, 86, 80, 75, -23, 128, -24,
+ -1, 130, -24, 122, -24, -24, -24, -24, -24, -24,
+ -24, -24, -24, 124, -24, 125, 132, 129, 133, 134,
+ -24, -24, -24, -24, -24, -24, 131, -24, 153, 138,
+ -24, -10, -24, -24, -24, 135, -24, 154, 0, -24,
+ -24, 168, -24, 173, -24
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -810,24 +815,24 @@ static const yytype_int8 yydefact[] =
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 76, 75, 78, 77, 80, 79, 72, 73, 74, 0,
- 0, 53, 0, 63, 0, 0, 0, 3, 4, 9,
- 10, 5, 6, 7, 8, 13, 11, 12, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 55, 0,
- 65, 0, 0, 92, 93, 0, 85, 0, 0, 101,
- 0, 71, 81, 87, 82, 54, 57, 56, 103, 67,
- 0, 66, 0, 0, 0, 0, 0, 64, 0, 0,
- 59, 60, 107, 102, 104, 105, 70, 68, 94, 95,
- 96, 0, 86, 0, 0, 0, 0, 0, 88, 83,
- 62, 61, 58, 108, 0, 69, 0, 0, 106, 0,
- 84, 97, 98, 0, 89, 0, 0, 99, 100, 0,
- 90, 0, 91
+ 53, 54, 78, 77, 80, 79, 82, 81, 74, 75,
+ 76, 0, 0, 55, 0, 65, 0, 0, 0, 3,
+ 4, 9, 10, 5, 6, 7, 8, 13, 11, 12,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 57, 0, 67, 0, 0, 94, 95, 0, 87, 0,
+ 0, 103, 0, 73, 83, 89, 84, 56, 59, 58,
+ 105, 69, 0, 68, 0, 0, 0, 0, 0, 66,
+ 0, 0, 61, 62, 109, 104, 106, 107, 72, 70,
+ 96, 97, 98, 0, 88, 0, 0, 0, 0, 0,
+ 90, 85, 64, 63, 60, 110, 0, 71, 0, 0,
+ 108, 0, 86, 99, 100, 0, 91, 0, 0, 101,
+ 102, 0, 92, 0, 93
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -24, -24, -19, -24, 174, -24, -24, -24, -24, -24,
+ -24, -24, -19, -24, 178, -24, -24, -24, -24, -24,
-24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
-24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
-24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
@@ -837,11 +842,11 @@ static const yytype_int16 yypgoto[] =
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_uint8 yydefgoto[] =
{
- 0, 56, 57, 58, 59, 60, 61, 70, 88, 97,
- 104, 111, 125, 131, 62, 72, 90, 101, 106, 127,
- 117, 63, 64, 65, 103, 137, 87, 123, 66, 102,
- 136, 145, 151, 85, 121, 143, 149, 67, 98, 105,
- 114, 126, 115, 134
+ 0, 58, 59, 60, 61, 62, 63, 72, 90, 99,
+ 106, 113, 127, 133, 64, 74, 92, 103, 108, 129,
+ 119, 65, 66, 67, 105, 139, 89, 125, 68, 104,
+ 138, 147, 153, 87, 123, 145, 151, 69, 100, 107,
+ 116, 128, 117, 136
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -853,27 +858,28 @@ static const yytype_uint8 yytable[] =
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 112,
- 141, 142, 113, 68, 81, 82, 118, 119, 120, 69,
- 71, 50, 147, 148, 51, 52, 53, 54, 55, 96,
- 73, 100, 74, 99, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 75, 76, 77, 83, 78, 80, 86,
- 89, 93, 91, 92, 94, 50, 107, 108, 51, 52,
- 53, 54, 55, 84, 109, 110, 95, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 124, 116, 122, 128,
- 129, 130, 133, 139, 132, 146, 138, 135, 50, 140,
- 144, 51, 52, 53, 54, 55, 1, 2, 3, 4,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 114, 143, 144, 115, 70, 83, 84, 120, 121,
+ 122, 71, 73, 52, 149, 150, 53, 54, 55, 56,
+ 57, 98, 75, 102, 76, 101, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 150, 152, 79
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 77, 78, 79,
+ 85, 80, 82, 88, 91, 95, 93, 94, 96, 52,
+ 109, 110, 53, 54, 55, 56, 57, 86, 111, 112,
+ 97, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 126, 118, 124, 130, 131, 132, 135, 141,
+ 134, 148, 140, 137, 52, 142, 146, 53, 54, 55,
+ 56, 57, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 152,
+ 154, 81
};
static const yytype_int8 yycheck[] =
@@ -882,27 +888,28 @@ static const yytype_int8 yycheck[] =
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 72,
- 60, 61, 75, 74, 73, 74, 57, 58, 59, 74,
- 74, 64, 62, 63, 67, 68, 69, 70, 71, 88,
- 74, 90, 74, 76, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 0, 52, 65, 56, 74, 74, 73,
- 79, 79, 75, 75, 79, 64, 75, 53, 67, 68,
- 69, 70, 71, 73, 66, 72, 75, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 78, 73, 72, 79,
- 79, 73, 73, 54, 79, 55, 79, 77, 64, 75,
- 79, 67, 68, 69, 70, 71, 3, 4, 5, 6,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 74, 62, 63, 77, 76, 75, 76, 59, 60,
+ 61, 76, 76, 66, 64, 65, 69, 70, 71, 72,
+ 73, 90, 76, 92, 76, 78, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 79, 75, 71
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 0, 54, 67,
+ 58, 76, 76, 75, 81, 81, 77, 77, 81, 66,
+ 77, 55, 69, 70, 71, 72, 73, 75, 68, 74,
+ 77, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 80, 75, 74, 81, 81, 75, 75, 56,
+ 81, 57, 81, 79, 66, 77, 81, 69, 70, 71,
+ 72, 73, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 81,
+ 77, 73
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
@@ -914,33 +921,34 @@ static const yytype_int8 yystos[] =
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 64, 67, 68, 69, 70, 71, 81, 82, 83, 84,
- 85, 86, 94, 101, 102, 103, 108, 117, 74, 74,
- 87, 74, 95, 74, 74, 0, 52, 65, 74, 84,
- 74, 82, 82, 56, 73, 113, 73, 106, 88, 79,
- 96, 75, 75, 79, 79, 75, 82, 89, 118, 76,
- 82, 97, 109, 104, 90, 119, 98, 75, 53, 66,
- 72, 91, 72, 75, 120, 122, 73, 100, 57, 58,
- 59, 114, 72, 107, 78, 92, 121, 99, 79, 79,
- 73, 93, 79, 73, 123, 77, 110, 105, 79, 54,
- 75, 60, 61, 115, 79, 111, 55, 62, 63, 116,
- 79, 112, 75
+ 52, 53, 66, 69, 70, 71, 72, 73, 83, 84,
+ 85, 86, 87, 88, 96, 103, 104, 105, 110, 119,
+ 76, 76, 89, 76, 97, 76, 76, 0, 54, 67,
+ 76, 86, 76, 84, 84, 58, 75, 115, 75, 108,
+ 90, 81, 98, 77, 77, 81, 81, 77, 84, 91,
+ 120, 78, 84, 99, 111, 106, 92, 121, 100, 77,
+ 55, 68, 74, 93, 74, 77, 122, 124, 75, 102,
+ 59, 60, 61, 116, 74, 109, 80, 94, 123, 101,
+ 81, 81, 75, 95, 81, 75, 125, 79, 112, 107,
+ 81, 56, 77, 62, 63, 117, 81, 113, 57, 64,
+ 65, 118, 81, 114, 77
};
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
static const yytype_int8 yyr1[] =
{
- 0, 80, 81, 81, 82, 82, 82, 82, 82, 83,
- 83, 83, 83, 83, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 85, 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 87, 86, 88, 88, 90, 89, 91,
- 92, 92, 93, 95, 94, 96, 96, 98, 99, 97,
- 100, 101, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 104, 105, 103, 106, 107, 109, 110, 111,
- 112, 108, 113, 113, 114, 114, 114, 115, 115, 116,
- 116, 118, 117, 119, 119, 121, 120, 122, 123
+ 0, 82, 83, 83, 84, 84, 84, 84, 84, 85,
+ 85, 85, 85, 85, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 87, 87, 87, 87, 87, 87, 87, 87, 87,
+ 87, 87, 87, 87, 87, 89, 88, 90, 90, 92,
+ 91, 93, 94, 94, 95, 97, 96, 98, 98, 100,
+ 101, 99, 102, 103, 104, 104, 104, 104, 104, 104,
+ 104, 104, 104, 104, 106, 107, 105, 108, 109, 111,
+ 112, 113, 114, 110, 115, 115, 116, 116, 116, 117,
+ 117, 118, 118, 120, 119, 121, 121, 123, 122, 124,
+ 125
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
@@ -951,12 +959,13 @@ static const yytype_int8 yyr2[] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 5, 0, 2, 0, 5, 1,
- 0, 2, 1, 0, 6, 0, 2, 0, 0, 5,
- 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 0, 0, 11, 1, 1, 0, 0, 0,
- 0, 19, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 0, 7, 0, 2, 0, 4, 1, 1
+ 1, 1, 1, 1, 1, 0, 5, 0, 2, 0,
+ 5, 1, 0, 2, 1, 0, 6, 0, 2, 0,
+ 0, 5, 1, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 0, 0, 11, 1, 1, 0,
+ 0, 0, 0, 19, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 7, 0, 2, 0, 4, 1,
+ 1
};
@@ -1420,275 +1429,287 @@ yyparse (void)
switch (yyn)
{
case 2: /* start: %empty */
-#line 109 "hl/src//H5LTparse.y"
+#line 110 "hl/src//H5LTparse.y"
{ memset(arr_stack, 0, STACK_SIZE*sizeof(struct arr_info)); /*initialize here?*/ }
-#line 1397 "hl/src//H5LTparse.c"
+#line 1406 "hl/src//H5LTparse.c"
break;
case 3: /* start: ddl_type */
-#line 110 "hl/src//H5LTparse.y"
+#line 111 "hl/src//H5LTparse.y"
{ return (yyval.hid);}
-#line 1403 "hl/src//H5LTparse.c"
+#line 1412 "hl/src//H5LTparse.c"
break;
case 14: /* integer_type: H5T_STD_I8BE_TOKEN */
-#line 125 "hl/src//H5LTparse.y"
+#line 126 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I8BE); }
-#line 1409 "hl/src//H5LTparse.c"
+#line 1418 "hl/src//H5LTparse.c"
break;
case 15: /* integer_type: H5T_STD_I8LE_TOKEN */
-#line 126 "hl/src//H5LTparse.y"
+#line 127 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I8LE); }
-#line 1415 "hl/src//H5LTparse.c"
+#line 1424 "hl/src//H5LTparse.c"
break;
case 16: /* integer_type: H5T_STD_I16BE_TOKEN */
-#line 127 "hl/src//H5LTparse.y"
+#line 128 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I16BE); }
-#line 1421 "hl/src//H5LTparse.c"
+#line 1430 "hl/src//H5LTparse.c"
break;
case 17: /* integer_type: H5T_STD_I16LE_TOKEN */
-#line 128 "hl/src//H5LTparse.y"
+#line 129 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I16LE); }
-#line 1427 "hl/src//H5LTparse.c"
+#line 1436 "hl/src//H5LTparse.c"
break;
case 18: /* integer_type: H5T_STD_I32BE_TOKEN */
-#line 129 "hl/src//H5LTparse.y"
+#line 130 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I32BE); }
-#line 1433 "hl/src//H5LTparse.c"
+#line 1442 "hl/src//H5LTparse.c"
break;
case 19: /* integer_type: H5T_STD_I32LE_TOKEN */
-#line 130 "hl/src//H5LTparse.y"
+#line 131 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I32LE); }
-#line 1439 "hl/src//H5LTparse.c"
+#line 1448 "hl/src//H5LTparse.c"
break;
case 20: /* integer_type: H5T_STD_I64BE_TOKEN */
-#line 131 "hl/src//H5LTparse.y"
+#line 132 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I64BE); }
-#line 1445 "hl/src//H5LTparse.c"
+#line 1454 "hl/src//H5LTparse.c"
break;
case 21: /* integer_type: H5T_STD_I64LE_TOKEN */
-#line 132 "hl/src//H5LTparse.y"
+#line 133 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I64LE); }
-#line 1451 "hl/src//H5LTparse.c"
+#line 1460 "hl/src//H5LTparse.c"
break;
case 22: /* integer_type: H5T_STD_U8BE_TOKEN */
-#line 133 "hl/src//H5LTparse.y"
+#line 134 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U8BE); }
-#line 1457 "hl/src//H5LTparse.c"
+#line 1466 "hl/src//H5LTparse.c"
break;
case 23: /* integer_type: H5T_STD_U8LE_TOKEN */
-#line 134 "hl/src//H5LTparse.y"
+#line 135 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U8LE); }
-#line 1463 "hl/src//H5LTparse.c"
+#line 1472 "hl/src//H5LTparse.c"
break;
case 24: /* integer_type: H5T_STD_U16BE_TOKEN */
-#line 135 "hl/src//H5LTparse.y"
+#line 136 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U16BE); }
-#line 1469 "hl/src//H5LTparse.c"
+#line 1478 "hl/src//H5LTparse.c"
break;
case 25: /* integer_type: H5T_STD_U16LE_TOKEN */
-#line 136 "hl/src//H5LTparse.y"
+#line 137 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U16LE); }
-#line 1475 "hl/src//H5LTparse.c"
+#line 1484 "hl/src//H5LTparse.c"
break;
case 26: /* integer_type: H5T_STD_U32BE_TOKEN */
-#line 137 "hl/src//H5LTparse.y"
+#line 138 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U32BE); }
-#line 1481 "hl/src//H5LTparse.c"
+#line 1490 "hl/src//H5LTparse.c"
break;
case 27: /* integer_type: H5T_STD_U32LE_TOKEN */
-#line 138 "hl/src//H5LTparse.y"
+#line 139 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U32LE); }
-#line 1487 "hl/src//H5LTparse.c"
+#line 1496 "hl/src//H5LTparse.c"
break;
case 28: /* integer_type: H5T_STD_U64BE_TOKEN */
-#line 139 "hl/src//H5LTparse.y"
+#line 140 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U64BE); }
-#line 1493 "hl/src//H5LTparse.c"
+#line 1502 "hl/src//H5LTparse.c"
break;
case 29: /* integer_type: H5T_STD_U64LE_TOKEN */
-#line 140 "hl/src//H5LTparse.y"
+#line 141 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U64LE); }
-#line 1499 "hl/src//H5LTparse.c"
+#line 1508 "hl/src//H5LTparse.c"
break;
case 30: /* integer_type: H5T_NATIVE_CHAR_TOKEN */
-#line 141 "hl/src//H5LTparse.y"
+#line 142 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_CHAR); }
-#line 1505 "hl/src//H5LTparse.c"
+#line 1514 "hl/src//H5LTparse.c"
break;
case 31: /* integer_type: H5T_NATIVE_SCHAR_TOKEN */
-#line 142 "hl/src//H5LTparse.y"
+#line 143 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_SCHAR); }
-#line 1511 "hl/src//H5LTparse.c"
+#line 1520 "hl/src//H5LTparse.c"
break;
case 32: /* integer_type: H5T_NATIVE_UCHAR_TOKEN */
-#line 143 "hl/src//H5LTparse.y"
+#line 144 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_UCHAR); }
-#line 1517 "hl/src//H5LTparse.c"
+#line 1526 "hl/src//H5LTparse.c"
break;
case 33: /* integer_type: H5T_NATIVE_SHORT_TOKEN */
-#line 144 "hl/src//H5LTparse.y"
+#line 145 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_SHORT); }
-#line 1523 "hl/src//H5LTparse.c"
+#line 1532 "hl/src//H5LTparse.c"
break;
case 34: /* integer_type: H5T_NATIVE_USHORT_TOKEN */
-#line 145 "hl/src//H5LTparse.y"
+#line 146 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_USHORT); }
-#line 1529 "hl/src//H5LTparse.c"
+#line 1538 "hl/src//H5LTparse.c"
break;
case 35: /* integer_type: H5T_NATIVE_INT_TOKEN */
-#line 146 "hl/src//H5LTparse.y"
+#line 147 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_INT); }
-#line 1535 "hl/src//H5LTparse.c"
+#line 1544 "hl/src//H5LTparse.c"
break;
case 36: /* integer_type: H5T_NATIVE_UINT_TOKEN */
-#line 147 "hl/src//H5LTparse.y"
+#line 148 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_UINT); }
-#line 1541 "hl/src//H5LTparse.c"
+#line 1550 "hl/src//H5LTparse.c"
break;
case 37: /* integer_type: H5T_NATIVE_LONG_TOKEN */
-#line 148 "hl/src//H5LTparse.y"
+#line 149 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_LONG); }
-#line 1547 "hl/src//H5LTparse.c"
+#line 1556 "hl/src//H5LTparse.c"
break;
case 38: /* integer_type: H5T_NATIVE_ULONG_TOKEN */
-#line 149 "hl/src//H5LTparse.y"
+#line 150 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_ULONG); }
-#line 1553 "hl/src//H5LTparse.c"
+#line 1562 "hl/src//H5LTparse.c"
break;
case 39: /* integer_type: H5T_NATIVE_LLONG_TOKEN */
-#line 150 "hl/src//H5LTparse.y"
+#line 151 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_LLONG); }
-#line 1559 "hl/src//H5LTparse.c"
+#line 1568 "hl/src//H5LTparse.c"
break;
case 40: /* integer_type: H5T_NATIVE_ULLONG_TOKEN */
-#line 151 "hl/src//H5LTparse.y"
+#line 152 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_ULLONG); }
-#line 1565 "hl/src//H5LTparse.c"
+#line 1574 "hl/src//H5LTparse.c"
break;
case 41: /* fp_type: H5T_IEEE_F16BE_TOKEN */
-#line 154 "hl/src//H5LTparse.y"
+#line 155 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F16BE); }
-#line 1571 "hl/src//H5LTparse.c"
+#line 1580 "hl/src//H5LTparse.c"
break;
case 42: /* fp_type: H5T_IEEE_F16LE_TOKEN */
-#line 155 "hl/src//H5LTparse.y"
+#line 156 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F16LE); }
-#line 1577 "hl/src//H5LTparse.c"
+#line 1586 "hl/src//H5LTparse.c"
break;
case 43: /* fp_type: H5T_IEEE_F32BE_TOKEN */
-#line 156 "hl/src//H5LTparse.y"
+#line 157 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F32BE); }
-#line 1583 "hl/src//H5LTparse.c"
+#line 1592 "hl/src//H5LTparse.c"
break;
case 44: /* fp_type: H5T_IEEE_F32LE_TOKEN */
-#line 157 "hl/src//H5LTparse.y"
+#line 158 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F32LE); }
-#line 1589 "hl/src//H5LTparse.c"
+#line 1598 "hl/src//H5LTparse.c"
break;
case 45: /* fp_type: H5T_IEEE_F64BE_TOKEN */
-#line 158 "hl/src//H5LTparse.y"
+#line 159 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F64BE); }
-#line 1595 "hl/src//H5LTparse.c"
+#line 1604 "hl/src//H5LTparse.c"
break;
case 46: /* fp_type: H5T_IEEE_F64LE_TOKEN */
-#line 159 "hl/src//H5LTparse.y"
+#line 160 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F64LE); }
-#line 1601 "hl/src//H5LTparse.c"
+#line 1610 "hl/src//H5LTparse.c"
break;
case 47: /* fp_type: H5T_FLOAT_BFLOAT16BE_TOKEN */
-#line 160 "hl/src//H5LTparse.y"
+#line 161 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_FLOAT_BFLOAT16BE); }
-#line 1607 "hl/src//H5LTparse.c"
+#line 1616 "hl/src//H5LTparse.c"
break;
case 48: /* fp_type: H5T_FLOAT_BFLOAT16LE_TOKEN */
-#line 161 "hl/src//H5LTparse.y"
+#line 162 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_FLOAT_BFLOAT16LE); }
-#line 1613 "hl/src//H5LTparse.c"
+#line 1622 "hl/src//H5LTparse.c"
break;
- case 49: /* fp_type: H5T_NATIVE_FLOAT16_TOKEN */
-#line 162 "hl/src//H5LTparse.y"
+ case 49: /* fp_type: H5T_FLOAT_F8E4M3_TOKEN */
+#line 163 "hl/src//H5LTparse.y"
+ { (yyval.hid) = H5Tcopy(H5T_FLOAT_F8E4M3); }
+#line 1628 "hl/src//H5LTparse.c"
+ break;
+
+ case 50: /* fp_type: H5T_FLOAT_F8E5M2_TOKEN */
+#line 164 "hl/src//H5LTparse.y"
+ { (yyval.hid) = H5Tcopy(H5T_FLOAT_F8E5M2); }
+#line 1634 "hl/src//H5LTparse.c"
+ break;
+
+ case 51: /* fp_type: H5T_NATIVE_FLOAT16_TOKEN */
+#line 165 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_FLOAT16); }
-#line 1619 "hl/src//H5LTparse.c"
+#line 1640 "hl/src//H5LTparse.c"
break;
- case 50: /* fp_type: H5T_NATIVE_FLOAT_TOKEN */
-#line 163 "hl/src//H5LTparse.y"
+ case 52: /* fp_type: H5T_NATIVE_FLOAT_TOKEN */
+#line 166 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_FLOAT); }
-#line 1625 "hl/src//H5LTparse.c"
+#line 1646 "hl/src//H5LTparse.c"
break;
- case 51: /* fp_type: H5T_NATIVE_DOUBLE_TOKEN */
-#line 164 "hl/src//H5LTparse.y"
+ case 53: /* fp_type: H5T_NATIVE_DOUBLE_TOKEN */
+#line 167 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_DOUBLE); }
-#line 1631 "hl/src//H5LTparse.c"
+#line 1652 "hl/src//H5LTparse.c"
break;
- case 52: /* fp_type: H5T_NATIVE_LDOUBLE_TOKEN */
-#line 165 "hl/src//H5LTparse.y"
+ case 54: /* fp_type: H5T_NATIVE_LDOUBLE_TOKEN */
+#line 168 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_LDOUBLE); }
-#line 1637 "hl/src//H5LTparse.c"
+#line 1658 "hl/src//H5LTparse.c"
break;
- case 53: /* $@1: %empty */
-#line 169 "hl/src//H5LTparse.y"
+ case 55: /* $@1: %empty */
+#line 172 "hl/src//H5LTparse.y"
{ csindex++; cmpd_stack[csindex].id = H5Tcreate(H5T_COMPOUND, 1); /*temporarily set size to 1*/ }
-#line 1643 "hl/src//H5LTparse.c"
+#line 1664 "hl/src//H5LTparse.c"
break;
- case 54: /* compound_type: H5T_COMPOUND_TOKEN $@1 '{' memb_list '}' */
-#line 171 "hl/src//H5LTparse.y"
+ case 56: /* compound_type: H5T_COMPOUND_TOKEN $@1 '{' memb_list '}' */
+#line 174 "hl/src//H5LTparse.y"
{ (yyval.hid) = cmpd_stack[csindex].id;
cmpd_stack[csindex].id = 0;
cmpd_stack[csindex].first_memb = 1;
csindex--;
}
-#line 1653 "hl/src//H5LTparse.c"
+#line 1674 "hl/src//H5LTparse.c"
break;
- case 57: /* $@2: %empty */
-#line 180 "hl/src//H5LTparse.y"
+ case 59: /* $@2: %empty */
+#line 183 "hl/src//H5LTparse.y"
{ cmpd_stack[csindex].is_field = 1; /*notify lexer a compound member is parsed*/ }
-#line 1659 "hl/src//H5LTparse.c"
+#line 1680 "hl/src//H5LTparse.c"
break;
- case 58: /* memb_def: ddl_type $@2 field_name field_offset ';' */
-#line 182 "hl/src//H5LTparse.y"
+ case 60: /* memb_def: ddl_type $@2 field_name field_offset ';' */
+#line 185 "hl/src//H5LTparse.y"
{
size_t origin_size, new_size;
hid_t dtype_id = cmpd_stack[csindex].id;
@@ -1723,168 +1744,168 @@ yyparse (void)
new_size = H5Tget_size(dtype_id);
}
-#line 1698 "hl/src//H5LTparse.c"
+#line 1719 "hl/src//H5LTparse.c"
break;
- case 59: /* field_name: STRING */
-#line 218 "hl/src//H5LTparse.y"
+ case 61: /* field_name: STRING */
+#line 221 "hl/src//H5LTparse.y"
{
(yyval.sval) = strdup(yylval.sval);
free(yylval.sval);
yylval.sval = NULL;
}
-#line 1708 "hl/src//H5LTparse.c"
+#line 1729 "hl/src//H5LTparse.c"
break;
- case 60: /* field_offset: %empty */
-#line 225 "hl/src//H5LTparse.y"
+ case 62: /* field_offset: %empty */
+#line 228 "hl/src//H5LTparse.y"
{ (yyval.ival) = 0; }
-#line 1714 "hl/src//H5LTparse.c"
+#line 1735 "hl/src//H5LTparse.c"
break;
- case 61: /* field_offset: ':' offset */
-#line 227 "hl/src//H5LTparse.y"
+ case 63: /* field_offset: ':' offset */
+#line 230 "hl/src//H5LTparse.y"
{ (yyval.ival) = yylval.ival; }
-#line 1720 "hl/src//H5LTparse.c"
+#line 1741 "hl/src//H5LTparse.c"
break;
- case 63: /* $@3: %empty */
-#line 231 "hl/src//H5LTparse.y"
+ case 65: /* $@3: %empty */
+#line 234 "hl/src//H5LTparse.y"
{ asindex++; /*pushd onto the stack*/ }
-#line 1726 "hl/src//H5LTparse.c"
+#line 1747 "hl/src//H5LTparse.c"
break;
- case 64: /* array_type: H5T_ARRAY_TOKEN $@3 '{' dim_list ddl_type '}' */
-#line 233 "hl/src//H5LTparse.y"
+ case 66: /* array_type: H5T_ARRAY_TOKEN $@3 '{' dim_list ddl_type '}' */
+#line 236 "hl/src//H5LTparse.y"
{
(yyval.hid) = H5Tarray_create2((yyvsp[-1].hid), arr_stack[asindex].ndims, arr_stack[asindex].dims);
arr_stack[asindex].ndims = 0;
asindex--;
H5Tclose((yyvsp[-1].hid));
}
-#line 1737 "hl/src//H5LTparse.c"
+#line 1758 "hl/src//H5LTparse.c"
break;
- case 67: /* $@4: %empty */
-#line 243 "hl/src//H5LTparse.y"
+ case 69: /* $@4: %empty */
+#line 246 "hl/src//H5LTparse.y"
{ arr_stack[asindex].is_dim = 1; /*notice lexer of dimension size*/ }
-#line 1743 "hl/src//H5LTparse.c"
+#line 1764 "hl/src//H5LTparse.c"
break;
- case 68: /* $@5: %empty */
-#line 244 "hl/src//H5LTparse.y"
+ case 70: /* $@5: %empty */
+#line 247 "hl/src//H5LTparse.y"
{ unsigned ndims = arr_stack[asindex].ndims;
arr_stack[asindex].dims[ndims] = (hsize_t)yylval.ival;
arr_stack[asindex].ndims++;
arr_stack[asindex].is_dim = 0;
}
-#line 1753 "hl/src//H5LTparse.c"
+#line 1774 "hl/src//H5LTparse.c"
break;
- case 71: /* vlen_type: H5T_VLEN_TOKEN '{' ddl_type '}' */
-#line 255 "hl/src//H5LTparse.y"
+ case 73: /* vlen_type: H5T_VLEN_TOKEN '{' ddl_type '}' */
+#line 258 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tvlen_create((yyvsp[-1].hid)); H5Tclose((yyvsp[-1].hid)); }
-#line 1759 "hl/src//H5LTparse.c"
+#line 1780 "hl/src//H5LTparse.c"
break;
- case 72: /* complex_type: H5T_NATIVE_FLOAT_COMPLEX_TOKEN */
-#line 258 "hl/src//H5LTparse.y"
+ case 74: /* complex_type: H5T_NATIVE_FLOAT_COMPLEX_TOKEN */
+#line 261 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_FLOAT_COMPLEX); }
-#line 1765 "hl/src//H5LTparse.c"
+#line 1786 "hl/src//H5LTparse.c"
break;
- case 73: /* complex_type: H5T_NATIVE_DOUBLE_COMPLEX_TOKEN */
-#line 259 "hl/src//H5LTparse.y"
+ case 75: /* complex_type: H5T_NATIVE_DOUBLE_COMPLEX_TOKEN */
+#line 262 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_DOUBLE_COMPLEX); }
-#line 1771 "hl/src//H5LTparse.c"
+#line 1792 "hl/src//H5LTparse.c"
break;
- case 74: /* complex_type: H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN */
-#line 260 "hl/src//H5LTparse.y"
+ case 76: /* complex_type: H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN */
+#line 263 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_LDOUBLE_COMPLEX); }
-#line 1777 "hl/src//H5LTparse.c"
+#line 1798 "hl/src//H5LTparse.c"
break;
- case 75: /* complex_type: H5T_COMPLEX_IEEE_F16LE_TOKEN */
-#line 261 "hl/src//H5LTparse.y"
+ case 77: /* complex_type: H5T_COMPLEX_IEEE_F16LE_TOKEN */
+#line 264 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_COMPLEX_IEEE_F16LE); }
-#line 1783 "hl/src//H5LTparse.c"
+#line 1804 "hl/src//H5LTparse.c"
break;
- case 76: /* complex_type: H5T_COMPLEX_IEEE_F16BE_TOKEN */
-#line 262 "hl/src//H5LTparse.y"
+ case 78: /* complex_type: H5T_COMPLEX_IEEE_F16BE_TOKEN */
+#line 265 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_COMPLEX_IEEE_F16BE); }
-#line 1789 "hl/src//H5LTparse.c"
+#line 1810 "hl/src//H5LTparse.c"
break;
- case 77: /* complex_type: H5T_COMPLEX_IEEE_F32LE_TOKEN */
-#line 263 "hl/src//H5LTparse.y"
+ case 79: /* complex_type: H5T_COMPLEX_IEEE_F32LE_TOKEN */
+#line 266 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_COMPLEX_IEEE_F32LE); }
-#line 1795 "hl/src//H5LTparse.c"
+#line 1816 "hl/src//H5LTparse.c"
break;
- case 78: /* complex_type: H5T_COMPLEX_IEEE_F32BE_TOKEN */
-#line 264 "hl/src//H5LTparse.y"
+ case 80: /* complex_type: H5T_COMPLEX_IEEE_F32BE_TOKEN */
+#line 267 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_COMPLEX_IEEE_F32BE); }
-#line 1801 "hl/src//H5LTparse.c"
+#line 1822 "hl/src//H5LTparse.c"
break;
- case 79: /* complex_type: H5T_COMPLEX_IEEE_F64LE_TOKEN */
-#line 265 "hl/src//H5LTparse.y"
+ case 81: /* complex_type: H5T_COMPLEX_IEEE_F64LE_TOKEN */
+#line 268 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_COMPLEX_IEEE_F64LE); }
-#line 1807 "hl/src//H5LTparse.c"
+#line 1828 "hl/src//H5LTparse.c"
break;
- case 80: /* complex_type: H5T_COMPLEX_IEEE_F64BE_TOKEN */
-#line 266 "hl/src//H5LTparse.y"
+ case 82: /* complex_type: H5T_COMPLEX_IEEE_F64BE_TOKEN */
+#line 269 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_COMPLEX_IEEE_F64BE); }
-#line 1813 "hl/src//H5LTparse.c"
+#line 1834 "hl/src//H5LTparse.c"
break;
- case 81: /* complex_type: H5T_COMPLEX_TOKEN '{' ddl_type '}' */
-#line 268 "hl/src//H5LTparse.y"
+ case 83: /* complex_type: H5T_COMPLEX_TOKEN '{' ddl_type '}' */
+#line 271 "hl/src//H5LTparse.y"
{ (yyval.hid) = H5Tcomplex_create((yyvsp[-1].hid)); H5Tclose((yyvsp[-1].hid)); }
-#line 1819 "hl/src//H5LTparse.c"
+#line 1840 "hl/src//H5LTparse.c"
break;
- case 82: /* @6: %empty */
-#line 274 "hl/src//H5LTparse.y"
+ case 84: /* @6: %empty */
+#line 277 "hl/src//H5LTparse.y"
{
size_t size = (size_t)yylval.ival;
(yyval.hid) = H5Tcreate(H5T_OPAQUE, size);
}
-#line 1828 "hl/src//H5LTparse.c"
+#line 1849 "hl/src//H5LTparse.c"
break;
- case 83: /* $@7: %empty */
-#line 279 "hl/src//H5LTparse.y"
+ case 85: /* $@7: %empty */
+#line 282 "hl/src//H5LTparse.y"
{
H5Tset_tag((yyvsp[-3].hid), yylval.sval);
free(yylval.sval);
yylval.sval = NULL;
}
-#line 1838 "hl/src//H5LTparse.c"
+#line 1859 "hl/src//H5LTparse.c"
break;
- case 84: /* opaque_type: H5T_OPAQUE_TOKEN '{' OPQ_SIZE_TOKEN opaque_size ';' @6 OPQ_TAG_TOKEN opaque_tag ';' $@7 '}' */
-#line 284 "hl/src//H5LTparse.y"
+ case 86: /* opaque_type: H5T_OPAQUE_TOKEN '{' OPQ_SIZE_TOKEN opaque_size ';' @6 OPQ_TAG_TOKEN opaque_tag ';' $@7 '}' */
+#line 287 "hl/src//H5LTparse.y"
{ (yyval.hid) = (yyvsp[-5].hid); }
-#line 1844 "hl/src//H5LTparse.c"
+#line 1865 "hl/src//H5LTparse.c"
break;
- case 87: /* $@8: %empty */
-#line 293 "hl/src//H5LTparse.y"
+ case 89: /* $@8: %empty */
+#line 296 "hl/src//H5LTparse.y"
{
if((yyvsp[-1].ival) == H5T_VARIABLE_TOKEN)
is_variable = 1;
else
str_size = yylval.ival;
}
-#line 1855 "hl/src//H5LTparse.c"
+#line 1876 "hl/src//H5LTparse.c"
break;
- case 88: /* $@9: %empty */
-#line 300 "hl/src//H5LTparse.y"
+ case 90: /* $@9: %empty */
+#line 303 "hl/src//H5LTparse.y"
{
if((yyvsp[-1].ival) == H5T_STR_NULLTERM_TOKEN)
str_pad = H5T_STR_NULLTERM;
@@ -1893,33 +1914,33 @@ yyparse (void)
else if((yyvsp[-1].ival) == H5T_STR_SPACEPAD_TOKEN)
str_pad = H5T_STR_SPACEPAD;
}
-#line 1868 "hl/src//H5LTparse.c"
+#line 1889 "hl/src//H5LTparse.c"
break;
- case 89: /* $@10: %empty */
-#line 309 "hl/src//H5LTparse.y"
+ case 91: /* $@10: %empty */
+#line 312 "hl/src//H5LTparse.y"
{
if((yyvsp[-1].ival) == H5T_CSET_ASCII_TOKEN)
str_cset = H5T_CSET_ASCII;
else if((yyvsp[-1].ival) == H5T_CSET_UTF8_TOKEN)
str_cset = H5T_CSET_UTF8;
}
-#line 1879 "hl/src//H5LTparse.c"
+#line 1900 "hl/src//H5LTparse.c"
break;
- case 90: /* @11: %empty */
-#line 316 "hl/src//H5LTparse.y"
+ case 92: /* @11: %empty */
+#line 319 "hl/src//H5LTparse.y"
{
if((yyvsp[-1].hid) == H5T_C_S1_TOKEN)
(yyval.hid) = H5Tcopy(H5T_C_S1);
else if((yyvsp[-1].hid) == H5T_FORTRAN_S1_TOKEN)
(yyval.hid) = H5Tcopy(H5T_FORTRAN_S1);
}
-#line 1890 "hl/src//H5LTparse.c"
+#line 1911 "hl/src//H5LTparse.c"
break;
- case 91: /* string_type: H5T_STRING_TOKEN '{' STRSIZE_TOKEN strsize ';' $@8 STRPAD_TOKEN strpad ';' $@9 CSET_TOKEN cset ';' $@10 CTYPE_TOKEN ctype ';' @11 '}' */
-#line 323 "hl/src//H5LTparse.y"
+ case 93: /* string_type: H5T_STRING_TOKEN '{' STRSIZE_TOKEN strsize ';' $@8 STRPAD_TOKEN strpad ';' $@9 CSET_TOKEN cset ';' $@10 CTYPE_TOKEN ctype ';' @11 '}' */
+#line 326 "hl/src//H5LTparse.y"
{
hid_t str_id = (yyvsp[-1].hid);
@@ -1936,82 +1957,82 @@ yyparse (void)
(yyval.hid) = str_id;
}
-#line 1911 "hl/src//H5LTparse.c"
+#line 1932 "hl/src//H5LTparse.c"
break;
- case 92: /* strsize: H5T_VARIABLE_TOKEN */
-#line 340 "hl/src//H5LTparse.y"
+ case 94: /* strsize: H5T_VARIABLE_TOKEN */
+#line 343 "hl/src//H5LTparse.y"
{(yyval.ival) = H5T_VARIABLE_TOKEN;}
-#line 1917 "hl/src//H5LTparse.c"
+#line 1938 "hl/src//H5LTparse.c"
break;
- case 94: /* strpad: H5T_STR_NULLTERM_TOKEN */
-#line 343 "hl/src//H5LTparse.y"
+ case 96: /* strpad: H5T_STR_NULLTERM_TOKEN */
+#line 346 "hl/src//H5LTparse.y"
{(yyval.ival) = H5T_STR_NULLTERM_TOKEN;}
-#line 1923 "hl/src//H5LTparse.c"
+#line 1944 "hl/src//H5LTparse.c"
break;
- case 95: /* strpad: H5T_STR_NULLPAD_TOKEN */
-#line 344 "hl/src//H5LTparse.y"
+ case 97: /* strpad: H5T_STR_NULLPAD_TOKEN */
+#line 347 "hl/src//H5LTparse.y"
{(yyval.ival) = H5T_STR_NULLPAD_TOKEN;}
-#line 1929 "hl/src//H5LTparse.c"
+#line 1950 "hl/src//H5LTparse.c"
break;
- case 96: /* strpad: H5T_STR_SPACEPAD_TOKEN */
-#line 345 "hl/src//H5LTparse.y"
+ case 98: /* strpad: H5T_STR_SPACEPAD_TOKEN */
+#line 348 "hl/src//H5LTparse.y"
{(yyval.ival) = H5T_STR_SPACEPAD_TOKEN;}
-#line 1935 "hl/src//H5LTparse.c"
+#line 1956 "hl/src//H5LTparse.c"
break;
- case 97: /* cset: H5T_CSET_ASCII_TOKEN */
-#line 347 "hl/src//H5LTparse.y"
+ case 99: /* cset: H5T_CSET_ASCII_TOKEN */
+#line 350 "hl/src//H5LTparse.y"
{(yyval.ival) = H5T_CSET_ASCII_TOKEN;}
-#line 1941 "hl/src//H5LTparse.c"
+#line 1962 "hl/src//H5LTparse.c"
break;
- case 98: /* cset: H5T_CSET_UTF8_TOKEN */
-#line 348 "hl/src//H5LTparse.y"
+ case 100: /* cset: H5T_CSET_UTF8_TOKEN */
+#line 351 "hl/src//H5LTparse.y"
{(yyval.ival) = H5T_CSET_UTF8_TOKEN;}
-#line 1947 "hl/src//H5LTparse.c"
+#line 1968 "hl/src//H5LTparse.c"
break;
- case 99: /* ctype: H5T_C_S1_TOKEN */
-#line 350 "hl/src//H5LTparse.y"
+ case 101: /* ctype: H5T_C_S1_TOKEN */
+#line 353 "hl/src//H5LTparse.y"
{(yyval.hid) = H5T_C_S1_TOKEN;}
-#line 1953 "hl/src//H5LTparse.c"
+#line 1974 "hl/src//H5LTparse.c"
break;
- case 100: /* ctype: H5T_FORTRAN_S1_TOKEN */
-#line 351 "hl/src//H5LTparse.y"
+ case 102: /* ctype: H5T_FORTRAN_S1_TOKEN */
+#line 354 "hl/src//H5LTparse.y"
{(yyval.hid) = H5T_FORTRAN_S1_TOKEN;}
-#line 1959 "hl/src//H5LTparse.c"
+#line 1980 "hl/src//H5LTparse.c"
break;
- case 101: /* $@12: %empty */
-#line 355 "hl/src//H5LTparse.y"
+ case 103: /* $@12: %empty */
+#line 358 "hl/src//H5LTparse.y"
{ is_enum = 1; enum_id = H5Tenum_create((yyvsp[-1].hid)); H5Tclose((yyvsp[-1].hid)); }
-#line 1965 "hl/src//H5LTparse.c"
+#line 1986 "hl/src//H5LTparse.c"
break;
- case 102: /* enum_type: H5T_ENUM_TOKEN '{' integer_type ';' $@12 enum_list '}' */
-#line 357 "hl/src//H5LTparse.y"
+ case 104: /* enum_type: H5T_ENUM_TOKEN '{' integer_type ';' $@12 enum_list '}' */
+#line 360 "hl/src//H5LTparse.y"
{ is_enum = 0; /*reset*/ (yyval.hid) = enum_id; }
-#line 1971 "hl/src//H5LTparse.c"
+#line 1992 "hl/src//H5LTparse.c"
break;
- case 105: /* $@13: %empty */
-#line 362 "hl/src//H5LTparse.y"
+ case 107: /* $@13: %empty */
+#line 365 "hl/src//H5LTparse.y"
{
is_enum_memb = 1; /*indicate member of enum*/
enum_memb_symbol = strdup(yylval.sval);
free(yylval.sval);
yylval.sval = NULL;
}
-#line 1982 "hl/src//H5LTparse.c"
+#line 2003 "hl/src//H5LTparse.c"
break;
- case 106: /* enum_def: enum_symbol $@13 enum_val ';' */
-#line 369 "hl/src//H5LTparse.y"
+ case 108: /* enum_def: enum_symbol $@13 enum_val ';' */
+#line 372 "hl/src//H5LTparse.y"
{
char char_val=(char)yylval.ival;
short short_val=(short)yylval.ival;
@@ -2054,11 +2075,11 @@ yyparse (void)
H5Tclose(super);
H5Tclose(native);
}
-#line 2029 "hl/src//H5LTparse.c"
+#line 2050 "hl/src//H5LTparse.c"
break;
-#line 2033 "hl/src//H5LTparse.c"
+#line 2054 "hl/src//H5LTparse.c"
default: break;
}
diff --git a/hl/src/H5LTparse.h b/hl/src/H5LTparse.h
index 70aab7373bc..2df3383ebf2 100644
--- a/hl/src/H5LTparse.h
+++ b/hl/src/H5LTparse.h
@@ -89,42 +89,44 @@ extern int H5LTyydebug;
H5T_IEEE_F64LE_TOKEN = 290, /* H5T_IEEE_F64LE_TOKEN */
H5T_FLOAT_BFLOAT16BE_TOKEN = 291, /* H5T_FLOAT_BFLOAT16BE_TOKEN */
H5T_FLOAT_BFLOAT16LE_TOKEN = 292, /* H5T_FLOAT_BFLOAT16LE_TOKEN */
- H5T_NATIVE_FLOAT16_TOKEN = 293, /* H5T_NATIVE_FLOAT16_TOKEN */
- H5T_NATIVE_FLOAT_TOKEN = 294, /* H5T_NATIVE_FLOAT_TOKEN */
- H5T_NATIVE_DOUBLE_TOKEN = 295, /* H5T_NATIVE_DOUBLE_TOKEN */
- H5T_NATIVE_LDOUBLE_TOKEN = 296, /* H5T_NATIVE_LDOUBLE_TOKEN */
- H5T_COMPLEX_IEEE_F16BE_TOKEN = 297, /* H5T_COMPLEX_IEEE_F16BE_TOKEN */
- H5T_COMPLEX_IEEE_F16LE_TOKEN = 298, /* H5T_COMPLEX_IEEE_F16LE_TOKEN */
- H5T_COMPLEX_IEEE_F32BE_TOKEN = 299, /* H5T_COMPLEX_IEEE_F32BE_TOKEN */
- H5T_COMPLEX_IEEE_F32LE_TOKEN = 300, /* H5T_COMPLEX_IEEE_F32LE_TOKEN */
- H5T_COMPLEX_IEEE_F64BE_TOKEN = 301, /* H5T_COMPLEX_IEEE_F64BE_TOKEN */
- H5T_COMPLEX_IEEE_F64LE_TOKEN = 302, /* H5T_COMPLEX_IEEE_F64LE_TOKEN */
- H5T_NATIVE_FLOAT_COMPLEX_TOKEN = 303, /* H5T_NATIVE_FLOAT_COMPLEX_TOKEN */
- H5T_NATIVE_DOUBLE_COMPLEX_TOKEN = 304, /* H5T_NATIVE_DOUBLE_COMPLEX_TOKEN */
- H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN = 305, /* H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN */
- H5T_STRING_TOKEN = 306, /* H5T_STRING_TOKEN */
- STRSIZE_TOKEN = 307, /* STRSIZE_TOKEN */
- STRPAD_TOKEN = 308, /* STRPAD_TOKEN */
- CSET_TOKEN = 309, /* CSET_TOKEN */
- CTYPE_TOKEN = 310, /* CTYPE_TOKEN */
- H5T_VARIABLE_TOKEN = 311, /* H5T_VARIABLE_TOKEN */
- H5T_STR_NULLTERM_TOKEN = 312, /* H5T_STR_NULLTERM_TOKEN */
- H5T_STR_NULLPAD_TOKEN = 313, /* H5T_STR_NULLPAD_TOKEN */
- H5T_STR_SPACEPAD_TOKEN = 314, /* H5T_STR_SPACEPAD_TOKEN */
- H5T_CSET_ASCII_TOKEN = 315, /* H5T_CSET_ASCII_TOKEN */
- H5T_CSET_UTF8_TOKEN = 316, /* H5T_CSET_UTF8_TOKEN */
- H5T_C_S1_TOKEN = 317, /* H5T_C_S1_TOKEN */
- H5T_FORTRAN_S1_TOKEN = 318, /* H5T_FORTRAN_S1_TOKEN */
- H5T_OPAQUE_TOKEN = 319, /* H5T_OPAQUE_TOKEN */
- OPQ_SIZE_TOKEN = 320, /* OPQ_SIZE_TOKEN */
- OPQ_TAG_TOKEN = 321, /* OPQ_TAG_TOKEN */
- H5T_COMPOUND_TOKEN = 322, /* H5T_COMPOUND_TOKEN */
- H5T_ENUM_TOKEN = 323, /* H5T_ENUM_TOKEN */
- H5T_ARRAY_TOKEN = 324, /* H5T_ARRAY_TOKEN */
- H5T_VLEN_TOKEN = 325, /* H5T_VLEN_TOKEN */
- H5T_COMPLEX_TOKEN = 326, /* H5T_COMPLEX_TOKEN */
- STRING = 327, /* STRING */
- NUMBER = 328 /* NUMBER */
+ H5T_FLOAT_F8E4M3_TOKEN = 293, /* H5T_FLOAT_F8E4M3_TOKEN */
+ H5T_FLOAT_F8E5M2_TOKEN = 294, /* H5T_FLOAT_F8E5M2_TOKEN */
+ H5T_NATIVE_FLOAT16_TOKEN = 295, /* H5T_NATIVE_FLOAT16_TOKEN */
+ H5T_NATIVE_FLOAT_TOKEN = 296, /* H5T_NATIVE_FLOAT_TOKEN */
+ H5T_NATIVE_DOUBLE_TOKEN = 297, /* H5T_NATIVE_DOUBLE_TOKEN */
+ H5T_NATIVE_LDOUBLE_TOKEN = 298, /* H5T_NATIVE_LDOUBLE_TOKEN */
+ H5T_COMPLEX_IEEE_F16BE_TOKEN = 299, /* H5T_COMPLEX_IEEE_F16BE_TOKEN */
+ H5T_COMPLEX_IEEE_F16LE_TOKEN = 300, /* H5T_COMPLEX_IEEE_F16LE_TOKEN */
+ H5T_COMPLEX_IEEE_F32BE_TOKEN = 301, /* H5T_COMPLEX_IEEE_F32BE_TOKEN */
+ H5T_COMPLEX_IEEE_F32LE_TOKEN = 302, /* H5T_COMPLEX_IEEE_F32LE_TOKEN */
+ H5T_COMPLEX_IEEE_F64BE_TOKEN = 303, /* H5T_COMPLEX_IEEE_F64BE_TOKEN */
+ H5T_COMPLEX_IEEE_F64LE_TOKEN = 304, /* H5T_COMPLEX_IEEE_F64LE_TOKEN */
+ H5T_NATIVE_FLOAT_COMPLEX_TOKEN = 305, /* H5T_NATIVE_FLOAT_COMPLEX_TOKEN */
+ H5T_NATIVE_DOUBLE_COMPLEX_TOKEN = 306, /* H5T_NATIVE_DOUBLE_COMPLEX_TOKEN */
+ H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN = 307, /* H5T_NATIVE_LDOUBLE_COMPLEX_TOKEN */
+ H5T_STRING_TOKEN = 308, /* H5T_STRING_TOKEN */
+ STRSIZE_TOKEN = 309, /* STRSIZE_TOKEN */
+ STRPAD_TOKEN = 310, /* STRPAD_TOKEN */
+ CSET_TOKEN = 311, /* CSET_TOKEN */
+ CTYPE_TOKEN = 312, /* CTYPE_TOKEN */
+ H5T_VARIABLE_TOKEN = 313, /* H5T_VARIABLE_TOKEN */
+ H5T_STR_NULLTERM_TOKEN = 314, /* H5T_STR_NULLTERM_TOKEN */
+ H5T_STR_NULLPAD_TOKEN = 315, /* H5T_STR_NULLPAD_TOKEN */
+ H5T_STR_SPACEPAD_TOKEN = 316, /* H5T_STR_SPACEPAD_TOKEN */
+ H5T_CSET_ASCII_TOKEN = 317, /* H5T_CSET_ASCII_TOKEN */
+ H5T_CSET_UTF8_TOKEN = 318, /* H5T_CSET_UTF8_TOKEN */
+ H5T_C_S1_TOKEN = 319, /* H5T_C_S1_TOKEN */
+ H5T_FORTRAN_S1_TOKEN = 320, /* H5T_FORTRAN_S1_TOKEN */
+ H5T_OPAQUE_TOKEN = 321, /* H5T_OPAQUE_TOKEN */
+ OPQ_SIZE_TOKEN = 322, /* OPQ_SIZE_TOKEN */
+ OPQ_TAG_TOKEN = 323, /* OPQ_TAG_TOKEN */
+ H5T_COMPOUND_TOKEN = 324, /* H5T_COMPOUND_TOKEN */
+ H5T_ENUM_TOKEN = 325, /* H5T_ENUM_TOKEN */
+ H5T_ARRAY_TOKEN = 326, /* H5T_ARRAY_TOKEN */
+ H5T_VLEN_TOKEN = 327, /* H5T_VLEN_TOKEN */
+ H5T_COMPLEX_TOKEN = 328, /* H5T_COMPLEX_TOKEN */
+ STRING = 329, /* STRING */
+ NUMBER = 330 /* NUMBER */
};
typedef enum yytokentype yytoken_kind_t;
#endif
@@ -139,7 +141,7 @@ union YYSTYPE
char *sval; /*for name string*/
hid_t hid; /*for hid_t token*/
-#line 143 "hl/src//H5LTparse.h"
+#line 145 "hl/src//H5LTparse.h"
};
typedef union YYSTYPE YYSTYPE;
diff --git a/hl/src/H5LTparse.y b/hl/src/H5LTparse.y
index 4c3db030656..c619eec765e 100644
--- a/hl/src/H5LTparse.y
+++ b/hl/src/H5LTparse.y
@@ -82,6 +82,7 @@ static char* enum_memb_symbol; /*enum member symbol string*/
%token H5T_IEEE_F16BE_TOKEN H5T_IEEE_F16LE_TOKEN
%token H5T_IEEE_F32BE_TOKEN H5T_IEEE_F32LE_TOKEN H5T_IEEE_F64BE_TOKEN H5T_IEEE_F64LE_TOKEN
%token H5T_FLOAT_BFLOAT16BE_TOKEN H5T_FLOAT_BFLOAT16LE_TOKEN
+%token H5T_FLOAT_F8E4M3_TOKEN H5T_FLOAT_F8E5M2_TOKEN
%token H5T_NATIVE_FLOAT16_TOKEN H5T_NATIVE_FLOAT_TOKEN H5T_NATIVE_DOUBLE_TOKEN H5T_NATIVE_LDOUBLE_TOKEN
%token H5T_COMPLEX_IEEE_F16BE_TOKEN H5T_COMPLEX_IEEE_F16LE_TOKEN
@@ -159,6 +160,8 @@ fp_type : H5T_IEEE_F16BE_TOKEN { $$ = H5Tcopy(H5T_IEEE_F16BE)
| H5T_IEEE_F64LE_TOKEN { $$ = H5Tcopy(H5T_IEEE_F64LE); }
| H5T_FLOAT_BFLOAT16BE_TOKEN { $$ = H5Tcopy(H5T_FLOAT_BFLOAT16BE); }
| H5T_FLOAT_BFLOAT16LE_TOKEN { $$ = H5Tcopy(H5T_FLOAT_BFLOAT16LE); }
+ | H5T_FLOAT_F8E4M3_TOKEN { $$ = H5Tcopy(H5T_FLOAT_F8E4M3); }
+ | H5T_FLOAT_F8E5M2_TOKEN { $$ = H5Tcopy(H5T_FLOAT_F8E5M2); }
| H5T_NATIVE_FLOAT16_TOKEN { $$ = H5Tcopy(H5T_NATIVE_FLOAT16); }
| H5T_NATIVE_FLOAT_TOKEN { $$ = H5Tcopy(H5T_NATIVE_FLOAT); }
| H5T_NATIVE_DOUBLE_TOKEN { $$ = H5Tcopy(H5T_NATIVE_DOUBLE); }
diff --git a/hl/test/test_lite.c b/hl/test/test_lite.c
index 0bf8812ed47..f90755c2739 100644
--- a/hl/test/test_lite.c
+++ b/hl/test/test_lite.c
@@ -1207,6 +1207,20 @@ test_fps(void)
if (H5Tclose(dtype) < 0)
goto out;
+ if ((dtype = H5LTtext_to_dtype("H5T_FLOAT_F8E4M3\n", H5LT_DDL)) < 0)
+ goto out;
+ if (!H5Tequal(dtype, H5T_FLOAT_F8E4M3))
+ goto out;
+ if (H5Tclose(dtype) < 0)
+ goto out;
+
+ if ((dtype = H5LTtext_to_dtype("H5T_FLOAT_F8E5M2\n", H5LT_DDL)) < 0)
+ goto out;
+ if (!H5Tequal(dtype, H5T_FLOAT_F8E5M2))
+ goto out;
+ if (H5Tclose(dtype) < 0)
+ goto out;
+
PASSED();
return 0;
diff --git a/java/src/hdf/hdf5lib/HDF5Constants.java b/java/src/hdf/hdf5lib/HDF5Constants.java
index 014d5fd2e5e..634f928579d 100644
--- a/java/src/hdf/hdf5lib/HDF5Constants.java
+++ b/java/src/hdf/hdf5lib/HDF5Constants.java
@@ -1125,6 +1125,10 @@ public class HDF5Constants {
/** */
public static final long H5T_FLOAT_BFLOAT16LE = H5T_FLOAT_BFLOAT16LE();
/** */
+ public static final long H5T_FLOAT_F8E4M3 = H5T_FLOAT_F8E4M3();
+ /** */
+ public static final long H5T_FLOAT_F8E5M2 = H5T_FLOAT_F8E5M2();
+ /** */
public static final int H5T_INTEGER = H5T_INTEGER();
/** */
public static final long H5T_INTEL_B16 = H5T_INTEL_B16();
@@ -2640,6 +2644,10 @@ public class HDF5Constants {
private static native final long H5T_FLOAT_BFLOAT16LE();
+ private static native final long H5T_FLOAT_F8E4M3();
+
+ private static native final long H5T_FLOAT_F8E5M2();
+
private static native final int H5T_INTEGER();
private static native final long H5T_INTEL_B16();
diff --git a/java/src/jni/h5Constants.c b/java/src/jni/h5Constants.c
index 18ea37df1f9..9ea34d72a45 100644
--- a/java/src/jni/h5Constants.c
+++ b/java/src/jni/h5Constants.c
@@ -2746,6 +2746,16 @@ Java_hdf_hdf5lib_HDF5Constants_H5T_1FLOAT_1BFLOAT16LE(JNIEnv *env, jclass cls)
{
return H5T_FLOAT_BFLOAT16LE;
}
+JNIEXPORT jlong JNICALL
+Java_hdf_hdf5lib_HDF5Constants_H5T_1FLOAT_1F8E4M3(JNIEnv *env, jclass cls)
+{
+ return H5T_FLOAT_F8E4M3;
+}
+JNIEXPORT jlong JNICALL
+Java_hdf_hdf5lib_HDF5Constants_H5T_1FLOAT_1F8E5M2(JNIEnv *env, jclass cls)
+{
+ return H5T_FLOAT_F8E5M2;
+}
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5T_1INTEGER(JNIEnv *env, jclass cls)
{
diff --git a/java/src/jni/h5util.c b/java/src/jni/h5util.c
index 3946f7764e0..053513fb87d 100644
--- a/java/src/jni/h5util.c
+++ b/java/src/jni/h5util.c
@@ -2166,7 +2166,13 @@ h5str_get_little_endian_type(hid_t tid)
}
case H5T_FLOAT: {
- if (size == 2) {
+ if (size == 1) {
+ if (true == H5Tequal(tid, H5T_FLOAT_F8E4M3))
+ p_type = H5Tcopy(H5T_FLOAT_F8E4M3);
+ else if (true == H5Tequal(tid, H5T_FLOAT_F8E5M2))
+ p_type = H5Tcopy(H5T_FLOAT_F8E5M2);
+ }
+ else if (size == 2) {
if (true == H5Tequal(tid, H5T_IEEE_F16LE) || true == H5Tequal(tid, H5T_IEEE_F16BE))
p_type = H5Tcopy(H5T_IEEE_F16LE);
else if (true == H5Tequal(tid, H5T_FLOAT_BFLOAT16LE) ||
@@ -2278,7 +2284,21 @@ h5str_get_big_endian_type(hid_t tid)
}
case H5T_FLOAT: {
- if (size == 2) {
+ if (size == 1) {
+ if (true == H5Tequal(tid, H5T_FLOAT_F8E4M3)) {
+ p_type = H5Tcopy(H5T_FLOAT_F8E4M3);
+
+ /* Though not very useful, set order to BE as expected */
+ H5Tset_order(p_type, H5T_ORDER_BE);
+ }
+ else if (true == H5Tequal(tid, H5T_FLOAT_F8E5M2)) {
+ p_type = H5Tcopy(H5T_FLOAT_F8E5M2);
+
+ /* Though not very useful, set order to BE as expected */
+ H5Tset_order(p_type, H5T_ORDER_BE);
+ }
+ }
+ else if (size == 2) {
if (true == H5Tequal(tid, H5T_IEEE_F16LE) || true == H5Tequal(tid, H5T_IEEE_F16BE))
p_type = H5Tcopy(H5T_IEEE_F16BE);
else if (true == H5Tequal(tid, H5T_FLOAT_BFLOAT16LE) ||
diff --git a/release_docs/CHANGELOG.md b/release_docs/CHANGELOG.md
index a99746e8a99..19cf14a6577 100644
--- a/release_docs/CHANGELOG.md
+++ b/release_docs/CHANGELOG.md
@@ -180,9 +180,22 @@ All other HDF5 library CMake options are prefixed with `HDF5_`
- H5T_FLOAT_BFLOAT16LE / H5T_FLOAT_BFLOAT16BE
- These macros map to IDs of HDF5 datatypes representing a little- or big-endian 16-bit floating-point datatype with 1 sign bit, 8 exponent bits and 7 fraction bits.
+ These macros map to IDs of HDF5 datatypes representing a little- or big-endian 16-bit floating-point datatype with 1 sign bit, 8 exponent bits and 7 fraction bits.
- Note that support for a native bfloat16 datatype has not been added yet. This means that any datatype conversions to/from the new bfloat16 datatypes will be emulated in software rather than potentially using specialized hardware instructions. Until support for a native bfloat16 type is added, an application can avoid datatype conversion performance issues if it is sure that the datatype used for in-memory data buffers matches the above floating-point format (such as the __bf16 type). In this case, the application can specify one of the above macros for both the file datatype when creating a dataset or attribute and the memory datatype when performing I/O on the dataset or attribute.
+ Note that support for a native bfloat16 datatype has not been added yet. This means that any datatype conversions to/from the new bfloat16 datatypes will be emulated in software rather than potentially using specialized hardware instructions. Until support for a native bfloat16 type is added, an application can avoid datatype conversion performance issues if it is sure that the datatype used for in-memory data buffers matches the above floating-point format (such as the __bf16 type). In this case, the application can specify one of the above macros for both the file datatype when creating a dataset or attribute and the memory datatype when performing I/O on the dataset or attribute.
+
+### Added predefined datatypes for FP8 data
+
+ Predefined datatypes have been added for FP8 data in E4M3 and E5M2 formats (https://arxiv.org/abs/2209.05433).
+
+ The following new macros have been added:
+
+ - H5T_FLOAT_F8E4M3
+ - H5T_FLOAT_F8E5M2
+
+ These macros map to IDs of HDF5 datatypes representing an 8-bit floating-point datatype with 1 sign bit and either 4 exponent bits and 3 mantissa bits (E4M3 format) or 5 exponent bits and 2 mantissa bits (E5M2 format).
+
+ Note that support for a native FP8 datatype has not been added yet. This means that any datatype conversions to/from the new FP8 datatypes will be emulated in software rather than potentially using specialized hardware instructions. Until support for a native FP8 type is added, an application can avoid datatype conversion performance issues if it is sure that the datatype used for in-memory data buffers matches one of the above floating-point formats. In this case, the application can specify one of the above macros for both the file datatype when creating a dataset or attribute and the memory datatype when performing I/O on the dataset or attribute.
### Removed hbool_t from public API calls
diff --git a/src/H5T.c b/src/H5T.c
index 6426016f304..3b2e391a53e 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -167,6 +167,34 @@
H5T_INIT_TYPE_BFLOAT16_COMMON(H5T_ORDER_BE) \
}
+/* Define the code templates for standard FP8 E4M3 8-bit floats for the "GUTS" in the H5T_INIT_TYPE macro */
+#define H5T_INIT_TYPE_FLOAT8E4M3_CORE \
+ { \
+ H5T_INIT_TYPE_NUM_COMMON(H5T_ORDER_LE) /* Simply pick LE here */ \
+ dt->shared->u.atomic.u.f.sign = 7; \
+ dt->shared->u.atomic.u.f.epos = 3; \
+ dt->shared->u.atomic.u.f.esize = 4; \
+ dt->shared->u.atomic.u.f.ebias = 0x7; \
+ dt->shared->u.atomic.u.f.mpos = 0; \
+ dt->shared->u.atomic.u.f.msize = 3; \
+ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED; \
+ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO; \
+ }
+
+/* Define the code templates for standard FP8 E5M2 8-bit floats for the "GUTS" in the H5T_INIT_TYPE macro */
+#define H5T_INIT_TYPE_FLOAT8E5M2_CORE \
+ { \
+ H5T_INIT_TYPE_NUM_COMMON(H5T_ORDER_LE) /* Simply pick LE here */ \
+ dt->shared->u.atomic.u.f.sign = 7; \
+ dt->shared->u.atomic.u.f.epos = 2; \
+ dt->shared->u.atomic.u.f.esize = 5; \
+ dt->shared->u.atomic.u.f.ebias = 0xf; \
+ dt->shared->u.atomic.u.f.mpos = 0; \
+ dt->shared->u.atomic.u.f.msize = 2; \
+ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED; \
+ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO; \
+ }
+
/* Define the code templates for standard floats for the "GUTS" in the H5T_INIT_TYPE macro */
#define H5T_INIT_TYPE_FLOAT_COMMON(ENDIANNESS) \
{ \
@@ -459,6 +487,8 @@ hid_t H5T_IEEE_F64LE_g = H5I_INVALID_HID;
hid_t H5T_FLOAT_BFLOAT16BE_g = H5I_INVALID_HID;
hid_t H5T_FLOAT_BFLOAT16LE_g = H5I_INVALID_HID;
+hid_t H5T_FLOAT_F8E4M3_g = H5I_INVALID_HID;
+hid_t H5T_FLOAT_F8E5M2_g = H5I_INVALID_HID;
hid_t H5T_COMPLEX_IEEE_F16BE_g = H5I_INVALID_HID;
hid_t H5T_COMPLEX_IEEE_F16LE_g = H5I_INVALID_HID;
@@ -1125,6 +1155,12 @@ H5T__init_package(void)
/* 2-byte big-endian bfloat16 float type */
H5T_INIT_TYPE(BFLOAT16BE, H5T_FLOAT_BFLOAT16BE_g, COPY, native_double, SET, 2)
+ /* 8-bit FP8 E4M3 float type */
+ H5T_INIT_TYPE(FLOAT8E4M3, H5T_FLOAT_F8E4M3_g, COPY, native_double, SET, 1)
+
+ /* 8-bit FP8 E5M2 float type */
+ H5T_INIT_TYPE(FLOAT8E5M2, H5T_FLOAT_F8E5M2_g, COPY, native_double, SET, 1)
+
/*------------------------------------------------------------
* VAX Types
*------------------------------------------------------------
@@ -2222,6 +2258,8 @@ H5T_top_term_package(void)
H5T_FLOAT_BFLOAT16BE_g = H5I_INVALID_HID;
H5T_FLOAT_BFLOAT16LE_g = H5I_INVALID_HID;
+ H5T_FLOAT_F8E4M3_g = H5I_INVALID_HID;
+ H5T_FLOAT_F8E5M2_g = H5I_INVALID_HID;
H5T_COMPLEX_IEEE_F16BE_g = H5I_INVALID_HID;
H5T_COMPLEX_IEEE_F16LE_g = H5I_INVALID_HID;
diff --git a/src/H5Tmodule.h b/src/H5Tmodule.h
index 619aa331b11..c6e146e127b 100644
--- a/src/H5Tmodule.h
+++ b/src/H5Tmodule.h
@@ -4014,6 +4014,7 @@ filled according to the value of this property. The padding can be:
* H5T_IEEE_F32BE | H5T_IEEE_F32LE |
* H5T_IEEE_F64BE | H5T_IEEE_F64LE |
* H5T_FLOAT_BFLOAT16BE | H5T_FLOAT_BFLOAT16LE |
+ * H5T_FLOAT_F8E4M3 | H5T_FLOAT_F8E5M2 |
* H5T_NATIVE_FLOAT16 | H5T_NATIVE_FLOAT |
* H5T_NATIVE_DOUBLE | H5T_NATIVE_LDOUBLE
*
diff --git a/src/H5Tnative.c b/src/H5Tnative.c
index 357c6b38e4b..bf6a6bbc5d6 100644
--- a/src/H5Tnative.c
+++ b/src/H5Tnative.c
@@ -731,7 +731,39 @@ H5T__get_native_float(const H5T_t *dtype, H5T_direction_t direction, size_t *str
H5_WARN_DUPLICATED_BRANCHES_OFF
if (direction == H5T_DIR_DEFAULT || direction == H5T_DIR_ASCEND) {
- if (size <= 2) {
+ if (size == 1) {
+#ifdef H5_HAVE__FLOAT16
+ /*
+ * When _Float16 support is available, map specific types to
+ * the native _Float16 type and all other types of this size
+ * group without a specific carve-out to the native float type.
+ */
+ H5T_t *f8_e4m3_dt = NULL; /* Datatype for FP8 E4ME */
+ H5T_t *f8_e5m2_dt = NULL; /* Datatype for FP8 E5M2 */
+
+ if (NULL == (f8_e4m3_dt = H5I_object(H5T_FLOAT_F8E4M3)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a data type");
+ if (NULL == (f8_e5m2_dt = H5I_object(H5T_FLOAT_F8E5M2)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a data type");
+
+ if (0 == H5T_cmp(dtype, f8_e4m3_dt, false) || 0 == H5T_cmp(dtype, f8_e5m2_dt, false)) {
+ match = H5T_NATIVE_FLOAT_MATCH_FLOAT16;
+ native_size = sizeof(H5__Float16);
+ }
+ else {
+ match = H5T_NATIVE_FLOAT_MATCH_FLOAT;
+ native_size = sizeof(float);
+ }
+#else
+ /* When _Float16 support is not available, just map all types of
+ * this size group without a specific carve-out to the native
+ * float type.
+ */
+ match = H5T_NATIVE_FLOAT_MATCH_FLOAT;
+ native_size = sizeof(float);
+#endif
+ }
+ else if (size == 2) {
#ifdef H5_HAVE__FLOAT16
/*
* When _Float16 support is available, map _Float16-like types
@@ -795,7 +827,7 @@ H5T__get_native_float(const H5T_t *dtype, H5T_direction_t direction, size_t *str
match = H5T_NATIVE_FLOAT_MATCH_FLOAT;
native_size = sizeof(float);
}
- else {
+ else if (size > 1) {
/*
* When _Float16 support is available, map _Float16-like types
* to the native type and all other types of this size group
@@ -818,6 +850,29 @@ H5T__get_native_float(const H5T_t *dtype, H5T_direction_t direction, size_t *str
native_size = sizeof(float);
}
}
+ else {
+ /*
+ * When _Float16 support is available, map specific types to
+ * the native _Float16 type and all other types of this size
+ * group without a specific carve-out to the native float type.
+ */
+ H5T_t *f8_e4m3_dt = NULL; /* Datatype for FP8 E4ME */
+ H5T_t *f8_e5m2_dt = NULL; /* Datatype for FP8 E5M2 */
+
+ if (NULL == (f8_e4m3_dt = H5I_object(H5T_FLOAT_F8E4M3)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a data type");
+ if (NULL == (f8_e5m2_dt = H5I_object(H5T_FLOAT_F8E5M2)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a data type");
+
+ if (0 == H5T_cmp(dtype, f8_e4m3_dt, false) || 0 == H5T_cmp(dtype, f8_e5m2_dt, false)) {
+ match = H5T_NATIVE_FLOAT_MATCH_FLOAT16;
+ native_size = sizeof(H5__Float16);
+ }
+ else {
+ match = H5T_NATIVE_FLOAT_MATCH_FLOAT;
+ native_size = sizeof(float);
+ }
+ }
#else
/* When _Float16 support is not available, just map all types of
* this size group without a specific carve-out to the native
diff --git a/src/H5Tpublic.h b/src/H5Tpublic.h
index 38813229e92..d14ac039b0d 100644
--- a/src/H5Tpublic.h
+++ b/src/H5Tpublic.h
@@ -293,8 +293,20 @@ H5_DLLVAR hid_t H5T_IEEE_F64LE_g;
* 16-bit little-endian bfloat16 floating-point numbers
*/
#define H5T_FLOAT_BFLOAT16LE (H5OPEN H5T_FLOAT_BFLOAT16LE_g)
+/**
+ * \ingroup PDTALTFLOAT
+ * 8-bit FP8 E4M3 (4 exponent bits, 3 mantissa bits) floating-point numbers
+ */
+#define H5T_FLOAT_F8E4M3 (H5OPEN H5T_FLOAT_F8E4M3_g)
+/**
+ * \ingroup PDTALTFLOAT
+ * 8-bit FP8 E5M2 (5 exponent bits, 2 mantissa bits) floating-point numbers
+ */
+#define H5T_FLOAT_F8E5M2 (H5OPEN H5T_FLOAT_F8E5M2_g)
H5_DLLVAR hid_t H5T_FLOAT_BFLOAT16BE_g;
H5_DLLVAR hid_t H5T_FLOAT_BFLOAT16LE_g;
+H5_DLLVAR hid_t H5T_FLOAT_F8E4M3_g;
+H5_DLLVAR hid_t H5T_FLOAT_F8E5M2_g;
/*
* Complex number types made up of IEEE floating point types
diff --git a/src/H5trace.c b/src/H5trace.c
index 6b9a18cb305..965dc9ca7ee 100644
--- a/src/H5trace.c
+++ b/src/H5trace.c
@@ -1691,6 +1691,10 @@ H5_trace_args(H5RS_str_t *rs, const char *type, va_list ap)
H5RS_acat(rs, "H5T_FLOAT_BFLOAT16BE");
else if (obj == H5T_FLOAT_BFLOAT16LE_g)
H5RS_acat(rs, "H5T_FLOAT_BFLOAT16LE");
+ else if (obj == H5T_FLOAT_F8E4M3_g)
+ H5RS_acat(rs, "H5T_FLOAT_F8E4M3");
+ else if (obj == H5T_FLOAT_F8E5M2_g)
+ H5RS_acat(rs, "H5T_FLOAT_F8E5M2");
else if (obj == H5T_COMPLEX_IEEE_F16BE_g)
H5RS_acat(rs, "H5T_COMPLEX_IEEE_F16BE");
else if (obj == H5T_COMPLEX_IEEE_F16LE_g)
diff --git a/test/API/H5_api_dataset_test.c b/test/API/H5_api_dataset_test.c
index 6d9066d6e63..3a63038686c 100644
--- a/test/API/H5_api_dataset_test.c
+++ b/test/API/H5_api_dataset_test.c
@@ -1218,8 +1218,8 @@ test_create_dataset_predefined_types(void H5_ATTR_UNUSED *params)
H5T_STD_U64LE, H5T_STD_U64BE, H5T_STD_I64LE, H5T_STD_I64BE,
H5T_IEEE_F16LE, H5T_IEEE_F16BE, H5T_IEEE_F32LE, H5T_IEEE_F32BE,
H5T_IEEE_F64LE, H5T_IEEE_F64BE, H5T_FLOAT_BFLOAT16LE, H5T_FLOAT_BFLOAT16BE,
- H5T_COMPLEX_IEEE_F16BE, H5T_COMPLEX_IEEE_F16LE, H5T_COMPLEX_IEEE_F32BE, H5T_COMPLEX_IEEE_F32LE,
- H5T_COMPLEX_IEEE_F64BE, H5T_COMPLEX_IEEE_F64LE};
+ H5T_FLOAT_F8E4M3, H5T_FLOAT_F8E5M2, H5T_COMPLEX_IEEE_F16BE, H5T_COMPLEX_IEEE_F16LE,
+ H5T_COMPLEX_IEEE_F32BE, H5T_COMPLEX_IEEE_F32LE, H5T_COMPLEX_IEEE_F64BE, H5T_COMPLEX_IEEE_F64LE};
TESTING("dataset creation with predefined datatypes");
diff --git a/test/API/H5_api_test_util.c b/test/API/H5_api_test_util.c
index 49eaa39be5c..3f968b2bb04 100644
--- a/test/API/H5_api_test_util.c
+++ b/test/API/H5_api_test_util.c
@@ -44,7 +44,7 @@
/* The number of predefined floating point types in HDF5
*/
-#define NUM_PREDEFINED_FLOAT_TYPES 8
+#define NUM_PREDEFINED_FLOAT_TYPES 10
/* The number of predefined complex number types in HDF5
*/
@@ -327,6 +327,12 @@ generate_random_datatype_float(H5T_class_t H5_ATTR_UNUSED parent_class, bool H5_
case 7:
type_to_copy = H5T_FLOAT_BFLOAT16LE;
break;
+ case 8:
+ type_to_copy = H5T_FLOAT_F8E4M3;
+ break;
+ case 9:
+ type_to_copy = H5T_FLOAT_F8E5M2;
+ break;
default:
printf(" invalid value for floating point type; should not happen\n");
diff --git a/test/dt_arith.c b/test/dt_arith.c
index 10a85e39a16..535e3e939ac 100644
--- a/test/dt_arith.c
+++ b/test/dt_arith.c
@@ -2220,6 +2220,344 @@ test_bfloat16(void)
return 1;
}
+/*-------------------------------------------------------------------------
+ * Function: test_fp8
+ *
+ * Purpose: Tests special values for FP8 datatypes
+ *
+ * Return: Success: 0
+ * Failure: number of errors
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+test_fp8(void)
+{
+ const unsigned char *buf_ptr;
+ H5T_order_t native_type_order;
+ uint8_t fp8_val;
+ uint8_t fp8_convval;
+ size_t float_spos;
+ size_t float_mpos;
+ size_t float_epos;
+ size_t float_msize;
+ size_t float_esize;
+ hid_t src_fp8_type;
+ float val_buf;
+
+ TESTING("FP8 datatype special values");
+
+ /* Until native support for FP8 type is added, use uint8_t to
+ * represent initial value, then check properties after using
+ * H5T to convert to float.
+ */
+ buf_ptr = (const unsigned char *)&val_buf;
+
+ if ((native_type_order = H5Tget_order(H5T_NATIVE_FLOAT)) < 0) {
+ H5_FAILED();
+ printf("Can't check endian-ness of native float type\n");
+ goto error;
+ }
+
+ /* Just test on little- or big-endian systems */
+ if (native_type_order != H5T_ORDER_LE && native_type_order != H5T_ORDER_BE) {
+ SKIPPED();
+ return 0;
+ }
+
+ if (H5Tget_fields(H5T_NATIVE_FLOAT, &float_spos, &float_epos, &float_esize, &float_mpos, &float_msize) <
+ 0) {
+ H5_FAILED();
+ printf("Can't get floating-point bit field information for native float type\n");
+ goto error;
+ }
+
+ /*
+ * Check E4M3 special values
+ */
+ src_fp8_type = H5T_FLOAT_F8E4M3;
+
+ /* FP8 E4M3 doesn't have infinities, but the library converts some
+ * of the larger values into infinities due to trying to interpret
+ * the values according to the IEEE standard. So, just check NaN
+ * values here. For NaN values, don't bother checking the value
+ * after converting back. The library sets all bits in the significand
+ * to 1 when a NaN is encountered, so the values won't match. Note
+ * that at least on x86 and ARM CPUs this should convert the NaNs
+ * into quiet NaNs. However, this may convert the NaNs to signaling
+ * NaNs on some CPUs which could be problematic if the buffer is
+ * used in almost any fashion. The my_isnan() function might attempt
+ * to print the value into a buffer to compare against NaN strings,
+ * which could cause a floating-point exception for some values. So
+ * far, this hasn't been an issue in practice, but may need some
+ * exception handling here if it becomes an issue.
+ */
+
+ fp8_val = 0x7f; /* One of the two NaN values */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E4M3 value to float\n");
+ goto error;
+ }
+
+ if (1 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E4M3 NaN value was an infinity value after conversion\n");
+ goto error;
+ }
+
+ if (0 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E4M3 NaN value wasn't a NaN value after conversion\n");
+ goto error;
+ }
+
+ fp8_val = 0xff; /* The other NaN value */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E4M3 value to float\n");
+ goto error;
+ }
+
+ if (1 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E4M3 NaN value was an infinity value after conversion\n");
+ goto error;
+ }
+
+ if (0 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E4M3 NaN value wasn't a NaN value after conversion\n");
+ goto error;
+ }
+
+ /*
+ * Check E5M2 special values
+ */
+ src_fp8_type = H5T_FLOAT_F8E5M2;
+
+ fp8_val = 0x7c; /* +Inf */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E5M2 value to float\n");
+ goto error;
+ }
+
+ if (0 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E5M2 positive infinity value wasn't infinity after conversion\n");
+ goto error;
+ }
+
+ if (1 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E5M2 positive infinity value matched NaN\n");
+ goto error;
+ }
+
+ /* Convert value back and check */
+ if (H5Tconvert(H5T_NATIVE_FLOAT, src_fp8_type, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert float value to FP8 E5M2 value\n");
+ goto error;
+ }
+
+ memcpy(&fp8_convval, &val_buf, 1);
+ if (0 != memcmp(&fp8_convval, &fp8_val, 1)) {
+ H5_FAILED();
+ printf("FP8 E5M2 value wasn't preserved between conversions\n");
+ goto error;
+ }
+
+ fp8_val = 0xfc; /* -Inf */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E5M2 value to float\n");
+ goto error;
+ }
+
+ if (0 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E5M2 negative infinity value wasn't infinity after conversion\n");
+ goto error;
+ }
+
+ if (1 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E5M2 negative infinity value matched NaN\n");
+ goto error;
+ }
+
+ /* Convert value back and check */
+ if (H5Tconvert(H5T_NATIVE_FLOAT, src_fp8_type, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert float value to FP8 E5M2 value\n");
+ goto error;
+ }
+
+ memcpy(&fp8_convval, &val_buf, 1);
+ if (0 != memcmp(&fp8_convval, &fp8_val, 1)) {
+ H5_FAILED();
+ printf("FP8 E5M2 value wasn't preserved between conversions\n");
+ goto error;
+ }
+
+ /*
+ * For NaN values, don't bother checking the value after converting
+ * back. The library sets all bits in the significand to 1 when a
+ * NaN is encountered, so the values won't match. Note that at least
+ * on x86 and ARM CPUs this should convert the NaNs into quiet NaNs.
+ * However, this may convert the NaNs to signaling NaNs on some CPUs
+ * which could be problematic if the buffer is used in almost any
+ * fashion. The my_isnan() function might attempt to print the value
+ * into a buffer to compare against NaN strings, which could cause
+ * a floating-point exception for some values. So far, this hasn't
+ * been an issue in practice, but may need some exception handling
+ * here if it becomes an issue.
+ */
+
+ fp8_val = 0x7d; /* One of the three positive NaN values */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E5M2 value to float\n");
+ goto error;
+ }
+
+ if (1 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value was an infinity value after conversion\n");
+ goto error;
+ }
+
+ if (0 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value wasn't a NaN value after conversion\n");
+ goto error;
+ }
+
+ fp8_val = 0x7e; /* Another of the three positive NaN values */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E5M2 value to float\n");
+ goto error;
+ }
+
+ if (1 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value was an infinity value after conversion\n");
+ goto error;
+ }
+
+ if (0 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value wasn't a NaN value after conversion\n");
+ goto error;
+ }
+
+ fp8_val = 0x7f; /* Last of the three positive NaN values */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E5M2 value to float\n");
+ goto error;
+ }
+
+ if (1 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value was an infinity value after conversion\n");
+ goto error;
+ }
+
+ if (0 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value wasn't a NaN value after conversion\n");
+ goto error;
+ }
+
+ fp8_val = 0xfd; /* One of the three negative NaN values */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E5M2 value to float\n");
+ goto error;
+ }
+
+ if (1 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value was an infinity value after conversion\n");
+ goto error;
+ }
+
+ if (0 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value wasn't a NaN value after conversion\n");
+ goto error;
+ }
+
+ fp8_val = 0xfe; /* Another of the three negative NaN values */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E5M2 value to float\n");
+ goto error;
+ }
+
+ if (1 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value was an infinity value after conversion\n");
+ goto error;
+ }
+
+ if (0 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value wasn't a NaN value after conversion\n");
+ goto error;
+ }
+
+ fp8_val = 0xff; /* Last of the three negative NaN values */
+ memcpy(&val_buf, &fp8_val, 1);
+ if (H5Tconvert(src_fp8_type, H5T_NATIVE_FLOAT, 1, &val_buf, NULL, H5P_DEFAULT) < 0) {
+ H5_FAILED();
+ printf("Couldn't convert FP8 E5M2 value to float\n");
+ goto error;
+ }
+
+ if (1 == my_isinf((int)native_type_order, buf_ptr, sizeof(float), float_mpos, float_msize, float_epos,
+ float_esize)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value was an infinity value after conversion\n");
+ goto error;
+ }
+
+ if (0 == my_isnan(FLT_FLOAT, &val_buf)) {
+ H5_FAILED();
+ printf("FP8 E5M2 NaN value wasn't a NaN value after conversion\n");
+ goto error;
+ }
+
+ PASSED();
+
+ return 0;
+
+error:
+ return 1;
+}
+
/*-------------------------------------------------------------------------
* Function: test_conv_int_1
*
@@ -10177,6 +10515,9 @@ main(void)
/* Test bfloat16 special values */
nerrors += (unsigned long)test_bfloat16();
+ /* Test fp8 special values */
+ nerrors += (unsigned long)test_fp8();
+
/* Test degenerate cases */
nerrors += (unsigned long)run_fp_tests("noop");
diff --git a/test/dtypes.c b/test/dtypes.c
index 4b7468c6681..7d83eb97242 100644
--- a/test/dtypes.c
+++ b/test/dtypes.c
@@ -74,9 +74,10 @@
} \
} while (0)
-static const char *FILENAME[] = {"dtypes0", "dtypes1", "dtypes2", "dtypes3", "dtypes4", "dtypes5",
- "dtypes6", "dtypes7", "dtypes8", "dtypes9", "dtypes10", "dtypes11",
- "dtypes12", "dtypes13", "dtypes14", "dtypes15", "dtypes16", NULL};
+static const char *FILENAME[] = {"dtypes0", "dtypes1", "dtypes2", "dtypes3", "dtypes4",
+ "dtypes5", "dtypes6", "dtypes7", "dtypes8", "dtypes9",
+ "dtypes10", "dtypes11", "dtypes12", "dtypes13", "dtypes14",
+ "dtypes15", "dtypes16", "dtypes17", NULL};
#define TESTFILE "bad_compound.h5"
@@ -7166,6 +7167,426 @@ test_bfloat16(void)
return 1;
}
+/*-------------------------------------------------------------------------
+ * Function: test_fp8
+ *
+ * Purpose: Tests the FP8 datatypes.
+ *
+ * Return: Success: 0
+ * Failure: number of errors
+ *-------------------------------------------------------------------------
+ */
+static int
+test_fp8(void)
+{
+ H5T_class_t type_class;
+ H5T_order_t type_order;
+ H5T_norm_t type_norm;
+ H5T_pad_t lsb_pad;
+ H5T_pad_t msb_pad;
+ H5T_pad_t inpad;
+ hsize_t dims[1];
+ size_t type_size;
+ size_t type_prec;
+ size_t sign_pos;
+ size_t expo_pos;
+ size_t mant_pos;
+ size_t expo_size;
+ size_t mant_size;
+ size_t expo_bias;
+ hid_t fid = H5I_INVALID_HID;
+ hid_t space_id = H5I_INVALID_HID;
+ hid_t dset_id = H5I_INVALID_HID;
+ hid_t dcpl_id = H5I_INVALID_HID;
+ char filename[256] = {0};
+ int type_offset;
+
+ TESTING("FP8 datatypes");
+
+ /* Check characteristics of the predefined types */
+
+ if ((type_class = H5Tget_class(H5T_FLOAT_F8E4M3)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype class for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (H5T_FLOAT != type_class) {
+ H5_FAILED();
+ printf("Datatype class for H5T_FLOAT_F8E4M3 wasn't H5T_FLOAT\n");
+ goto error;
+ }
+
+ if ((type_class = H5Tget_class(H5T_FLOAT_F8E5M2)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype class for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (H5T_FLOAT != type_class) {
+ H5_FAILED();
+ printf("Datatype class for H5T_FLOAT_F8E5M2 wasn't H5T_FLOAT\n");
+ goto error;
+ }
+
+ if ((type_size = H5Tget_size(H5T_FLOAT_F8E4M3)) == 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype size for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (type_size != 1) {
+ H5_FAILED();
+ printf("Datatype size for H5T_FLOAT_F8E4M3 was incorrect (expected 1, got %zu)\n", type_size);
+ goto error;
+ }
+
+ if ((type_size = H5Tget_size(H5T_FLOAT_F8E5M2)) == 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype size for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (type_size != 1) {
+ H5_FAILED();
+ printf("Datatype size for H5T_FLOAT_F8E5M2 was incorrect (expected 1, got %zu)\n", type_size);
+ goto error;
+ }
+
+ if ((type_order = H5Tget_order(H5T_FLOAT_F8E4M3)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype order for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (type_order != H5T_ORDER_LE) {
+ H5_FAILED();
+ printf("Datatype order for H5T_FLOAT_F8E4M3 wasn't H5T_ORDER_LE\n");
+ goto error;
+ }
+
+ if ((type_order = H5Tget_order(H5T_FLOAT_F8E5M2)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype order for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (type_order != H5T_ORDER_LE) {
+ H5_FAILED();
+ printf("Datatype order for H5T_FLOAT_F8E5M2 wasn't H5T_ORDER_LE\n");
+ goto error;
+ }
+
+ if ((type_prec = H5Tget_precision(H5T_FLOAT_F8E4M3)) == 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype precision for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (type_prec != 8) {
+ H5_FAILED();
+ printf("Datatype precision for H5T_FLOAT_F8E4M3 was incorrect (expected 8, got %zu)\n", type_prec);
+ goto error;
+ }
+
+ if ((type_prec = H5Tget_precision(H5T_FLOAT_F8E5M2)) == 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype precision for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (type_prec != 8) {
+ H5_FAILED();
+ printf("Datatype precision for H5T_FLOAT_F8E5M2 was incorrect (expected 8, got %zu)\n", type_prec);
+ goto error;
+ }
+
+ if ((type_offset = H5Tget_offset(H5T_FLOAT_F8E4M3)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype offset for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (type_offset != 0) {
+ H5_FAILED();
+ printf("Datatype offset for H5T_FLOAT_F8E4M3 was incorrect (expected 0, got %d)\n", type_offset);
+ goto error;
+ }
+
+ if ((type_offset = H5Tget_offset(H5T_FLOAT_F8E5M2)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype offset for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (type_offset != 0) {
+ H5_FAILED();
+ printf("Datatype offset for H5T_FLOAT_F8E5M2 was incorrect (expected 0, got %d)\n", type_offset);
+ goto error;
+ }
+
+ if (H5Tget_pad(H5T_FLOAT_F8E4M3, &lsb_pad, &msb_pad) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype padding type for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (lsb_pad != H5T_PAD_ZERO || msb_pad != H5T_PAD_ZERO) {
+ H5_FAILED();
+ printf("Datatype padding type for H5T_FLOAT_F8E4M3 was incorrect (expected H5T_PAD_ZERO, got lsb pad "
+ "type %d, msb pad type %d)\n",
+ lsb_pad, msb_pad);
+ goto error;
+ }
+
+ if (H5Tget_pad(H5T_FLOAT_F8E5M2, &lsb_pad, &msb_pad) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype padding type for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (lsb_pad != H5T_PAD_ZERO || msb_pad != H5T_PAD_ZERO) {
+ H5_FAILED();
+ printf("Datatype padding type for H5T_FLOAT_F8E5M2 was incorrect (expected H5T_PAD_ZERO, got lsb pad "
+ "type %d, msb pad type %d)\n",
+ lsb_pad, msb_pad);
+ goto error;
+ }
+
+ if (H5Tget_fields(H5T_FLOAT_F8E4M3, &sign_pos, &expo_pos, &expo_size, &mant_pos, &mant_size) < 0) {
+ H5_FAILED();
+ printf("Couldn't get floating-point bit field information for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (sign_pos != 7 || expo_pos != 3 || mant_pos != 0 || expo_size != 4 || mant_size != 3) {
+ H5_FAILED();
+ printf("H5T_FLOAT_F8E4M3 didn't match FP8 E4M3 specification "
+ "(expected spos=7, epos=3, esize=4, mpos=0, msize=3, "
+ "got spos=%zu, epos=%zu, esize=%zu, mpos=%zu, msize=%zu)\n",
+ sign_pos, expo_pos, expo_size, mant_pos, mant_size);
+ goto error;
+ }
+
+ if (H5Tget_fields(H5T_FLOAT_F8E5M2, &sign_pos, &expo_pos, &expo_size, &mant_pos, &mant_size) < 0) {
+ H5_FAILED();
+ printf("Couldn't get floating-point bit field information for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (sign_pos != 7 || expo_pos != 2 || mant_pos != 0 || expo_size != 5 || mant_size != 2) {
+ H5_FAILED();
+ printf("H5T_FLOAT_F8E5M2 didn't match FP8 E5M2 specification "
+ "(expected spos=7, epos=2, esize=5, mpos=0, msize=2, "
+ "got spos=%zu, epos=%zu, esize=%zu, mpos=%zu, msize=%zu)\n",
+ sign_pos, expo_pos, expo_size, mant_pos, mant_size);
+ goto error;
+ }
+
+ if ((expo_bias = H5Tget_ebias(H5T_FLOAT_F8E4M3)) == 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype exponent bias for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (expo_bias != 7) {
+ H5_FAILED();
+ printf("Datatype exponent bias for H5T_FLOAT_F8E4M3 was incorrect (expected 7, got %zu)\n",
+ expo_bias);
+ goto error;
+ }
+
+ if ((expo_bias = H5Tget_ebias(H5T_FLOAT_F8E5M2)) == 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype exponent bias for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (expo_bias != 15) {
+ H5_FAILED();
+ printf("Datatype exponent bias for H5T_FLOAT_F8E5M2 was incorrect (expected 15, got %zu)\n",
+ expo_bias);
+ goto error;
+ }
+
+ if ((type_norm = H5Tget_norm(H5T_FLOAT_F8E4M3)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype mantissa normalization type for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (type_norm != H5T_NORM_IMPLIED) {
+ H5_FAILED();
+ printf("Datatype mantissa normalization type for H5T_FLOAT_F8E4M3 wasn't H5T_NORM_IMPLIED\n");
+ goto error;
+ }
+
+ if ((type_norm = H5Tget_norm(H5T_FLOAT_F8E5M2)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype mantissa normalization type for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (type_norm != H5T_NORM_IMPLIED) {
+ H5_FAILED();
+ printf("Datatype mantissa normalization type for H5T_FLOAT_F8E5M2 wasn't H5T_NORM_IMPLIED\n");
+ goto error;
+ }
+
+ if ((inpad = H5Tget_inpad(H5T_FLOAT_F8E4M3)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype unused bits padding type for H5T_FLOAT_F8E4M3\n");
+ goto error;
+ }
+
+ if (inpad != H5T_PAD_ZERO) {
+ H5_FAILED();
+ printf("Datatype unused bits padding type for H5T_FLOAT_F8E4M3 was incorrect (expected H5T_PAD_ZERO, "
+ "got pad type %d)\n",
+ inpad);
+ goto error;
+ }
+
+ if ((inpad = H5Tget_inpad(H5T_FLOAT_F8E5M2)) < 0) {
+ H5_FAILED();
+ printf("Couldn't get datatype unused bits padding type for H5T_FLOAT_F8E5M2\n");
+ goto error;
+ }
+
+ if (inpad != H5T_PAD_ZERO) {
+ H5_FAILED();
+ printf("Datatype unused bits padding type for H5T_FLOAT_F8E5M2 was incorrect (expected H5T_PAD_ZERO, "
+ "got pad type %d)\n",
+ inpad);
+ goto error;
+ }
+
+ /*
+ * Ensure that some random conversions on the FP8 datatypes
+ * are currently covered by general software routines rather
+ * than compiler conversions.
+ */
+
+ if (H5Tcompiler_conv(H5T_FLOAT_F8E4M3, H5T_IEEE_F16LE) != false) {
+ H5_FAILED();
+ printf("Conversion path for H5T_FLOAT_F8E4M3 -> H5T_IEEE_F16LE was not a software conversion\n");
+ goto error;
+ }
+
+ if (H5Tcompiler_conv(H5T_FLOAT_F8E4M3, H5T_NATIVE_INT) != false) {
+ H5_FAILED();
+ printf("Conversion path for H5T_FLOAT_F8E4M3 -> H5T_NATIVE_INT was not a software conversion\n");
+ goto error;
+ }
+
+ if (H5Tcompiler_conv(H5T_FLOAT_F8E5M2, H5T_IEEE_F16LE) != false) {
+ H5_FAILED();
+ printf("Conversion path for H5T_FLOAT_F8E5M2 -> H5T_IEEE_F16LE was not a software conversion\n");
+ goto error;
+ }
+
+ if (H5Tcompiler_conv(H5T_FLOAT_F8E5M2, H5T_NATIVE_INT) != false) {
+ H5_FAILED();
+ printf("Conversion path for H5T_FLOAT_F8E5M2 -> H5T_NATIVE_INT was not a software conversion\n");
+ goto error;
+ }
+
+ /*
+ * Create datasets with the FP8 datatypes and check the dataset raw data storage size
+ */
+ h5_fixname(FILENAME[17], H5P_DEFAULT, filename, sizeof filename);
+
+ if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
+ H5_FAILED();
+ AT();
+ printf("Can't create file!\n");
+ goto error;
+ }
+
+ dims[0] = 10000;
+ if ((space_id = H5Screate_simple(1, dims, NULL)) < 0) {
+ H5_FAILED();
+ AT();
+ printf("Can't create dataspace\n");
+ goto error;
+ }
+
+ if ((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0) {
+ H5_FAILED();
+ AT();
+ printf("Can't create DCPL\n");
+ goto error;
+ }
+
+ if (H5Pset_alloc_time(dcpl_id, H5D_ALLOC_TIME_EARLY) < 0) {
+ H5_FAILED();
+ AT();
+ printf("Can't set alloc time\n");
+ goto error;
+ }
+
+ if ((dset_id = H5Dcreate2(fid, "DatasetE4M3", H5T_FLOAT_F8E4M3, space_id, H5P_DEFAULT, dcpl_id,
+ H5P_DEFAULT)) < 0) {
+ H5_FAILED();
+ AT();
+ printf("Can't create dataset\n");
+ goto error;
+ }
+
+ if (H5Dget_storage_size(dset_id) != dims[0] /* 1 byte datatype */) {
+ H5_FAILED();
+ AT();
+ printf("Incorrect dataset raw data storage size allocated in file\n");
+ goto error;
+ }
+
+ if (H5Dclose(dset_id) < 0)
+ TEST_ERROR;
+
+ if ((dset_id = H5Dcreate2(fid, "DatasetE5M2", H5T_FLOAT_F8E5M2, space_id, H5P_DEFAULT, dcpl_id,
+ H5P_DEFAULT)) < 0) {
+ H5_FAILED();
+ AT();
+ printf("Can't create dataset\n");
+ goto error;
+ }
+
+ if (H5Dget_storage_size(dset_id) != dims[0] /* 1 byte datatype */) {
+ H5_FAILED();
+ AT();
+ printf("Incorrect dataset raw data storage size allocated in file\n");
+ goto error;
+ }
+
+ if (H5Pclose(dcpl_id) < 0)
+ TEST_ERROR;
+ if (H5Sclose(space_id) < 0)
+ TEST_ERROR;
+ if (H5Dclose(dset_id) < 0)
+ TEST_ERROR;
+ if (H5Fclose(fid) < 0)
+ TEST_ERROR;
+ if (H5Fdelete(filename, H5P_DEFAULT) < 0)
+ TEST_ERROR;
+
+ PASSED();
+
+ return 0;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Pclose(dcpl_id);
+ H5Sclose(space_id);
+ H5Dclose(dset_id);
+ H5Fclose(fid);
+ H5Fdelete(filename, H5P_DEFAULT);
+ }
+ H5E_END_TRY
+
+ return 1;
+}
+
/*-------------------------------------------------------------------------
* Function: test_complex_type
*
@@ -13362,6 +13783,7 @@ main(void)
nerrors += test__Float16();
nerrors += test_bfloat16();
+ nerrors += test_fp8();
nerrors += test_complex_type();
#ifdef H5_HAVE_COMPLEX_NUMBERS
nerrors += test_complex_type_conv_funcs();
diff --git a/test/ntypes.c b/test/ntypes.c
index bfe6c307e9f..c4d99542d8e 100644
--- a/test/ntypes.c
+++ b/test/ntypes.c
@@ -3213,6 +3213,89 @@ test_bfloat16(void)
return -1;
}
+static herr_t
+test_fp8(void)
+{
+ hid_t native_type = H5I_INVALID_HID;
+
+ TESTING("fp8 datatypes");
+
+ /*
+ * Just ensure that the fp8 types are currently promoted
+ * to either float16 or float, depending on whether float16
+ * support is enabled. Until native support is added for a
+ * fp8 type, conversion from fp8 to float16 should be fine.
+ */
+ if ((native_type = H5Tget_native_type(H5T_FLOAT_F8E4M3, H5T_DIR_ASCEND)) < 0)
+ TEST_ERROR;
+
+#ifdef H5_HAVE__FLOAT16
+ if (true != H5Tequal(native_type, H5T_NATIVE_FLOAT16))
+ TEST_ERROR;
+#else
+ if (true != H5Tequal(native_type, H5T_NATIVE_FLOAT))
+ TEST_ERROR;
+#endif
+
+ if (H5Tclose(native_type) < 0)
+ TEST_ERROR;
+
+ if ((native_type = H5Tget_native_type(H5T_FLOAT_F8E4M3, H5T_DIR_DESCEND)) < 0)
+ TEST_ERROR;
+
+#ifdef H5_HAVE__FLOAT16
+ if (true != H5Tequal(native_type, H5T_NATIVE_FLOAT16))
+ TEST_ERROR;
+#else
+ if (true != H5Tequal(native_type, H5T_NATIVE_FLOAT))
+ TEST_ERROR;
+#endif
+
+ if (H5Tclose(native_type) < 0)
+ TEST_ERROR;
+
+ if ((native_type = H5Tget_native_type(H5T_FLOAT_F8E5M2, H5T_DIR_ASCEND)) < 0)
+ TEST_ERROR;
+
+#ifdef H5_HAVE__FLOAT16
+ if (true != H5Tequal(native_type, H5T_NATIVE_FLOAT16))
+ TEST_ERROR;
+#else
+ if (true != H5Tequal(native_type, H5T_NATIVE_FLOAT))
+ TEST_ERROR;
+#endif
+
+ if (H5Tclose(native_type) < 0)
+ TEST_ERROR;
+
+ if ((native_type = H5Tget_native_type(H5T_FLOAT_F8E5M2, H5T_DIR_DESCEND)) < 0)
+ TEST_ERROR;
+
+#ifdef H5_HAVE__FLOAT16
+ if (true != H5Tequal(native_type, H5T_NATIVE_FLOAT16))
+ TEST_ERROR;
+#else
+ if (true != H5Tequal(native_type, H5T_NATIVE_FLOAT))
+ TEST_ERROR;
+#endif
+
+ if (H5Tclose(native_type) < 0)
+ TEST_ERROR;
+
+ PASSED();
+
+ return 0;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Tclose(native_type);
+ }
+ H5E_END_TRY
+
+ return -1;
+}
+
#ifdef H5_HAVE_COMPLEX_NUMBERS
static herr_t
test_complex(hid_t file)
@@ -3392,6 +3475,7 @@ main(void)
#endif
nerrors += test_bfloat16() < 0 ? 1 : 0;
+ nerrors += test_fp8() < 0 ? 1 : 0;
#ifdef H5_HAVE_COMPLEX_NUMBERS
nerrors += test_complex(file) < 0 ? 1 : 0;
diff --git a/tools/lib/h5diff_util.c b/tools/lib/h5diff_util.c
index a71e662dcd1..38b22ca3454 100644
--- a/tools/lib/h5diff_util.c
+++ b/tools/lib/h5diff_util.c
@@ -136,6 +136,10 @@ print_type(hid_t type)
parallel_print("H5T_FLOAT_BFLOAT16BE");
else if (H5Tequal(type, H5T_FLOAT_BFLOAT16LE))
parallel_print("H5T_FLOAT_BFLOAT16LE");
+ else if (H5Tequal(type, H5T_FLOAT_F8E4M3))
+ parallel_print("H5T_FLOAT_F8E4M3");
+ else if (H5Tequal(type, H5T_FLOAT_F8E5M2))
+ parallel_print("H5T_FLOAT_F8E5M2");
#ifdef H5_HAVE__FLOAT16
else if (H5Tequal(type, H5T_NATIVE_FLOAT16))
parallel_print("H5T_NATIVE_FLOAT16");
diff --git a/tools/lib/h5tools_dump.c b/tools/lib/h5tools_dump.c
index 0871b8e3bf4..ad7495a9a37 100644
--- a/tools/lib/h5tools_dump.c
+++ b/tools/lib/h5tools_dump.c
@@ -2212,6 +2212,10 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
h5tools_str_append(buffer, "H5T_FLOAT_BFLOAT16BE");
else if (H5Tequal(type, H5T_FLOAT_BFLOAT16LE) == true)
h5tools_str_append(buffer, "H5T_FLOAT_BFLOAT16LE");
+ else if (H5Tequal(type, H5T_FLOAT_F8E4M3) == true)
+ h5tools_str_append(buffer, "H5T_FLOAT_F8E4M3");
+ else if (H5Tequal(type, H5T_FLOAT_F8E5M2) == true)
+ h5tools_str_append(buffer, "H5T_FLOAT_F8E5M2");
else if (H5Tequal(type, H5T_VAX_F32) == true)
h5tools_str_append(buffer, "H5T_VAX_F32");
else if (H5Tequal(type, H5T_VAX_F64) == true)
diff --git a/tools/lib/h5tools_type.c b/tools/lib/h5tools_type.c
index e8db7e9b0d1..32a90cd3148 100644
--- a/tools/lib/h5tools_type.c
+++ b/tools/lib/h5tools_type.c
@@ -55,7 +55,13 @@ h5tools_get_little_endian_type(hid_t tid)
break;
case H5T_FLOAT:
- if (size == 2) {
+ if (size == 1) {
+ if (true == H5Tequal(tid, H5T_FLOAT_F8E4M3))
+ p_type = H5Tcopy(H5T_FLOAT_F8E4M3);
+ else if (true == H5Tequal(tid, H5T_FLOAT_F8E5M2))
+ p_type = H5Tcopy(H5T_FLOAT_F8E5M2);
+ }
+ else if (size == 2) {
if (true == H5Tequal(tid, H5T_IEEE_F16LE) || true == H5Tequal(tid, H5T_IEEE_F16BE))
p_type = H5Tcopy(H5T_IEEE_F16LE);
else if (true == H5Tequal(tid, H5T_FLOAT_BFLOAT16LE) ||
@@ -150,7 +156,21 @@ h5tools_get_big_endian_type(hid_t tid)
break;
case H5T_FLOAT:
- if (size == 2) {
+ if (size == 1) {
+ if (true == H5Tequal(tid, H5T_FLOAT_F8E4M3)) {
+ p_type = H5Tcopy(H5T_FLOAT_F8E4M3);
+
+ /* Though not very useful, set order to BE as expected */
+ H5Tset_order(p_type, H5T_ORDER_BE);
+ }
+ else if (true == H5Tequal(tid, H5T_FLOAT_F8E5M2)) {
+ p_type = H5Tcopy(H5T_FLOAT_F8E5M2);
+
+ /* Though not very useful, set order to BE as expected */
+ H5Tset_order(p_type, H5T_ORDER_BE);
+ }
+ }
+ else if (size == 2) {
if (true == H5Tequal(tid, H5T_IEEE_F16LE) || true == H5Tequal(tid, H5T_IEEE_F16BE))
p_type = H5Tcopy(H5T_IEEE_F16BE);
else if (true == H5Tequal(tid, H5T_FLOAT_BFLOAT16LE) ||
diff --git a/tools/src/h5import/h5import.c b/tools/src/h5import/h5import.c
index c148aee9030..82231d8c75c 100644
--- a/tools/src/h5import/h5import.c
+++ b/tools/src/h5import/h5import.c
@@ -3283,6 +3283,48 @@ getInputClassType(struct Input *in, char *buffer)
kindex = 3;
}
+ else if (!strcmp(buffer, "H5T_FLOAT_F8E4M3")) {
+ in->inputSize = 8;
+ in->configOptionVector[INPUT_SIZE] = 1;
+
+ if ((kindex = OutputArchStrToInt("FLOAT")) == -1) {
+ (void)fprintf(stderr, "%s", err2);
+ return (-1);
+ }
+ in->outputArchitecture = kindex;
+
+ if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+ (void)fprintf(stderr, "%s", err3);
+ return (-1);
+ }
+ in->outputByteOrder = kindex;
+#ifdef H5DEBUGIMPORT
+ printf("h5dump inputByteOrder %d\n", in->inputByteOrder);
+#endif
+
+ kindex = 3;
+ }
+ else if (!strcmp(buffer, "H5T_FLOAT_F8E5M2")) {
+ in->inputSize = 8;
+ in->configOptionVector[INPUT_SIZE] = 1;
+
+ if ((kindex = OutputArchStrToInt("FLOAT")) == -1) {
+ (void)fprintf(stderr, "%s", err2);
+ return (-1);
+ }
+ in->outputArchitecture = kindex;
+
+ if ((kindex = OutputByteOrderStrToInt("LE")) == -1) {
+ (void)fprintf(stderr, "%s", err3);
+ return (-1);
+ }
+ in->outputByteOrder = kindex;
+#ifdef H5DEBUGIMPORT
+ printf("h5dump inputByteOrder %d\n", in->inputByteOrder);
+#endif
+
+ kindex = 3;
+ }
else if (!strcmp(buffer, "H5T_VAX_F32")) {
in->inputSize = 32;
in->configOptionVector[INPUT_SIZE] = 1;
@@ -4140,6 +4182,31 @@ createOutputDataType(struct Input *in)
case 8:
switch (in->outputSize) {
+ case 8:
+ /*
+ * NOTE: h5import does not currently have a way to specify
+ * which FP8 format to use for output. E4M3 is arbitrarily
+ * chosen here, but this can be problematic for data that
+ * is intended to be in the E5M2 format.
+ */
+ switch (in->outputByteOrder) {
+ case -1:
+ case 0:
+ new_type = H5Tcopy(H5T_FLOAT_F8E4M3);
+ /* Though not very useful, set order to BE as expected */
+ H5Tset_order(new_type, H5T_ORDER_BE);
+ break;
+
+ case 1:
+ new_type = H5Tcopy(H5T_FLOAT_F8E4M3);
+ break;
+
+ default:
+ (void)fprintf(stderr, "%s", err3);
+ return (-1);
+ }
+ break;
+
case 16:
switch (in->outputByteOrder) {
case -1:
@@ -4543,6 +4610,26 @@ createInputDataType(struct Input *in)
case 8:
switch (in->inputSize) {
+ case 8:
+ /*
+ * NOTE: h5import does not currently have a way to specify
+ * which FP8 format to use for input. E4M3 is arbitrarily
+ * chosen here, but this can be problematic for data that
+ * is intended to be in the E5M2 format.
+ */
+ switch (in->inputByteOrder) {
+ case -1:
+ case 0:
+ case 1:
+ new_type = H5Tcopy(H5T_FLOAT_F8E4M3);
+ break;
+
+ default:
+ (void)fprintf(stderr, "%s", err3);
+ return (-1);
+ }
+ break;
+
case 16:
switch (in->inputByteOrder) {
case -1:
diff --git a/tools/src/h5ls/h5ls.c b/tools/src/h5ls/h5ls.c
index 15c5ef55ae9..ce0d9f896cc 100644
--- a/tools/src/h5ls/h5ls.c
+++ b/tools/src/h5ls/h5ls.c
@@ -605,6 +605,12 @@ print_specific_float_type(h5tools_str_t *buffer, hid_t type, int ind)
else if (H5Tequal(type, H5T_FLOAT_BFLOAT16LE) == true) {
h5tools_str_append(buffer, "bfloat16 16-bit little-endian float");
}
+ else if (H5Tequal(type, H5T_FLOAT_F8E4M3) == true) {
+ h5tools_str_append(buffer, "FP8 E4M3 8-bit float");
+ }
+ else if (H5Tequal(type, H5T_FLOAT_F8E5M2) == true) {
+ h5tools_str_append(buffer, "FP8 E5M2 8-bit float");
+ }
else {
return print_float_type(buffer, type, ind);
}
diff --git a/tools/test/h5dump/CMakeTests.cmake b/tools/test/h5dump/CMakeTests.cmake
index fad5da0c947..9c57b28a245 100644
--- a/tools/test/h5dump/CMakeTests.cmake
+++ b/tools/test/h5dump/CMakeTests.cmake
@@ -110,6 +110,7 @@ set (HDF5_REFERENCE_FILES
tfill.ddl
tfletcher32.ddl
tfloatsattrs.ddl
+ tfloat8.ddl
tfloat16.ddl
tfloat16_be.ddl
tfpformat.ddl
@@ -304,6 +305,7 @@ set (HDF5_REFERENCE_TEST_FILES
tfcontents2.h5
tfilters.h5
tfloatsattrs.h5
+ tfloat8.h5
tfloat16.h5
tfloat16_be.h5
tfpformat.h5
@@ -1165,6 +1167,9 @@ ADD_H5_TEST (tfloat16_be RESULT_CODE 0 --enable-error-stack TARGET_FILE tfloat16
ADD_H5_TEST (tbfloat16 RESULT_CODE 0 --enable-error-stack TARGET_FILE tbfloat16.h5)
ADD_H5_TEST (tbfloat16_be RESULT_CODE 0 --enable-error-stack TARGET_FILE tbfloat16_be.h5)
+# Add test for FP8 types
+ADD_H5_TEST (tfloat8 RESULT_CODE 0 --enable-error-stack TARGET_FILE tfloat8.h5)
+
# Add tests for complex numbers. For portability, use a fixed floating-point
# precision and skip dumping of the "long double _Complex" dataset. The "long
# double _Complex" dataset may display differently across platforms, e.g.
diff --git a/tools/test/h5dump/CMakeTestsXML.cmake b/tools/test/h5dump/CMakeTestsXML.cmake
index 0d612971112..a10b6712f5f 100644
--- a/tools/test/h5dump/CMakeTestsXML.cmake
+++ b/tools/test/h5dump/CMakeTestsXML.cmake
@@ -59,6 +59,7 @@ set (HDF5_XML_REFERENCE_TEST_FILES
tdset.h5
tempty.h5
textlink.h5
+ tfloat8.h5
tfloat16.h5
tfloat16_be.h5
tfpformat.h5
@@ -112,6 +113,7 @@ set (HDF5_XML_REFERENCE_FILES
tenum.h5.xml
test35.nc.xml
textlink.h5.xml
+ tfloat8.h5.xml
tfloat16.h5.xml
tfloat16_be.h5.xml
tfpformat.h5.xml
@@ -310,6 +312,9 @@ ADD_XML_H5_TEST (tfloat16_be.h5 0 tfloat16_be.h5)
ADD_XML_H5_TEST (tbfloat16.h5 0 tbfloat16.h5)
ADD_XML_H5_TEST (tbfloat16_be.h5 0 tbfloat16_be.h5)
+# Add test for FP8 types
+ADD_XML_H5_TEST (tfloat8.h5 0 tfloat8.h5)
+
# tests for floating point user defined printf format
ADD_XML_H5_TEST (tfpformat.h5 0 -u -m %.7f tfpformat.h5)
diff --git a/tools/test/h5dump/expected/tfloat8.ddl b/tools/test/h5dump/expected/tfloat8.ddl
new file mode 100644
index 00000000000..0d600740670
--- /dev/null
+++ b/tools/test/h5dump/expected/tfloat8.ddl
@@ -0,0 +1,418 @@
+HDF5 "tfloat8.h5" {
+GROUP "/" {
+ DATASET "DS8BITSE4M3" {
+ DATATYPE H5T_FLOAT_F8E4M3
+ DATASPACE SIMPLE { ( 8, 16 ) / ( 8, 16 ) }
+ DATA {
+ (0,0): 16, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5,
+ (1,0): 15, 0.5625, 1.125, 1.625, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6,
+ (1,13): 6.5, 7, 7.5,
+ (2,0): 14, 0.625, 1.125, 1.625, 2.25, 2.75, 3.25, 3.75, 4, 4.5, 5, 5.5,
+ (2,12): 6, 6.5, 7, 7.5,
+ (3,0): 13, 0.6875, 1.25, 1.75, 2.25, 2.75, 3.25, 3.75, 4, 4.5, 5, 5.5,
+ (3,12): 6, 6.5, 7, 7.5,
+ (4,0): 12, 0.75, 1.25, 1.75, 2.25, 2.75, 3.25, 3.75, 4.5, 5, 5.5, 6,
+ (4,12): 6.5, 7, 7.5, 8,
+ (5,0): 11, 0.8125, 1.375, 1.875, 2.25, 2.75, 3.25, 3.75, 4.5, 5, 5.5,
+ (5,11): 6, 6.5, 7, 7.5, 8,
+ (6,0): 10, 0.875, 1.375, 1.875, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7,
+ (6,14): 7.5, 8,
+ (7,0): 9, 0.9375, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5,
+ (7,15): 8
+ }
+ ATTRIBUTE "DS8BITSE4M3" {
+ DATATYPE H5T_FLOAT_F8E4M3
+ DATASPACE SIMPLE { ( 128 ) / ( 128 ) }
+ DATA {
+ (0): 16, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7,
+ (15): 7.5, 15, 0.5625, 1.125, 1.625, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5,
+ (28): 6, 6.5, 7, 7.5, 14, 0.625, 1.125, 1.625, 2.25, 2.75, 3.25,
+ (39): 3.75, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 13, 0.6875, 1.25, 1.75,
+ (52): 2.25, 2.75, 3.25, 3.75, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 12,
+ (65): 0.75, 1.25, 1.75, 2.25, 2.75, 3.25, 3.75, 4.5, 5, 5.5, 6, 6.5,
+ (77): 7, 7.5, 8, 11, 0.8125, 1.375, 1.875, 2.25, 2.75, 3.25, 3.75,
+ (88): 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 10, 0.875, 1.375, 1.875, 2.5,
+ (101): 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 9, 0.9375, 1.5, 2,
+ (116): 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8
+ }
+ }
+ }
+ DATASET "DS8BITSE4M3_ALLVALS" {
+ DATATYPE H5T_FLOAT_F8E4M3
+ DATASPACE SIMPLE { ( 16, 16 ) / ( 16, 16 ) }
+ DATA {
+ (0,0): 0, 0.00195312, 0.00390625, 0.00585938, 0.0078125, 0.00976562,
+ (0,6): 0.0117188, 0.0136719, 0.015625, 0.0175781, 0.0195312, 0.0214844,
+ (0,12): 0.0234375, 0.0253906, 0.0273438, 0.0292969,
+ (1,0): 0.03125, 0.0351562, 0.0390625, 0.0429688, 0.046875, 0.0507812,
+ (1,6): 0.0546875, 0.0585938, 0.0625, 0.0703125, 0.078125, 0.0859375,
+ (1,12): 0.09375, 0.101562, 0.109375, 0.117188,
+ (2,0): 0.125, 0.140625, 0.15625, 0.171875, 0.1875, 0.203125, 0.21875,
+ (2,7): 0.234375, 0.25, 0.28125, 0.3125, 0.34375, 0.375, 0.40625,
+ (2,14): 0.4375, 0.46875,
+ (3,0): 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1,
+ (3,9): 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875,
+ (4,0): 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 4.5, 5, 5.5, 6, 6.5,
+ (4,14): 7, 7.5,
+ (5,0): 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 30,
+ (6,0): 32, 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 88, 96, 104, 112,
+ (6,15): 120,
+ (7,0): 128, 144, 160, 176, 192, 208, 224, 240, inf, nan, nan, nan, nan,
+ (7,13): nan, nan, nan,
+ (8,0): -0, -0.00195312, -0.00390625, -0.00585938, -0.0078125,
+ (8,5): -0.00976562, -0.0117188, -0.0136719, -0.015625, -0.0175781,
+ (8,10): -0.0195312, -0.0214844, -0.0234375, -0.0253906, -0.0273438,
+ (8,15): -0.0292969,
+ (9,0): -0.03125, -0.0351562, -0.0390625, -0.0429688, -0.046875,
+ (9,5): -0.0507812, -0.0546875, -0.0585938, -0.0625, -0.0703125,
+ (9,10): -0.078125, -0.0859375, -0.09375, -0.101562, -0.109375,
+ (9,15): -0.117188,
+ (10,0): -0.125, -0.140625, -0.15625, -0.171875, -0.1875, -0.203125,
+ (10,6): -0.21875, -0.234375, -0.25, -0.28125, -0.3125, -0.34375,
+ (10,12): -0.375, -0.40625, -0.4375, -0.46875,
+ (11,0): -0.5, -0.5625, -0.625, -0.6875, -0.75, -0.8125, -0.875,
+ (11,7): -0.9375, -1, -1.125, -1.25, -1.375, -1.5, -1.625, -1.75,
+ (11,15): -1.875,
+ (12,0): -2, -2.25, -2.5, -2.75, -3, -3.25, -3.5, -3.75, -4, -4.5, -5,
+ (12,11): -5.5, -6, -6.5, -7, -7.5,
+ (13,0): -8, -9, -10, -11, -12, -13, -14, -15, -16, -18, -20, -22, -24,
+ (13,13): -26, -28, -30,
+ (14,0): -32, -36, -40, -44, -48, -52, -56, -60, -64, -72, -80, -88,
+ (14,12): -96, -104, -112, -120,
+ (15,0): -128, -144, -160, -176, -192, -208, -224, -240, -inf, -nan,
+ (15,10): -nan, -nan, -nan, -nan, -nan, -nan
+ }
+ ATTRIBUTE "DS8BITSE4M3_ALLVALS" {
+ DATATYPE H5T_FLOAT_F8E4M3
+ DATASPACE SIMPLE { ( 256 ) / ( 256 ) }
+ DATA {
+ (0): 0, 0.00195312, 0.00390625, 0.00585938, 0.0078125, 0.00976562,
+ (6): 0.0117188, 0.0136719, 0.015625, 0.0175781, 0.0195312,
+ (11): 0.0214844, 0.0234375, 0.0253906, 0.0273438, 0.0292969,
+ (16): 0.03125, 0.0351562, 0.0390625, 0.0429688, 0.046875, 0.0507812,
+ (22): 0.0546875, 0.0585938, 0.0625, 0.0703125, 0.078125, 0.0859375,
+ (28): 0.09375, 0.101562, 0.109375, 0.117188, 0.125, 0.140625,
+ (34): 0.15625, 0.171875, 0.1875, 0.203125, 0.21875, 0.234375, 0.25,
+ (41): 0.28125, 0.3125, 0.34375, 0.375, 0.40625, 0.4375, 0.46875,
+ (48): 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1,
+ (57): 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875, 2, 2.25, 2.5,
+ (67): 2.75, 3, 3.25, 3.5, 3.75, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8,
+ (81): 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 30, 32,
+ (97): 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 88, 96, 104, 112, 120,
+ (112): 128, 144, 160, 176, 192, 208, 224, 240, inf, nan, nan, nan,
+ (124): nan, nan, nan, nan, -0, -0.00195312, -0.00390625,
+ (131): -0.00585938, -0.0078125, -0.00976562, -0.0117188, -0.0136719,
+ (136): -0.015625, -0.0175781, -0.0195312, -0.0214844, -0.0234375,
+ (141): -0.0253906, -0.0273438, -0.0292969, -0.03125, -0.0351562,
+ (146): -0.0390625, -0.0429688, -0.046875, -0.0507812, -0.0546875,
+ (151): -0.0585938, -0.0625, -0.0703125, -0.078125, -0.0859375,
+ (156): -0.09375, -0.101562, -0.109375, -0.117188, -0.125, -0.140625,
+ (162): -0.15625, -0.171875, -0.1875, -0.203125, -0.21875, -0.234375,
+ (168): -0.25, -0.28125, -0.3125, -0.34375, -0.375, -0.40625,
+ (174): -0.4375, -0.46875, -0.5, -0.5625, -0.625, -0.6875, -0.75,
+ (181): -0.8125, -0.875, -0.9375, -1, -1.125, -1.25, -1.375, -1.5,
+ (189): -1.625, -1.75, -1.875, -2, -2.25, -2.5, -2.75, -3, -3.25,
+ (198): -3.5, -3.75, -4, -4.5, -5, -5.5, -6, -6.5, -7, -7.5, -8, -9,
+ (210): -10, -11, -12, -13, -14, -15, -16, -18, -20, -22, -24, -26,
+ (222): -28, -30, -32, -36, -40, -44, -48, -52, -56, -60, -64, -72,
+ (234): -80, -88, -96, -104, -112, -120, -128, -144, -160, -176,
+ (244): -192, -208, -224, -240, -inf, -nan, -nan, -nan, -nan, -nan,
+ (254): -nan, -nan
+ }
+ }
+ }
+ DATASET "DS8BITSE4M3_ALLVALS_CONVERT" {
+ DATATYPE H5T_FLOAT_F8E4M3
+ DATASPACE SIMPLE { ( 16, 16 ) / ( 16, 16 ) }
+ DATA {
+ (0,0): 0, 0.00195312, 0.00195312, 0.00585938, 0.00390625, 0.00976562,
+ (0,6): 0.0117188, 0.0136719, 0.0078125, 0.0175781, 0.0195312,
+ (0,11): 0.0214844, 0.0234375, 0.0253906, 0.0273438, 0.0292969,
+ (1,0): 0.03125, 0.0351562, 0.0390625, 0.0429688, 0.046875, 0.0507812,
+ (1,6): 0.0546875, 0.0585938, 0.0625, 0.0703125, 0.078125, 0.0859375,
+ (1,12): 0.09375, 0.101562, 0.109375, 0.117188,
+ (2,0): 0.125, 0.140625, 0.15625, 0.171875, 0.1875, 0.203125, 0.21875,
+ (2,7): 0.234375, 0.25, 0.28125, 0.3125, 0.34375, 0.375, 0.40625,
+ (2,14): 0.4375, 0.46875,
+ (3,0): 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1,
+ (3,9): 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875,
+ (4,0): 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 4.5, 5, 5.5, 6, 6.5,
+ (4,14): 7, 7.5,
+ (5,0): 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 30,
+ (6,0): 32, 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 88, 96, 104, 112,
+ (6,15): 120,
+ (7,0): 128, 144, 160, 176, 192, 208, 224, 240, inf, inf, inf, inf, inf,
+ (7,13): inf, inf, 0,
+ (8,0): -0, -0.00195312, -0.00195312, -0.00585938, -0.00390625,
+ (8,5): -0.00976562, -0.0117188, -0.0136719, -0.0078125, -0.0175781,
+ (8,10): -0.0195312, -0.0214844, -0.0234375, -0.0253906, -0.0273438,
+ (8,15): -0.0292969,
+ (9,0): -0.03125, -0.0351562, -0.0390625, -0.0429688, -0.046875,
+ (9,5): -0.0507812, -0.0546875, -0.0585938, -0.0625, -0.0703125,
+ (9,10): -0.078125, -0.0859375, -0.09375, -0.101562, -0.109375,
+ (9,15): -0.117188,
+ (10,0): -0.125, -0.140625, -0.15625, -0.171875, -0.1875, -0.203125,
+ (10,6): -0.21875, -0.234375, -0.25, -0.28125, -0.3125, -0.34375,
+ (10,12): -0.375, -0.40625, -0.4375, -0.46875,
+ (11,0): -0.5, -0.5625, -0.625, -0.6875, -0.75, -0.8125, -0.875,
+ (11,7): -0.9375, -1, -1.125, -1.25, -1.375, -1.5, -1.625, -1.75,
+ (11,15): -1.875,
+ (12,0): -2, -2.25, -2.5, -2.75, -3, -3.25, -3.5, -3.75, -4, -4.5, -5,
+ (12,11): -5.5, -6, -6.5, -7, -7.5,
+ (13,0): -8, -9, -10, -11, -12, -13, -14, -15, -16, -18, -20, -22, -24,
+ (13,13): -26, -28, -30,
+ (14,0): -32, -36, -40, -44, -48, -52, -56, -60, -64, -72, -80, -88,
+ (14,12): -96, -104, -112, -120,
+ (15,0): -128, -144, -160, -176, -192, -208, -224, -240, -inf, -inf,
+ (15,10): -inf, -inf, -inf, -inf, -inf, 0
+ }
+ ATTRIBUTE "DS8BITSE4M3_ALLVALS_CONVERT" {
+ DATATYPE H5T_FLOAT_F8E4M3
+ DATASPACE SIMPLE { ( 256 ) / ( 256 ) }
+ DATA {
+ (0): 0, 0.00195312, 0.00195312, 0.00585938, 0.00390625, 0.00976562,
+ (6): 0.0117188, 0.0136719, 0.0078125, 0.0175781, 0.0195312,
+ (11): 0.0214844, 0.0234375, 0.0253906, 0.0273438, 0.0292969,
+ (16): 0.03125, 0.0351562, 0.0390625, 0.0429688, 0.046875, 0.0507812,
+ (22): 0.0546875, 0.0585938, 0.0625, 0.0703125, 0.078125, 0.0859375,
+ (28): 0.09375, 0.101562, 0.109375, 0.117188, 0.125, 0.140625,
+ (34): 0.15625, 0.171875, 0.1875, 0.203125, 0.21875, 0.234375, 0.25,
+ (41): 0.28125, 0.3125, 0.34375, 0.375, 0.40625, 0.4375, 0.46875,
+ (48): 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1,
+ (57): 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875, 2, 2.25, 2.5,
+ (67): 2.75, 3, 3.25, 3.5, 3.75, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8,
+ (81): 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 30, 32,
+ (97): 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 88, 96, 104, 112, 120,
+ (112): 128, 144, 160, 176, 192, 208, 224, 240, inf, inf, inf, inf,
+ (124): inf, inf, inf, 0, -0, -0.00195312, -0.00195312, -0.00585938,
+ (132): -0.00390625, -0.00976562, -0.0117188, -0.0136719, -0.0078125,
+ (137): -0.0175781, -0.0195312, -0.0214844, -0.0234375, -0.0253906,
+ (142): -0.0273438, -0.0292969, -0.03125, -0.0351562, -0.0390625,
+ (147): -0.0429688, -0.046875, -0.0507812, -0.0546875, -0.0585938,
+ (152): -0.0625, -0.0703125, -0.078125, -0.0859375, -0.09375,
+ (157): -0.101562, -0.109375, -0.117188, -0.125, -0.140625, -0.15625,
+ (163): -0.171875, -0.1875, -0.203125, -0.21875, -0.234375, -0.25,
+ (169): -0.28125, -0.3125, -0.34375, -0.375, -0.40625, -0.4375,
+ (175): -0.46875, -0.5, -0.5625, -0.625, -0.6875, -0.75, -0.8125,
+ (182): -0.875, -0.9375, -1, -1.125, -1.25, -1.375, -1.5, -1.625,
+ (190): -1.75, -1.875, -2, -2.25, -2.5, -2.75, -3, -3.25, -3.5,
+ (199): -3.75, -4, -4.5, -5, -5.5, -6, -6.5, -7, -7.5, -8, -9, -10,
+ (211): -11, -12, -13, -14, -15, -16, -18, -20, -22, -24, -26, -28,
+ (223): -30, -32, -36, -40, -44, -48, -52, -56, -60, -64, -72, -80,
+ (235): -88, -96, -104, -112, -120, -128, -144, -160, -176, -192,
+ (245): -208, -224, -240, -inf, -inf, -inf, -inf, -inf, -inf, -inf, 0
+ }
+ }
+ }
+ DATASET "DS8BITSE5M2" {
+ DATATYPE H5T_FLOAT_F8E5M2
+ DATASPACE SIMPLE { ( 8, 16 ) / ( 8, 16 ) }
+ DATA {
+ (0,0): 16, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 5, 6, 6, 7, 7, 8,
+ (1,0): 16, 0.625, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 5, 6, 6, 7, 7, 8,
+ (2,0): 14, 0.625, 1.25, 1.75, 2, 2.5, 3, 3.5, 4, 5, 5, 6, 6, 7, 7, 8,
+ (3,0): 14, 0.75, 1.25, 1.75, 2, 2.5, 3, 3.5, 4, 5, 5, 6, 6, 7, 7, 8,
+ (4,0): 12, 0.75, 1.25, 1.75, 2.5, 3, 3.5, 4, 4, 5, 5, 6, 6, 7, 7, 8,
+ (5,0): 12, 0.875, 1.25, 1.75, 2.5, 3, 3.5, 4, 4, 5, 5, 6, 6, 7, 7, 8,
+ (6,0): 10, 0.875, 1.5, 2, 2.5, 3, 3.5, 4, 4, 5, 5, 6, 6, 7, 7, 8,
+ (7,0): 10, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4, 5, 5, 6, 6, 7, 7, 8
+ }
+ ATTRIBUTE "DS8BITSE5M2" {
+ DATATYPE H5T_FLOAT_F8E5M2
+ DATASPACE SIMPLE { ( 128 ) / ( 128 ) }
+ DATA {
+ (0): 16, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 5, 6, 6, 7, 7, 8, 16,
+ (17): 0.625, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 5, 6, 6, 7, 7, 8, 14,
+ (33): 0.625, 1.25, 1.75, 2, 2.5, 3, 3.5, 4, 5, 5, 6, 6, 7, 7, 8, 14,
+ (49): 0.75, 1.25, 1.75, 2, 2.5, 3, 3.5, 4, 5, 5, 6, 6, 7, 7, 8, 12,
+ (65): 0.75, 1.25, 1.75, 2.5, 3, 3.5, 4, 4, 5, 5, 6, 6, 7, 7, 8, 12,
+ (81): 0.875, 1.25, 1.75, 2.5, 3, 3.5, 4, 4, 5, 5, 6, 6, 7, 7, 8, 10,
+ (97): 0.875, 1.5, 2, 2.5, 3, 3.5, 4, 4, 5, 5, 6, 6, 7, 7, 8, 10, 1,
+ (114): 1.5, 2, 2.5, 3, 3.5, 4, 4, 5, 5, 6, 6, 7, 7, 8
+ }
+ }
+ }
+ DATASET "DS8BITSE5M2_ALLVALS" {
+ DATATYPE H5T_FLOAT_F8E5M2
+ DATASPACE SIMPLE { ( 16, 16 ) / ( 16, 16 ) }
+ DATA {
+ (0,0): 0, 1.52588e-05, 3.05176e-05, 4.57764e-05, 6.10352e-05,
+ (0,5): 7.62939e-05, 9.15527e-05, 0.000106812, 0.00012207, 0.000152588,
+ (0,10): 0.000183105, 0.000213623, 0.000244141, 0.000305176,
+ (0,14): 0.000366211, 0.000427246,
+ (1,0): 0.000488281, 0.000610352, 0.000732422, 0.000854492, 0.000976562,
+ (1,5): 0.0012207, 0.00146484, 0.00170898, 0.00195312, 0.00244141,
+ (1,10): 0.00292969, 0.00341797, 0.00390625, 0.00488281, 0.00585938,
+ (1,15): 0.00683594,
+ (2,0): 0.0078125, 0.00976562, 0.0117188, 0.0136719, 0.015625,
+ (2,5): 0.0195312, 0.0234375, 0.0273438, 0.03125, 0.0390625, 0.046875,
+ (2,11): 0.0546875, 0.0625, 0.078125, 0.09375, 0.109375,
+ (3,0): 0.125, 0.15625, 0.1875, 0.21875, 0.25, 0.3125, 0.375, 0.4375,
+ (3,8): 0.5, 0.625, 0.75, 0.875, 1, 1.25, 1.5, 1.75,
+ (4,0): 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28,
+ (5,0): 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,
+ (5,14): 384, 448,
+ (6,0): 512, 640, 768, 896, 1024, 1280, 1536, 1792, 2048, 2560, 3072,
+ (6,11): 3584, 4096, 5120, 6144, 7168,
+ (7,0): 8192, 10240, 12288, 14336, 16384, 20480, 24576, 28672, 32768,
+ (7,9): 40960, 49152, 57344, inf, nan, nan, nan,
+ (8,0): -0, -1.52588e-05, -3.05176e-05, -4.57764e-05, -6.10352e-05,
+ (8,5): -7.62939e-05, -9.15527e-05, -0.000106812, -0.00012207,
+ (8,9): -0.000152588, -0.000183105, -0.000213623, -0.000244141,
+ (8,13): -0.000305176, -0.000366211, -0.000427246,
+ (9,0): -0.000488281, -0.000610352, -0.000732422, -0.000854492,
+ (9,4): -0.000976562, -0.0012207, -0.00146484, -0.00170898, -0.00195312,
+ (9,9): -0.00244141, -0.00292969, -0.00341797, -0.00390625, -0.00488281,
+ (9,14): -0.00585938, -0.00683594,
+ (10,0): -0.0078125, -0.00976562, -0.0117188, -0.0136719, -0.015625,
+ (10,5): -0.0195312, -0.0234375, -0.0273438, -0.03125, -0.0390625,
+ (10,10): -0.046875, -0.0546875, -0.0625, -0.078125, -0.09375,
+ (10,15): -0.109375,
+ (11,0): -0.125, -0.15625, -0.1875, -0.21875, -0.25, -0.3125, -0.375,
+ (11,7): -0.4375, -0.5, -0.625, -0.75, -0.875, -1, -1.25, -1.5, -1.75,
+ (12,0): -2, -2.5, -3, -3.5, -4, -5, -6, -7, -8, -10, -12, -14, -16,
+ (12,13): -20, -24, -28,
+ (13,0): -32, -40, -48, -56, -64, -80, -96, -112, -128, -160, -192,
+ (13,11): -224, -256, -320, -384, -448,
+ (14,0): -512, -640, -768, -896, -1024, -1280, -1536, -1792, -2048,
+ (14,9): -2560, -3072, -3584, -4096, -5120, -6144, -7168,
+ (15,0): -8192, -10240, -12288, -14336, -16384, -20480, -24576, -28672,
+ (15,8): -32768, -40960, -49152, -57344, -inf, -nan, -nan, -nan
+ }
+ ATTRIBUTE "DS8BITSE5M2_ALLVALS" {
+ DATATYPE H5T_FLOAT_F8E5M2
+ DATASPACE SIMPLE { ( 256 ) / ( 256 ) }
+ DATA {
+ (0): 0, 1.52588e-05, 3.05176e-05, 4.57764e-05, 6.10352e-05,
+ (5): 7.62939e-05, 9.15527e-05, 0.000106812, 0.00012207, 0.000152588,
+ (10): 0.000183105, 0.000213623, 0.000244141, 0.000305176,
+ (14): 0.000366211, 0.000427246, 0.000488281, 0.000610352,
+ (18): 0.000732422, 0.000854492, 0.000976562, 0.0012207, 0.00146484,
+ (23): 0.00170898, 0.00195312, 0.00244141, 0.00292969, 0.00341797,
+ (28): 0.00390625, 0.00488281, 0.00585938, 0.00683594, 0.0078125,
+ (33): 0.00976562, 0.0117188, 0.0136719, 0.015625, 0.0195312,
+ (38): 0.0234375, 0.0273438, 0.03125, 0.0390625, 0.046875, 0.0546875,
+ (44): 0.0625, 0.078125, 0.09375, 0.109375, 0.125, 0.15625, 0.1875,
+ (51): 0.21875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.625, 0.75, 0.875,
+ (60): 1, 1.25, 1.5, 1.75, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 10, 12, 14,
+ (76): 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160,
+ (90): 192, 224, 256, 320, 384, 448, 512, 640, 768, 896, 1024, 1280,
+ (102): 1536, 1792, 2048, 2560, 3072, 3584, 4096, 5120, 6144, 7168,
+ (112): 8192, 10240, 12288, 14336, 16384, 20480, 24576, 28672, 32768,
+ (121): 40960, 49152, 57344, inf, nan, nan, nan, -0, -1.52588e-05,
+ (130): -3.05176e-05, -4.57764e-05, -6.10352e-05, -7.62939e-05,
+ (134): -9.15527e-05, -0.000106812, -0.00012207, -0.000152588,
+ (138): -0.000183105, -0.000213623, -0.000244141, -0.000305176,
+ (142): -0.000366211, -0.000427246, -0.000488281, -0.000610352,
+ (146): -0.000732422, -0.000854492, -0.000976562, -0.0012207,
+ (150): -0.00146484, -0.00170898, -0.00195312, -0.00244141,
+ (154): -0.00292969, -0.00341797, -0.00390625, -0.00488281,
+ (158): -0.00585938, -0.00683594, -0.0078125, -0.00976562,
+ (162): -0.0117188, -0.0136719, -0.015625, -0.0195312, -0.0234375,
+ (167): -0.0273438, -0.03125, -0.0390625, -0.046875, -0.0546875,
+ (172): -0.0625, -0.078125, -0.09375, -0.109375, -0.125, -0.15625,
+ (178): -0.1875, -0.21875, -0.25, -0.3125, -0.375, -0.4375, -0.5,
+ (185): -0.625, -0.75, -0.875, -1, -1.25, -1.5, -1.75, -2, -2.5, -3,
+ (195): -3.5, -4, -5, -6, -7, -8, -10, -12, -14, -16, -20, -24, -28,
+ (208): -32, -40, -48, -56, -64, -80, -96, -112, -128, -160, -192,
+ (219): -224, -256, -320, -384, -448, -512, -640, -768, -896, -1024,
+ (229): -1280, -1536, -1792, -2048, -2560, -3072, -3584, -4096,
+ (237): -5120, -6144, -7168, -8192, -10240, -12288, -14336, -16384,
+ (245): -20480, -24576, -28672, -32768, -40960, -49152, -57344, -inf,
+ (253): -nan, -nan, -nan
+ }
+ }
+ }
+ DATASET "DS8BITSE5M2_ALLVALS_CONVERT" {
+ DATATYPE H5T_FLOAT_F8E5M2
+ DATASPACE SIMPLE { ( 16, 16 ) / ( 16, 16 ) }
+ DATA {
+ (0,0): 0, 1.52588e-05, 1.52588e-05, 4.57764e-05, 3.05176e-05,
+ (0,5): 7.62939e-05, 9.15527e-05, 0.000106812, 0.00012207, 0.000152588,
+ (0,10): 0.000183105, 0.000213623, 0.000244141, 0.000305176,
+ (0,14): 0.000366211, 0.000427246,
+ (1,0): 0.000488281, 0.000610352, 0.000732422, 0.000854492, 0.000976562,
+ (1,5): 0.0012207, 0.00146484, 0.00170898, 0.00195312, 0.00244141,
+ (1,10): 0.00292969, 0.00341797, 0.00390625, 0.00488281, 0.00585938,
+ (1,15): 0.00683594,
+ (2,0): 0.0078125, 0.00976562, 0.0117188, 0.0136719, 0.015625,
+ (2,5): 0.0195312, 0.0234375, 0.0273438, 0.03125, 0.0390625, 0.046875,
+ (2,11): 0.0546875, 0.0625, 0.078125, 0.09375, 0.109375,
+ (3,0): 0.125, 0.15625, 0.1875, 0.21875, 0.25, 0.3125, 0.375, 0.4375,
+ (3,8): 0.5, 0.625, 0.75, 0.875, 1, 1.25, 1.5, 1.75,
+ (4,0): 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28,
+ (5,0): 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,
+ (5,14): 384, 448,
+ (6,0): 512, 640, 768, 896, 1024, 1280, 1536, 1792, 2048, 2560, 3072,
+ (6,11): 3584, 4096, 5120, 6144, 7168,
+ (7,0): 8192, 10240, 12288, 14336, 16384, 20480, 24576, 28672, 32768,
+ (7,9): 40960, 49152, 57344, inf, 0, 0, 0,
+ (8,0): -0, -1.52588e-05, -1.52588e-05, -4.57764e-05, -3.05176e-05,
+ (8,5): -7.62939e-05, -9.15527e-05, -0.000106812, -0.00012207,
+ (8,9): -0.000152588, -0.000183105, -0.000213623, -0.000244141,
+ (8,13): -0.000305176, -0.000366211, -0.000427246,
+ (9,0): -0.000488281, -0.000610352, -0.000732422, -0.000854492,
+ (9,4): -0.000976562, -0.0012207, -0.00146484, -0.00170898, -0.00195312,
+ (9,9): -0.00244141, -0.00292969, -0.00341797, -0.00390625, -0.00488281,
+ (9,14): -0.00585938, -0.00683594,
+ (10,0): -0.0078125, -0.00976562, -0.0117188, -0.0136719, -0.015625,
+ (10,5): -0.0195312, -0.0234375, -0.0273438, -0.03125, -0.0390625,
+ (10,10): -0.046875, -0.0546875, -0.0625, -0.078125, -0.09375,
+ (10,15): -0.109375,
+ (11,0): -0.125, -0.15625, -0.1875, -0.21875, -0.25, -0.3125, -0.375,
+ (11,7): -0.4375, -0.5, -0.625, -0.75, -0.875, -1, -1.25, -1.5, -1.75,
+ (12,0): -2, -2.5, -3, -3.5, -4, -5, -6, -7, -8, -10, -12, -14, -16,
+ (12,13): -20, -24, -28,
+ (13,0): -32, -40, -48, -56, -64, -80, -96, -112, -128, -160, -192,
+ (13,11): -224, -256, -320, -384, -448,
+ (14,0): -512, -640, -768, -896, -1024, -1280, -1536, -1792, -2048,
+ (14,9): -2560, -3072, -3584, -4096, -5120, -6144, -7168,
+ (15,0): -8192, -10240, -12288, -14336, -16384, -20480, -24576, -28672,
+ (15,8): -32768, -40960, -49152, -57344, -inf, 0, 0, 0
+ }
+ ATTRIBUTE "DS8BITSE5M2_ALLVALS_CONVERT" {
+ DATATYPE H5T_FLOAT_F8E5M2
+ DATASPACE SIMPLE { ( 256 ) / ( 256 ) }
+ DATA {
+ (0): 0, 1.52588e-05, 1.52588e-05, 4.57764e-05, 3.05176e-05,
+ (5): 7.62939e-05, 9.15527e-05, 0.000106812, 0.00012207, 0.000152588,
+ (10): 0.000183105, 0.000213623, 0.000244141, 0.000305176,
+ (14): 0.000366211, 0.000427246, 0.000488281, 0.000610352,
+ (18): 0.000732422, 0.000854492, 0.000976562, 0.0012207, 0.00146484,
+ (23): 0.00170898, 0.00195312, 0.00244141, 0.00292969, 0.00341797,
+ (28): 0.00390625, 0.00488281, 0.00585938, 0.00683594, 0.0078125,
+ (33): 0.00976562, 0.0117188, 0.0136719, 0.015625, 0.0195312,
+ (38): 0.0234375, 0.0273438, 0.03125, 0.0390625, 0.046875, 0.0546875,
+ (44): 0.0625, 0.078125, 0.09375, 0.109375, 0.125, 0.15625, 0.1875,
+ (51): 0.21875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.625, 0.75, 0.875,
+ (60): 1, 1.25, 1.5, 1.75, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 10, 12, 14,
+ (76): 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160,
+ (90): 192, 224, 256, 320, 384, 448, 512, 640, 768, 896, 1024, 1280,
+ (102): 1536, 1792, 2048, 2560, 3072, 3584, 4096, 5120, 6144, 7168,
+ (112): 8192, 10240, 12288, 14336, 16384, 20480, 24576, 28672, 32768,
+ (121): 40960, 49152, 57344, inf, 0, 0, 0, -0, -1.52588e-05,
+ (130): -1.52588e-05, -4.57764e-05, -3.05176e-05, -7.62939e-05,
+ (134): -9.15527e-05, -0.000106812, -0.00012207, -0.000152588,
+ (138): -0.000183105, -0.000213623, -0.000244141, -0.000305176,
+ (142): -0.000366211, -0.000427246, -0.000488281, -0.000610352,
+ (146): -0.000732422, -0.000854492, -0.000976562, -0.0012207,
+ (150): -0.00146484, -0.00170898, -0.00195312, -0.00244141,
+ (154): -0.00292969, -0.00341797, -0.00390625, -0.00488281,
+ (158): -0.00585938, -0.00683594, -0.0078125, -0.00976562,
+ (162): -0.0117188, -0.0136719, -0.015625, -0.0195312, -0.0234375,
+ (167): -0.0273438, -0.03125, -0.0390625, -0.046875, -0.0546875,
+ (172): -0.0625, -0.078125, -0.09375, -0.109375, -0.125, -0.15625,
+ (178): -0.1875, -0.21875, -0.25, -0.3125, -0.375, -0.4375, -0.5,
+ (185): -0.625, -0.75, -0.875, -1, -1.25, -1.5, -1.75, -2, -2.5, -3,
+ (195): -3.5, -4, -5, -6, -7, -8, -10, -12, -14, -16, -20, -24, -28,
+ (208): -32, -40, -48, -56, -64, -80, -96, -112, -128, -160, -192,
+ (219): -224, -256, -320, -384, -448, -512, -640, -768, -896, -1024,
+ (229): -1280, -1536, -1792, -2048, -2560, -3072, -3584, -4096,
+ (237): -5120, -6144, -7168, -8192, -10240, -12288, -14336, -16384,
+ (245): -20480, -24576, -28672, -32768, -40960, -49152, -57344, -inf,
+ (253): 0, 0, 0
+ }
+ }
+ }
+}
+}
diff --git a/tools/test/h5dump/expected/xml/tfloat8.h5.xml b/tools/test/h5dump/expected/xml/tfloat8.h5.xml
new file mode 100644
index 00000000000..8e41c7c6ff0
--- /dev/null
+++ b/tools/test/h5dump/expected/xml/tfloat8.h5.xml
@@ -0,0 +1,2811 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 16
+ 0.5
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 15
+ 0.5625
+ 1.125
+ 1.625
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 14
+ 0.625
+ 1.125
+ 1.625
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 13
+ 0.6875
+ 1.25
+ 1.75
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 12
+ 0.75
+ 1.25
+ 1.75
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 11
+ 0.8125
+ 1.375
+ 1.875
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 10
+ 0.875
+ 1.375
+ 1.875
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 9
+ 0.9375
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+
+
+
+
+
+ 16
+ 0.5
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 15
+ 0.5625
+ 1.125
+ 1.625
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 14
+ 0.625
+ 1.125
+ 1.625
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 13
+ 0.6875
+ 1.25
+ 1.75
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 12
+ 0.75
+ 1.25
+ 1.75
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 11
+ 0.8125
+ 1.375
+ 1.875
+ 2.25
+ 2.75
+ 3.25
+ 3.75
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 10
+ 0.875
+ 1.375
+ 1.875
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 9
+ 0.9375
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0.00195312
+ 0.00390625
+ 0.00585938
+ 0.0078125
+ 0.00976562
+ 0.0117188
+ 0.0136719
+ 0.015625
+ 0.0175781
+ 0.0195312
+ 0.0214844
+ 0.0234375
+ 0.0253906
+ 0.0273438
+ 0.0292969
+ 0.03125
+ 0.0351562
+ 0.0390625
+ 0.0429688
+ 0.046875
+ 0.0507812
+ 0.0546875
+ 0.0585938
+ 0.0625
+ 0.0703125
+ 0.078125
+ 0.0859375
+ 0.09375
+ 0.101562
+ 0.109375
+ 0.117188
+ 0.125
+ 0.140625
+ 0.15625
+ 0.171875
+ 0.1875
+ 0.203125
+ 0.21875
+ 0.234375
+ 0.25
+ 0.28125
+ 0.3125
+ 0.34375
+ 0.375
+ 0.40625
+ 0.4375
+ 0.46875
+ 0.5
+ 0.5625
+ 0.625
+ 0.6875
+ 0.75
+ 0.8125
+ 0.875
+ 0.9375
+ 1
+ 1.125
+ 1.25
+ 1.375
+ 1.5
+ 1.625
+ 1.75
+ 1.875
+ 2
+ 2.25
+ 2.5
+ 2.75
+ 3
+ 3.25
+ 3.5
+ 3.75
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 36
+ 40
+ 44
+ 48
+ 52
+ 56
+ 60
+ 64
+ 72
+ 80
+ 88
+ 96
+ 104
+ 112
+ 120
+ 128
+ 144
+ 160
+ 176
+ 192
+ 208
+ 224
+ 240
+ inf
+ nan
+ nan
+ nan
+ nan
+ nan
+ nan
+ nan
+ -0
+ -0.00195312
+ -0.00390625
+ -0.00585938
+ -0.0078125
+ -0.00976562
+ -0.0117188
+ -0.0136719
+ -0.015625
+ -0.0175781
+ -0.0195312
+ -0.0214844
+ -0.0234375
+ -0.0253906
+ -0.0273438
+ -0.0292969
+ -0.03125
+ -0.0351562
+ -0.0390625
+ -0.0429688
+ -0.046875
+ -0.0507812
+ -0.0546875
+ -0.0585938
+ -0.0625
+ -0.0703125
+ -0.078125
+ -0.0859375
+ -0.09375
+ -0.101562
+ -0.109375
+ -0.117188
+ -0.125
+ -0.140625
+ -0.15625
+ -0.171875
+ -0.1875
+ -0.203125
+ -0.21875
+ -0.234375
+ -0.25
+ -0.28125
+ -0.3125
+ -0.34375
+ -0.375
+ -0.40625
+ -0.4375
+ -0.46875
+ -0.5
+ -0.5625
+ -0.625
+ -0.6875
+ -0.75
+ -0.8125
+ -0.875
+ -0.9375
+ -1
+ -1.125
+ -1.25
+ -1.375
+ -1.5
+ -1.625
+ -1.75
+ -1.875
+ -2
+ -2.25
+ -2.5
+ -2.75
+ -3
+ -3.25
+ -3.5
+ -3.75
+ -4
+ -4.5
+ -5
+ -5.5
+ -6
+ -6.5
+ -7
+ -7.5
+ -8
+ -9
+ -10
+ -11
+ -12
+ -13
+ -14
+ -15
+ -16
+ -18
+ -20
+ -22
+ -24
+ -26
+ -28
+ -30
+ -32
+ -36
+ -40
+ -44
+ -48
+ -52
+ -56
+ -60
+ -64
+ -72
+ -80
+ -88
+ -96
+ -104
+ -112
+ -120
+ -128
+ -144
+ -160
+ -176
+ -192
+ -208
+ -224
+ -240
+ -inf
+ -nan
+ -nan
+ -nan
+ -nan
+ -nan
+ -nan
+ -nan
+
+
+
+
+
+ 0
+ 0.00195312
+ 0.00390625
+ 0.00585938
+ 0.0078125
+ 0.00976562
+ 0.0117188
+ 0.0136719
+ 0.015625
+ 0.0175781
+ 0.0195312
+ 0.0214844
+ 0.0234375
+ 0.0253906
+ 0.0273438
+ 0.0292969
+ 0.03125
+ 0.0351562
+ 0.0390625
+ 0.0429688
+ 0.046875
+ 0.0507812
+ 0.0546875
+ 0.0585938
+ 0.0625
+ 0.0703125
+ 0.078125
+ 0.0859375
+ 0.09375
+ 0.101562
+ 0.109375
+ 0.117188
+ 0.125
+ 0.140625
+ 0.15625
+ 0.171875
+ 0.1875
+ 0.203125
+ 0.21875
+ 0.234375
+ 0.25
+ 0.28125
+ 0.3125
+ 0.34375
+ 0.375
+ 0.40625
+ 0.4375
+ 0.46875
+ 0.5
+ 0.5625
+ 0.625
+ 0.6875
+ 0.75
+ 0.8125
+ 0.875
+ 0.9375
+ 1
+ 1.125
+ 1.25
+ 1.375
+ 1.5
+ 1.625
+ 1.75
+ 1.875
+ 2
+ 2.25
+ 2.5
+ 2.75
+ 3
+ 3.25
+ 3.5
+ 3.75
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 36
+ 40
+ 44
+ 48
+ 52
+ 56
+ 60
+ 64
+ 72
+ 80
+ 88
+ 96
+ 104
+ 112
+ 120
+ 128
+ 144
+ 160
+ 176
+ 192
+ 208
+ 224
+ 240
+ inf
+ nan
+ nan
+ nan
+ nan
+ nan
+ nan
+ nan
+ -0
+ -0.00195312
+ -0.00390625
+ -0.00585938
+ -0.0078125
+ -0.00976562
+ -0.0117188
+ -0.0136719
+ -0.015625
+ -0.0175781
+ -0.0195312
+ -0.0214844
+ -0.0234375
+ -0.0253906
+ -0.0273438
+ -0.0292969
+ -0.03125
+ -0.0351562
+ -0.0390625
+ -0.0429688
+ -0.046875
+ -0.0507812
+ -0.0546875
+ -0.0585938
+ -0.0625
+ -0.0703125
+ -0.078125
+ -0.0859375
+ -0.09375
+ -0.101562
+ -0.109375
+ -0.117188
+ -0.125
+ -0.140625
+ -0.15625
+ -0.171875
+ -0.1875
+ -0.203125
+ -0.21875
+ -0.234375
+ -0.25
+ -0.28125
+ -0.3125
+ -0.34375
+ -0.375
+ -0.40625
+ -0.4375
+ -0.46875
+ -0.5
+ -0.5625
+ -0.625
+ -0.6875
+ -0.75
+ -0.8125
+ -0.875
+ -0.9375
+ -1
+ -1.125
+ -1.25
+ -1.375
+ -1.5
+ -1.625
+ -1.75
+ -1.875
+ -2
+ -2.25
+ -2.5
+ -2.75
+ -3
+ -3.25
+ -3.5
+ -3.75
+ -4
+ -4.5
+ -5
+ -5.5
+ -6
+ -6.5
+ -7
+ -7.5
+ -8
+ -9
+ -10
+ -11
+ -12
+ -13
+ -14
+ -15
+ -16
+ -18
+ -20
+ -22
+ -24
+ -26
+ -28
+ -30
+ -32
+ -36
+ -40
+ -44
+ -48
+ -52
+ -56
+ -60
+ -64
+ -72
+ -80
+ -88
+ -96
+ -104
+ -112
+ -120
+ -128
+ -144
+ -160
+ -176
+ -192
+ -208
+ -224
+ -240
+ -inf
+ -nan
+ -nan
+ -nan
+ -nan
+ -nan
+ -nan
+ -nan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0.00195312
+ 0.00195312
+ 0.00585938
+ 0.00390625
+ 0.00976562
+ 0.0117188
+ 0.0136719
+ 0.0078125
+ 0.0175781
+ 0.0195312
+ 0.0214844
+ 0.0234375
+ 0.0253906
+ 0.0273438
+ 0.0292969
+ 0.03125
+ 0.0351562
+ 0.0390625
+ 0.0429688
+ 0.046875
+ 0.0507812
+ 0.0546875
+ 0.0585938
+ 0.0625
+ 0.0703125
+ 0.078125
+ 0.0859375
+ 0.09375
+ 0.101562
+ 0.109375
+ 0.117188
+ 0.125
+ 0.140625
+ 0.15625
+ 0.171875
+ 0.1875
+ 0.203125
+ 0.21875
+ 0.234375
+ 0.25
+ 0.28125
+ 0.3125
+ 0.34375
+ 0.375
+ 0.40625
+ 0.4375
+ 0.46875
+ 0.5
+ 0.5625
+ 0.625
+ 0.6875
+ 0.75
+ 0.8125
+ 0.875
+ 0.9375
+ 1
+ 1.125
+ 1.25
+ 1.375
+ 1.5
+ 1.625
+ 1.75
+ 1.875
+ 2
+ 2.25
+ 2.5
+ 2.75
+ 3
+ 3.25
+ 3.5
+ 3.75
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 36
+ 40
+ 44
+ 48
+ 52
+ 56
+ 60
+ 64
+ 72
+ 80
+ 88
+ 96
+ 104
+ 112
+ 120
+ 128
+ 144
+ 160
+ 176
+ 192
+ 208
+ 224
+ 240
+ inf
+ inf
+ inf
+ inf
+ inf
+ inf
+ inf
+ 0
+ -0
+ -0.00195312
+ -0.00195312
+ -0.00585938
+ -0.00390625
+ -0.00976562
+ -0.0117188
+ -0.0136719
+ -0.0078125
+ -0.0175781
+ -0.0195312
+ -0.0214844
+ -0.0234375
+ -0.0253906
+ -0.0273438
+ -0.0292969
+ -0.03125
+ -0.0351562
+ -0.0390625
+ -0.0429688
+ -0.046875
+ -0.0507812
+ -0.0546875
+ -0.0585938
+ -0.0625
+ -0.0703125
+ -0.078125
+ -0.0859375
+ -0.09375
+ -0.101562
+ -0.109375
+ -0.117188
+ -0.125
+ -0.140625
+ -0.15625
+ -0.171875
+ -0.1875
+ -0.203125
+ -0.21875
+ -0.234375
+ -0.25
+ -0.28125
+ -0.3125
+ -0.34375
+ -0.375
+ -0.40625
+ -0.4375
+ -0.46875
+ -0.5
+ -0.5625
+ -0.625
+ -0.6875
+ -0.75
+ -0.8125
+ -0.875
+ -0.9375
+ -1
+ -1.125
+ -1.25
+ -1.375
+ -1.5
+ -1.625
+ -1.75
+ -1.875
+ -2
+ -2.25
+ -2.5
+ -2.75
+ -3
+ -3.25
+ -3.5
+ -3.75
+ -4
+ -4.5
+ -5
+ -5.5
+ -6
+ -6.5
+ -7
+ -7.5
+ -8
+ -9
+ -10
+ -11
+ -12
+ -13
+ -14
+ -15
+ -16
+ -18
+ -20
+ -22
+ -24
+ -26
+ -28
+ -30
+ -32
+ -36
+ -40
+ -44
+ -48
+ -52
+ -56
+ -60
+ -64
+ -72
+ -80
+ -88
+ -96
+ -104
+ -112
+ -120
+ -128
+ -144
+ -160
+ -176
+ -192
+ -208
+ -224
+ -240
+ -inf
+ -inf
+ -inf
+ -inf
+ -inf
+ -inf
+ -inf
+ 0
+
+
+
+
+
+ 0
+ 0.00195312
+ 0.00195312
+ 0.00585938
+ 0.00390625
+ 0.00976562
+ 0.0117188
+ 0.0136719
+ 0.0078125
+ 0.0175781
+ 0.0195312
+ 0.0214844
+ 0.0234375
+ 0.0253906
+ 0.0273438
+ 0.0292969
+ 0.03125
+ 0.0351562
+ 0.0390625
+ 0.0429688
+ 0.046875
+ 0.0507812
+ 0.0546875
+ 0.0585938
+ 0.0625
+ 0.0703125
+ 0.078125
+ 0.0859375
+ 0.09375
+ 0.101562
+ 0.109375
+ 0.117188
+ 0.125
+ 0.140625
+ 0.15625
+ 0.171875
+ 0.1875
+ 0.203125
+ 0.21875
+ 0.234375
+ 0.25
+ 0.28125
+ 0.3125
+ 0.34375
+ 0.375
+ 0.40625
+ 0.4375
+ 0.46875
+ 0.5
+ 0.5625
+ 0.625
+ 0.6875
+ 0.75
+ 0.8125
+ 0.875
+ 0.9375
+ 1
+ 1.125
+ 1.25
+ 1.375
+ 1.5
+ 1.625
+ 1.75
+ 1.875
+ 2
+ 2.25
+ 2.5
+ 2.75
+ 3
+ 3.25
+ 3.5
+ 3.75
+ 4
+ 4.5
+ 5
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 36
+ 40
+ 44
+ 48
+ 52
+ 56
+ 60
+ 64
+ 72
+ 80
+ 88
+ 96
+ 104
+ 112
+ 120
+ 128
+ 144
+ 160
+ 176
+ 192
+ 208
+ 224
+ 240
+ inf
+ inf
+ inf
+ inf
+ inf
+ inf
+ inf
+ 0
+ -0
+ -0.00195312
+ -0.00195312
+ -0.00585938
+ -0.00390625
+ -0.00976562
+ -0.0117188
+ -0.0136719
+ -0.0078125
+ -0.0175781
+ -0.0195312
+ -0.0214844
+ -0.0234375
+ -0.0253906
+ -0.0273438
+ -0.0292969
+ -0.03125
+ -0.0351562
+ -0.0390625
+ -0.0429688
+ -0.046875
+ -0.0507812
+ -0.0546875
+ -0.0585938
+ -0.0625
+ -0.0703125
+ -0.078125
+ -0.0859375
+ -0.09375
+ -0.101562
+ -0.109375
+ -0.117188
+ -0.125
+ -0.140625
+ -0.15625
+ -0.171875
+ -0.1875
+ -0.203125
+ -0.21875
+ -0.234375
+ -0.25
+ -0.28125
+ -0.3125
+ -0.34375
+ -0.375
+ -0.40625
+ -0.4375
+ -0.46875
+ -0.5
+ -0.5625
+ -0.625
+ -0.6875
+ -0.75
+ -0.8125
+ -0.875
+ -0.9375
+ -1
+ -1.125
+ -1.25
+ -1.375
+ -1.5
+ -1.625
+ -1.75
+ -1.875
+ -2
+ -2.25
+ -2.5
+ -2.75
+ -3
+ -3.25
+ -3.5
+ -3.75
+ -4
+ -4.5
+ -5
+ -5.5
+ -6
+ -6.5
+ -7
+ -7.5
+ -8
+ -9
+ -10
+ -11
+ -12
+ -13
+ -14
+ -15
+ -16
+ -18
+ -20
+ -22
+ -24
+ -26
+ -28
+ -30
+ -32
+ -36
+ -40
+ -44
+ -48
+ -52
+ -56
+ -60
+ -64
+ -72
+ -80
+ -88
+ -96
+ -104
+ -112
+ -120
+ -128
+ -144
+ -160
+ -176
+ -192
+ -208
+ -224
+ -240
+ -inf
+ -inf
+ -inf
+ -inf
+ -inf
+ -inf
+ -inf
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 16
+ 0.5
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 16
+ 0.625
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 14
+ 0.625
+ 1.25
+ 1.75
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 14
+ 0.75
+ 1.25
+ 1.75
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 12
+ 0.75
+ 1.25
+ 1.75
+ 2.5
+ 3
+ 3.5
+ 4
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 12
+ 0.875
+ 1.25
+ 1.75
+ 2.5
+ 3
+ 3.5
+ 4
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 10
+ 0.875
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 10
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+
+
+
+
+
+ 16
+ 0.5
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 16
+ 0.625
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 14
+ 0.625
+ 1.25
+ 1.75
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 14
+ 0.75
+ 1.25
+ 1.75
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 12
+ 0.75
+ 1.25
+ 1.75
+ 2.5
+ 3
+ 3.5
+ 4
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 12
+ 0.875
+ 1.25
+ 1.75
+ 2.5
+ 3
+ 3.5
+ 4
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 10
+ 0.875
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+ 10
+ 1
+ 1.5
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 4
+ 5
+ 5
+ 6
+ 6
+ 7
+ 7
+ 8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1.52588e-05
+ 3.05176e-05
+ 4.57764e-05
+ 6.10352e-05
+ 7.62939e-05
+ 9.15527e-05
+ 0.000106812
+ 0.00012207
+ 0.000152588
+ 0.000183105
+ 0.000213623
+ 0.000244141
+ 0.000305176
+ 0.000366211
+ 0.000427246
+ 0.000488281
+ 0.000610352
+ 0.000732422
+ 0.000854492
+ 0.000976562
+ 0.0012207
+ 0.00146484
+ 0.00170898
+ 0.00195312
+ 0.00244141
+ 0.00292969
+ 0.00341797
+ 0.00390625
+ 0.00488281
+ 0.00585938
+ 0.00683594
+ 0.0078125
+ 0.00976562
+ 0.0117188
+ 0.0136719
+ 0.015625
+ 0.0195312
+ 0.0234375
+ 0.0273438
+ 0.03125
+ 0.0390625
+ 0.046875
+ 0.0546875
+ 0.0625
+ 0.078125
+ 0.09375
+ 0.109375
+ 0.125
+ 0.15625
+ 0.1875
+ 0.21875
+ 0.25
+ 0.3125
+ 0.375
+ 0.4375
+ 0.5
+ 0.625
+ 0.75
+ 0.875
+ 1
+ 1.25
+ 1.5
+ 1.75
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 6
+ 7
+ 8
+ 10
+ 12
+ 14
+ 16
+ 20
+ 24
+ 28
+ 32
+ 40
+ 48
+ 56
+ 64
+ 80
+ 96
+ 112
+ 128
+ 160
+ 192
+ 224
+ 256
+ 320
+ 384
+ 448
+ 512
+ 640
+ 768
+ 896
+ 1024
+ 1280
+ 1536
+ 1792
+ 2048
+ 2560
+ 3072
+ 3584
+ 4096
+ 5120
+ 6144
+ 7168
+ 8192
+ 10240
+ 12288
+ 14336
+ 16384
+ 20480
+ 24576
+ 28672
+ 32768
+ 40960
+ 49152
+ 57344
+ inf
+ nan
+ nan
+ nan
+ -0
+ -1.52588e-05
+ -3.05176e-05
+ -4.57764e-05
+ -6.10352e-05
+ -7.62939e-05
+ -9.15527e-05
+ -0.000106812
+ -0.00012207
+ -0.000152588
+ -0.000183105
+ -0.000213623
+ -0.000244141
+ -0.000305176
+ -0.000366211
+ -0.000427246
+ -0.000488281
+ -0.000610352
+ -0.000732422
+ -0.000854492
+ -0.000976562
+ -0.0012207
+ -0.00146484
+ -0.00170898
+ -0.00195312
+ -0.00244141
+ -0.00292969
+ -0.00341797
+ -0.00390625
+ -0.00488281
+ -0.00585938
+ -0.00683594
+ -0.0078125
+ -0.00976562
+ -0.0117188
+ -0.0136719
+ -0.015625
+ -0.0195312
+ -0.0234375
+ -0.0273438
+ -0.03125
+ -0.0390625
+ -0.046875
+ -0.0546875
+ -0.0625
+ -0.078125
+ -0.09375
+ -0.109375
+ -0.125
+ -0.15625
+ -0.1875
+ -0.21875
+ -0.25
+ -0.3125
+ -0.375
+ -0.4375
+ -0.5
+ -0.625
+ -0.75
+ -0.875
+ -1
+ -1.25
+ -1.5
+ -1.75
+ -2
+ -2.5
+ -3
+ -3.5
+ -4
+ -5
+ -6
+ -7
+ -8
+ -10
+ -12
+ -14
+ -16
+ -20
+ -24
+ -28
+ -32
+ -40
+ -48
+ -56
+ -64
+ -80
+ -96
+ -112
+ -128
+ -160
+ -192
+ -224
+ -256
+ -320
+ -384
+ -448
+ -512
+ -640
+ -768
+ -896
+ -1024
+ -1280
+ -1536
+ -1792
+ -2048
+ -2560
+ -3072
+ -3584
+ -4096
+ -5120
+ -6144
+ -7168
+ -8192
+ -10240
+ -12288
+ -14336
+ -16384
+ -20480
+ -24576
+ -28672
+ -32768
+ -40960
+ -49152
+ -57344
+ -inf
+ -nan
+ -nan
+ -nan
+
+
+
+
+
+ 0
+ 1.52588e-05
+ 3.05176e-05
+ 4.57764e-05
+ 6.10352e-05
+ 7.62939e-05
+ 9.15527e-05
+ 0.000106812
+ 0.00012207
+ 0.000152588
+ 0.000183105
+ 0.000213623
+ 0.000244141
+ 0.000305176
+ 0.000366211
+ 0.000427246
+ 0.000488281
+ 0.000610352
+ 0.000732422
+ 0.000854492
+ 0.000976562
+ 0.0012207
+ 0.00146484
+ 0.00170898
+ 0.00195312
+ 0.00244141
+ 0.00292969
+ 0.00341797
+ 0.00390625
+ 0.00488281
+ 0.00585938
+ 0.00683594
+ 0.0078125
+ 0.00976562
+ 0.0117188
+ 0.0136719
+ 0.015625
+ 0.0195312
+ 0.0234375
+ 0.0273438
+ 0.03125
+ 0.0390625
+ 0.046875
+ 0.0546875
+ 0.0625
+ 0.078125
+ 0.09375
+ 0.109375
+ 0.125
+ 0.15625
+ 0.1875
+ 0.21875
+ 0.25
+ 0.3125
+ 0.375
+ 0.4375
+ 0.5
+ 0.625
+ 0.75
+ 0.875
+ 1
+ 1.25
+ 1.5
+ 1.75
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 6
+ 7
+ 8
+ 10
+ 12
+ 14
+ 16
+ 20
+ 24
+ 28
+ 32
+ 40
+ 48
+ 56
+ 64
+ 80
+ 96
+ 112
+ 128
+ 160
+ 192
+ 224
+ 256
+ 320
+ 384
+ 448
+ 512
+ 640
+ 768
+ 896
+ 1024
+ 1280
+ 1536
+ 1792
+ 2048
+ 2560
+ 3072
+ 3584
+ 4096
+ 5120
+ 6144
+ 7168
+ 8192
+ 10240
+ 12288
+ 14336
+ 16384
+ 20480
+ 24576
+ 28672
+ 32768
+ 40960
+ 49152
+ 57344
+ inf
+ nan
+ nan
+ nan
+ -0
+ -1.52588e-05
+ -3.05176e-05
+ -4.57764e-05
+ -6.10352e-05
+ -7.62939e-05
+ -9.15527e-05
+ -0.000106812
+ -0.00012207
+ -0.000152588
+ -0.000183105
+ -0.000213623
+ -0.000244141
+ -0.000305176
+ -0.000366211
+ -0.000427246
+ -0.000488281
+ -0.000610352
+ -0.000732422
+ -0.000854492
+ -0.000976562
+ -0.0012207
+ -0.00146484
+ -0.00170898
+ -0.00195312
+ -0.00244141
+ -0.00292969
+ -0.00341797
+ -0.00390625
+ -0.00488281
+ -0.00585938
+ -0.00683594
+ -0.0078125
+ -0.00976562
+ -0.0117188
+ -0.0136719
+ -0.015625
+ -0.0195312
+ -0.0234375
+ -0.0273438
+ -0.03125
+ -0.0390625
+ -0.046875
+ -0.0546875
+ -0.0625
+ -0.078125
+ -0.09375
+ -0.109375
+ -0.125
+ -0.15625
+ -0.1875
+ -0.21875
+ -0.25
+ -0.3125
+ -0.375
+ -0.4375
+ -0.5
+ -0.625
+ -0.75
+ -0.875
+ -1
+ -1.25
+ -1.5
+ -1.75
+ -2
+ -2.5
+ -3
+ -3.5
+ -4
+ -5
+ -6
+ -7
+ -8
+ -10
+ -12
+ -14
+ -16
+ -20
+ -24
+ -28
+ -32
+ -40
+ -48
+ -56
+ -64
+ -80
+ -96
+ -112
+ -128
+ -160
+ -192
+ -224
+ -256
+ -320
+ -384
+ -448
+ -512
+ -640
+ -768
+ -896
+ -1024
+ -1280
+ -1536
+ -1792
+ -2048
+ -2560
+ -3072
+ -3584
+ -4096
+ -5120
+ -6144
+ -7168
+ -8192
+ -10240
+ -12288
+ -14336
+ -16384
+ -20480
+ -24576
+ -28672
+ -32768
+ -40960
+ -49152
+ -57344
+ -inf
+ -nan
+ -nan
+ -nan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1.52588e-05
+ 1.52588e-05
+ 4.57764e-05
+ 3.05176e-05
+ 7.62939e-05
+ 9.15527e-05
+ 0.000106812
+ 0.00012207
+ 0.000152588
+ 0.000183105
+ 0.000213623
+ 0.000244141
+ 0.000305176
+ 0.000366211
+ 0.000427246
+ 0.000488281
+ 0.000610352
+ 0.000732422
+ 0.000854492
+ 0.000976562
+ 0.0012207
+ 0.00146484
+ 0.00170898
+ 0.00195312
+ 0.00244141
+ 0.00292969
+ 0.00341797
+ 0.00390625
+ 0.00488281
+ 0.00585938
+ 0.00683594
+ 0.0078125
+ 0.00976562
+ 0.0117188
+ 0.0136719
+ 0.015625
+ 0.0195312
+ 0.0234375
+ 0.0273438
+ 0.03125
+ 0.0390625
+ 0.046875
+ 0.0546875
+ 0.0625
+ 0.078125
+ 0.09375
+ 0.109375
+ 0.125
+ 0.15625
+ 0.1875
+ 0.21875
+ 0.25
+ 0.3125
+ 0.375
+ 0.4375
+ 0.5
+ 0.625
+ 0.75
+ 0.875
+ 1
+ 1.25
+ 1.5
+ 1.75
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 6
+ 7
+ 8
+ 10
+ 12
+ 14
+ 16
+ 20
+ 24
+ 28
+ 32
+ 40
+ 48
+ 56
+ 64
+ 80
+ 96
+ 112
+ 128
+ 160
+ 192
+ 224
+ 256
+ 320
+ 384
+ 448
+ 512
+ 640
+ 768
+ 896
+ 1024
+ 1280
+ 1536
+ 1792
+ 2048
+ 2560
+ 3072
+ 3584
+ 4096
+ 5120
+ 6144
+ 7168
+ 8192
+ 10240
+ 12288
+ 14336
+ 16384
+ 20480
+ 24576
+ 28672
+ 32768
+ 40960
+ 49152
+ 57344
+ inf
+ 0
+ 0
+ 0
+ -0
+ -1.52588e-05
+ -1.52588e-05
+ -4.57764e-05
+ -3.05176e-05
+ -7.62939e-05
+ -9.15527e-05
+ -0.000106812
+ -0.00012207
+ -0.000152588
+ -0.000183105
+ -0.000213623
+ -0.000244141
+ -0.000305176
+ -0.000366211
+ -0.000427246
+ -0.000488281
+ -0.000610352
+ -0.000732422
+ -0.000854492
+ -0.000976562
+ -0.0012207
+ -0.00146484
+ -0.00170898
+ -0.00195312
+ -0.00244141
+ -0.00292969
+ -0.00341797
+ -0.00390625
+ -0.00488281
+ -0.00585938
+ -0.00683594
+ -0.0078125
+ -0.00976562
+ -0.0117188
+ -0.0136719
+ -0.015625
+ -0.0195312
+ -0.0234375
+ -0.0273438
+ -0.03125
+ -0.0390625
+ -0.046875
+ -0.0546875
+ -0.0625
+ -0.078125
+ -0.09375
+ -0.109375
+ -0.125
+ -0.15625
+ -0.1875
+ -0.21875
+ -0.25
+ -0.3125
+ -0.375
+ -0.4375
+ -0.5
+ -0.625
+ -0.75
+ -0.875
+ -1
+ -1.25
+ -1.5
+ -1.75
+ -2
+ -2.5
+ -3
+ -3.5
+ -4
+ -5
+ -6
+ -7
+ -8
+ -10
+ -12
+ -14
+ -16
+ -20
+ -24
+ -28
+ -32
+ -40
+ -48
+ -56
+ -64
+ -80
+ -96
+ -112
+ -128
+ -160
+ -192
+ -224
+ -256
+ -320
+ -384
+ -448
+ -512
+ -640
+ -768
+ -896
+ -1024
+ -1280
+ -1536
+ -1792
+ -2048
+ -2560
+ -3072
+ -3584
+ -4096
+ -5120
+ -6144
+ -7168
+ -8192
+ -10240
+ -12288
+ -14336
+ -16384
+ -20480
+ -24576
+ -28672
+ -32768
+ -40960
+ -49152
+ -57344
+ -inf
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 1.52588e-05
+ 1.52588e-05
+ 4.57764e-05
+ 3.05176e-05
+ 7.62939e-05
+ 9.15527e-05
+ 0.000106812
+ 0.00012207
+ 0.000152588
+ 0.000183105
+ 0.000213623
+ 0.000244141
+ 0.000305176
+ 0.000366211
+ 0.000427246
+ 0.000488281
+ 0.000610352
+ 0.000732422
+ 0.000854492
+ 0.000976562
+ 0.0012207
+ 0.00146484
+ 0.00170898
+ 0.00195312
+ 0.00244141
+ 0.00292969
+ 0.00341797
+ 0.00390625
+ 0.00488281
+ 0.00585938
+ 0.00683594
+ 0.0078125
+ 0.00976562
+ 0.0117188
+ 0.0136719
+ 0.015625
+ 0.0195312
+ 0.0234375
+ 0.0273438
+ 0.03125
+ 0.0390625
+ 0.046875
+ 0.0546875
+ 0.0625
+ 0.078125
+ 0.09375
+ 0.109375
+ 0.125
+ 0.15625
+ 0.1875
+ 0.21875
+ 0.25
+ 0.3125
+ 0.375
+ 0.4375
+ 0.5
+ 0.625
+ 0.75
+ 0.875
+ 1
+ 1.25
+ 1.5
+ 1.75
+ 2
+ 2.5
+ 3
+ 3.5
+ 4
+ 5
+ 6
+ 7
+ 8
+ 10
+ 12
+ 14
+ 16
+ 20
+ 24
+ 28
+ 32
+ 40
+ 48
+ 56
+ 64
+ 80
+ 96
+ 112
+ 128
+ 160
+ 192
+ 224
+ 256
+ 320
+ 384
+ 448
+ 512
+ 640
+ 768
+ 896
+ 1024
+ 1280
+ 1536
+ 1792
+ 2048
+ 2560
+ 3072
+ 3584
+ 4096
+ 5120
+ 6144
+ 7168
+ 8192
+ 10240
+ 12288
+ 14336
+ 16384
+ 20480
+ 24576
+ 28672
+ 32768
+ 40960
+ 49152
+ 57344
+ inf
+ 0
+ 0
+ 0
+ -0
+ -1.52588e-05
+ -1.52588e-05
+ -4.57764e-05
+ -3.05176e-05
+ -7.62939e-05
+ -9.15527e-05
+ -0.000106812
+ -0.00012207
+ -0.000152588
+ -0.000183105
+ -0.000213623
+ -0.000244141
+ -0.000305176
+ -0.000366211
+ -0.000427246
+ -0.000488281
+ -0.000610352
+ -0.000732422
+ -0.000854492
+ -0.000976562
+ -0.0012207
+ -0.00146484
+ -0.00170898
+ -0.00195312
+ -0.00244141
+ -0.00292969
+ -0.00341797
+ -0.00390625
+ -0.00488281
+ -0.00585938
+ -0.00683594
+ -0.0078125
+ -0.00976562
+ -0.0117188
+ -0.0136719
+ -0.015625
+ -0.0195312
+ -0.0234375
+ -0.0273438
+ -0.03125
+ -0.0390625
+ -0.046875
+ -0.0546875
+ -0.0625
+ -0.078125
+ -0.09375
+ -0.109375
+ -0.125
+ -0.15625
+ -0.1875
+ -0.21875
+ -0.25
+ -0.3125
+ -0.375
+ -0.4375
+ -0.5
+ -0.625
+ -0.75
+ -0.875
+ -1
+ -1.25
+ -1.5
+ -1.75
+ -2
+ -2.5
+ -3
+ -3.5
+ -4
+ -5
+ -6
+ -7
+ -8
+ -10
+ -12
+ -14
+ -16
+ -20
+ -24
+ -28
+ -32
+ -40
+ -48
+ -56
+ -64
+ -80
+ -96
+ -112
+ -128
+ -160
+ -192
+ -224
+ -256
+ -320
+ -384
+ -448
+ -512
+ -640
+ -768
+ -896
+ -1024
+ -1280
+ -1536
+ -1792
+ -2048
+ -2560
+ -3072
+ -3584
+ -4096
+ -5120
+ -6144
+ -7168
+ -8192
+ -10240
+ -12288
+ -14336
+ -16384
+ -20480
+ -24576
+ -28672
+ -32768
+ -40960
+ -49152
+ -57344
+ -inf
+ 0
+ 0
+ 0
+
+
+
+
+
diff --git a/tools/test/h5dump/h5dumpgentest.c b/tools/test/h5dump/h5dumpgentest.c
index 3e80b66f518..3202c37727b 100644
--- a/tools/test/h5dump/h5dumpgentest.c
+++ b/tools/test/h5dump/h5dumpgentest.c
@@ -130,6 +130,7 @@
#define FILE106 "trefer_param.h5"
#define FILE107 "trefer_reg.h5"
#define FILE108 "trefer_reg_1d.h5"
+#define FILE109 "tfloat8.h5"
#define ONION_TEST_FIXNAME_SIZE 1024
#define ONION_TEST_PAGE_SIZE (uint32_t)32
@@ -449,6 +450,94 @@ typedef struct s1_t {
/* "FILE101" macros */
#define F101_DSET "AHFINDERDIRECT::ah_centroid_t[0] it=0 tl=0"
+/* "FILE109" macros */
+#define F109_XDIM 8
+#define F109_YDIM 16
+#define F109_DATASET "DS8BITSE4M3"
+#define F109_DATASET2 "DS8BITSE5M2"
+#define F109_DATASET3 "DS8BITSE4M3_ALLVALS"
+#define F109_DATASET4 "DS8BITSE5M2_ALLVALS"
+#define F109_DATASET5 "DS8BITSE4M3_ALLVALS_CONVERT"
+#define F109_DATASET6 "DS8BITSE5M2_ALLVALS_CONVERT"
+
+/* Since there are only 256 FP8 values, it's simple enough to
+ * list them all here for reference when checking to make sure
+ * the datatypes are represented correctly.
+ */
+static float fp8_e4m3_vals[256] = {
+ 0.0f, 0.001953f, 0.003906f, 0.005859f, 0.007812f, 0.009766f, 0.01172f, 0.01367f, 0.01562f,
+ 0.01758f, 0.01953f, 0.02148f, 0.02344f, 0.02539f, 0.02734f, 0.0293f, 0.03125f, 0.03516f,
+ 0.03906f, 0.04297f, 0.04688f, 0.05078f, 0.05469f, 0.05859f, 0.0625f, 0.07031f, 0.07812f,
+ 0.08594f, 0.09375f, 0.1016f, 0.1094f, 0.1172f, 0.125f, 0.1406f, 0.1562f, 0.1719f,
+ 0.1875f, 0.2031f, 0.2188f, 0.2344f, 0.25f, 0.2812f, 0.3125f, 0.3438f, 0.375f,
+ 0.4062f, 0.4375f, 0.4688f, 0.5f, 0.5625f, 0.625f, 0.6875f, 0.75f, 0.8125f,
+ 0.875f, 0.9375f, 1.0f, 1.125f, 1.25f, 1.375f, 1.5f, 1.625f, 1.75f,
+ 1.875f, 2.0f, 2.25f, 2.5f, 2.75f, 3.0f, 3.25f, 3.5f, 3.75f,
+ 4.0f, 4.5f, 5.0f, 5.5f, 6.0f, 6.5f, 7.0f, 7.5f, 8.0f,
+ 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 18.0f,
+ 20.0f, 22.0f, 24.0f, 26.0f, 28.0f, 30.0f, 32.0f, 36.0f, 40.0f,
+ 44.0f, 48.0f, 52.0f, 56.0f, 60.0f, 64.0f, 72.0f, 80.0f, 88.0f,
+ 96.0f, 104.0f, 112.0f, 120.0f, 128.0f, 144.0f, 160.0f, 176.0f, 192.0f,
+ 208.0f, 224.0f, 240.0f, 256.0f, 288.0f, 320.0f, 352.0f, 384.0f, 416.0f,
+ 448.0f, 0.0f, /* 1 NaN value, ignore with 0.0f */
+ -0.0f, -0.001953f, -0.003906f, -0.005859f, -0.007812f, -0.009766f, -0.01172f, -0.01367f, -0.01562f,
+ -0.01758f, -0.01953f, -0.02148f, -0.02344f, -0.02539f, -0.02734f, -0.0293f, -0.03125f, -0.03516f,
+ -0.03906f, -0.04297f, -0.04688f, -0.05078f, -0.05469f, -0.05859f, -0.0625f, -0.07031f, -0.07812f,
+ -0.08594f, -0.09375f, -0.1016f, -0.1094f, -0.1172f, -0.125f, -0.1406f, -0.1562f, -0.1719f,
+ -0.1875f, -0.2031f, -0.2188f, -0.2344f, -0.25f, -0.2812f, -0.3125f, -0.3438f, -0.375f,
+ -0.4062f, -0.4375f, -0.4688f, -0.5f, -0.5625f, -0.625f, -0.6875f, -0.75f, -0.8125f,
+ -0.875f, -0.9375f, -1.0f, -1.125f, -1.25f, -1.375f, -1.5f, -1.625f, -1.75f,
+ -1.875f, -2.0f, -2.25f, -2.5f, -2.75f, -3.0f, -3.25f, -3.5f, -3.75f,
+ -4.0f, -4.5f, -5.0f, -5.5f, -6.0f, -6.5f, -7.0f, -7.5f, -8.0f,
+ -9.0f, -10.0f, -11.0f, -12.0f, -13.0f, -14.0f, -15.0f, -16.0f, -18.0f,
+ -20.0f, -22.0f, -24.0f, -26.0f, -28.0f, -30.0f, -32.0f, -36.0f, -40.0f,
+ -44.0f, -48.0f, -52.0f, -56.0f, -60.0f, -64.0f, -72.0f, -80.0f, -88.0f,
+ -96.0f, -104.0f, -112.0f, -120.0f, -128.0f, -144.0f, -160.0f, -176.0f, -192.0f,
+ -208.0f, -224.0f, -240.0f, -256.0f, -288.0f, -320.0f, -352.0f, -384.0f, -416.0f,
+ -448.0f, 0.0f /* 1 NaN value, ignore with 0.0f */
+};
+
+static float fp8_e5m2_vals[256] = {
+ 0.0f, 0.0000153f, 0.0000305f, 0.0000458f, 0.000061f, 0.0000763f, 0.0000916f,
+ 0.0001068f, 0.0001221f, 0.0001526f, 0.0001831f, 0.0002136f, 0.0002441f, 0.0003052f,
+ 0.0003662f, 0.0004272f, 0.0004883f, 0.0006104f, 0.0007324f, 0.0008545f, 0.0009766f,
+ 0.001221f, 0.001465f, 0.001709f, 0.001953f, 0.002441f, 0.00293f, 0.003418f,
+ 0.003906f, 0.004883f, 0.005859f, 0.006836f, 0.007812f, 0.009766f, 0.01172f,
+ 0.01367f, 0.01562f, 0.01953f, 0.02344f, 0.02734f, 0.03125f, 0.03906f,
+ 0.04688f, 0.05469f, 0.0625f, 0.07812f, 0.09375f, 0.1094f, 0.125f,
+ 0.1562f, 0.1875f, 0.2188f, 0.25f, 0.3125f, 0.375f, 0.4375f,
+ 0.5f, 0.625f, 0.75f, 0.875f, 1.0f, 1.25f, 1.5f,
+ 1.75f, 2.0f, 2.5f, 3.0f, 3.5f, 4.0f, 5.0f,
+ 6.0f, 7.0f, 8.0f, 10.0f, 12.0f, 14.0f, 16.0f,
+ 20.0f, 24.0f, 28.0f, 32.0f, 40.0f, 48.0f, 56.0f,
+ 64.0f, 80.0f, 96.0f, 112.0f, 128.0f, 160.0f, 192.0f,
+ 224.0f, 256.0f, 320.0f, 384.0f, 448.0f, 512.0f, 640.0f,
+ 768.0f, 896.0f, 1024.0f, 1280.0f, 1536.0f, 1792.0f, 2048.0f,
+ 2560.0f, 3072.0f, 3584.0f, 4096.0f, 5120.0f, 6144.0f, 7168.0f,
+ 8192.0f, 10240.0f, 12288.0f, 14336.0f, 16384.0f, 20480.0f, 24576.0f,
+ 28672.0f, 32768.0f, 40960.0f, 49152.0f, 57344.0f, INFINITY, 0.0f,
+ 0.0f, 0.0f, /* 3 NaN values, ignore with 0.0f */
+ -0.0f, -0.0000153f, -0.0000305f, -0.0000458f, -0.000061f, -0.0000763f, -0.0000916f,
+ -0.0001068f, -0.0001221f, -0.0001526f, -0.0001831f, -0.0002136f, -0.0002441f, -0.0003052f,
+ -0.0003662f, -0.0004272f, -0.0004883f, -0.0006104f, -0.0007324f, -0.0008545f, -0.0009766f,
+ -0.001221f, -0.001465f, -0.001709f, -0.001953f, -0.002441f, -0.00293f, -0.003418f,
+ -0.003906f, -0.004883f, -0.005859f, -0.006836f, -0.007812f, -0.009766f, -0.01172f,
+ -0.01367f, -0.01562f, -0.01953f, -0.02344f, -0.02734f, -0.03125f, -0.03906f,
+ -0.04688f, -0.05469f, -0.0625f, -0.07812f, -0.09375f, -0.1094f, -0.125f,
+ -0.1562f, -0.1875f, -0.2188f, -0.25f, -0.3125f, -0.375f, -0.4375f,
+ -0.5f, -0.625f, -0.75f, -0.875f, -1.0f, -1.25f, -1.5f,
+ -1.75f, -2.0f, -2.5f, -3.0f, -3.5f, -4.0f, -5.0f,
+ -6.0f, -7.0f, -8.0f, -10.0f, -12.0f, -14.0f, -16.0f,
+ -20.0f, -24.0f, -28.0f, -32.0f, -40.0f, -48.0f, -56.0f,
+ -64.0f, -80.0f, -96.0f, -112.0f, -128.0f, -160.0f, -192.0f,
+ -224.0f, -256.0f, -320.0f, -384.0f, -448.0f, -512.0f, -640.0f,
+ -768.0f, -896.0f, -1024.0f, -1280.0f, -1536.0f, -1792.0f, -2048.0f,
+ -2560.0f, -3072.0f, -3584.0f, -4096.0f, -5120.0f, -6144.0f, -7168.0f,
+ -8192.0f, -10240.0f, -12288.0f, -14336.0f, -16384.0f, -20480.0f, -24576.0f,
+ -28672.0f, -32768.0f, -40960.0f, -49152.0f, -57344.0f, -INFINITY, 0.0f,
+ 0.0f, 0.0f /* 3 NaN values, ignore with 0.0f */
+};
+
void
gent_group(void)
{
@@ -13579,6 +13668,224 @@ gent_trefer_reg_1d(void)
return;
}
+void
+gent_float8(void)
+{
+ hsize_t dims[2], adims[1];
+ hid_t fid = H5I_INVALID_HID;
+ hid_t attr = H5I_INVALID_HID;
+ hid_t dataset = H5I_INVALID_HID;
+ hid_t space = H5I_INVALID_HID;
+ hid_t aspace = H5I_INVALID_HID;
+
+ /*
+ * Just use float as the in-memory type for the standard
+ * datasets for now, until wide support for a native FP8
+ * type is available. Note that this will cause several of
+ * the values to be rounded by the library's datatype
+ * conversion process due to the mantissa size of float
+ * being larger than that of the FP8 types. But this is not
+ * particularly interesting test data anyway and is mostly
+ * just meant to check that something is not very obviously
+ * wrong with the data after float values which can't be
+ * represented in FP8 are converted into values that can
+ * be. The more interesting parts of the file generated
+ * here are whether or not the datatype displays correctly
+ * and whether the datasets which contain all the possible
+ * FP8 values display correctly. Other tests ensure that the
+ * FP8 types are in the correct format.
+ */
+ struct {
+ float arr[F109_XDIM][F109_YDIM];
+ } *dset8;
+
+ float *aset8 = NULL;
+ float val;
+
+ uint8_t all_vals_buf[256];
+
+ dset8 = malloc(sizeof(*dset8));
+
+ aset8 = calloc(F109_XDIM * F109_YDIM, sizeof(float));
+
+ fid = H5Fcreate(FILE109, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ dims[0] = F109_XDIM;
+ dims[1] = F109_YDIM;
+ space = H5Screate_simple(2, dims, NULL);
+
+ adims[0] = F109_XDIM * F109_YDIM;
+ aspace = H5Screate_simple(1, adims, NULL);
+
+ val = (float)F109_YDIM;
+ for (size_t i = 0; i < dims[0]; i++) {
+ dset8->arr[i][0] = val;
+ aset8[i * dims[1]] = dset8->arr[i][0];
+
+ for (size_t j = 1; j < dims[1]; j++) {
+ dset8->arr[i][j] = (float)(j * dims[0] + i) / (float)F109_YDIM;
+ aset8[i * dims[1] + j] = dset8->arr[i][j];
+ }
+
+ val -= (float)1;
+ }
+
+ /* Populate all_vals_buf with every FP8 number. Note
+ * that uint8_t is used for the buffer here since we
+ * don't currently have support for an FP8 type to
+ * use and there are currently conversion issues when
+ * converting larger types to the FP8 types. Writing
+ * a uint8_t buffer allows bypassing the datatype
+ * conversion process.
+ */
+ all_vals_buf[0] = 0;
+ for (size_t i = 1; i < 256; i++)
+ all_vals_buf[i] = all_vals_buf[i - 1] + 1;
+
+ /* Dataset of 8-bit FP8 E4M3 */
+ dataset = H5Dcreate2(fid, F109_DATASET, H5T_FLOAT_F8E4M3, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset8);
+
+ /* Attribute of 8-bit FP8 E4M3 */
+ attr = H5Acreate2(dataset, F109_DATASET, H5T_FLOAT_F8E4M3, aspace, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Awrite(attr, H5T_NATIVE_FLOAT, aset8);
+
+ H5Aclose(attr);
+ H5Dclose(dataset);
+
+ /* Dataset of 8-bit FP8 E5M2 */
+ dataset = H5Dcreate2(fid, F109_DATASET2, H5T_FLOAT_F8E5M2, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset8);
+
+ /* Attribute of 8-bit FP8 E5M2 */
+ attr = H5Acreate2(dataset, F109_DATASET2, H5T_FLOAT_F8E5M2, aspace, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Awrite(attr, H5T_NATIVE_FLOAT, aset8);
+
+ H5Aclose(attr);
+ H5Dclose(dataset);
+ H5Sclose(aspace);
+ H5Sclose(space);
+
+ dims[0] = 16;
+ dims[1] = 16;
+ space = H5Screate_simple(2, dims, NULL);
+
+ adims[0] = 256;
+ aspace = H5Screate_simple(1, adims, NULL);
+
+ /* Dataset of 8-bit FP8 E4M3 with all values written without datatype conversion.
+ * This dataset will have the correct data in the file, but will currently display
+ * incorrectly. The library converts the data into a native type, either float16 or
+ * float, on read, but the E4M3 format doesn't follow the IEEE standard. This causes
+ * the library to interpret certain values as infinities or NaNs when the format has
+ * no infinities and only one NaN.
+ */
+ dataset = H5Dcreate2(fid, F109_DATASET3, H5T_FLOAT_F8E4M3, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Dwrite(dataset, H5T_FLOAT_F8E4M3, H5S_ALL, H5S_ALL, H5P_DEFAULT, all_vals_buf);
+
+ /* Attribute of 8-bit FP8 E4M3 with all values written without datatype conversion.
+ * This attribute will have the correct data in the file, but will currently display
+ * incorrectly. The library converts the data into a native type, either float16 or
+ * float, on read, but the E4M3 format doesn't follow the IEEE standard. This causes
+ * the library to interpret certain values as infinities or NaNs when the format has
+ * no infinities and only one NaN.
+ */
+ attr = H5Acreate2(dataset, F109_DATASET3, H5T_FLOAT_F8E4M3, aspace, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Awrite(attr, H5T_FLOAT_F8E4M3, all_vals_buf);
+
+ H5Aclose(attr);
+ H5Dclose(dataset);
+
+ /* Dataset of 8-bit FP8 E5M2 with all values written without datatype conversion.
+ * This dataset will have the correct data in the file and should display correctly.
+ */
+ dataset = H5Dcreate2(fid, F109_DATASET4, H5T_FLOAT_F8E5M2, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Dwrite(dataset, H5T_FLOAT_F8E5M2, H5S_ALL, H5S_ALL, H5P_DEFAULT, all_vals_buf);
+
+ /* Attribute of 8-bit FP8 E5M2 with all values written without datatype conversion.
+ * This attribute will have the correct data in the file and should display correctly.
+ */
+ attr = H5Acreate2(dataset, F109_DATASET4, H5T_FLOAT_F8E5M2, aspace, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Awrite(attr, H5T_FLOAT_F8E5M2, all_vals_buf);
+
+ H5Aclose(attr);
+ H5Dclose(dataset);
+
+ /* Dataset of 8-bit FP8 E4M3 with all values written with datatype conversion from
+ * float. This dataset will currently have incorrect data in the file. Some of the
+ * smaller values appear to be incorrectly rounded by the library, while some of the
+ * larger values get converted to infinities by the datatype conversion process due
+ * to the fact that the E4M3 format doesn't follow the IEEE standard. While bit
+ * patterns that have all exponent bits set are normal values in the E4M3 format
+ * (other than the two NaN values S1111111), these are interpreted by the library as
+ * infinities according to the IEEE standard and are converted into infinities in the
+ * file.
+ */
+ dataset = H5Dcreate2(fid, F109_DATASET5, H5T_FLOAT_F8E4M3, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, fp8_e4m3_vals);
+
+ /* Attribute of 8-bit FP8 E4M3 with all values written with datatype conversion from
+ * float. This attribute will currently have incorrect data in the file. Some of the
+ * smaller values appear to be incorrectly rounded by the library, while some of the
+ * larger values get converted to infinities by the datatype conversion process due
+ * to the fact that the E4M3 format doesn't follow the IEEE standard. While bit
+ * patterns that have all exponent bits set are normal values in the E4M3 format
+ * (other than the two NaN values S1111111), these are interpreted by the library as
+ * infinities according to the IEEE standard and are converted into infinities in the
+ * file.
+ */
+ attr = H5Acreate2(dataset, F109_DATASET5, H5T_FLOAT_F8E4M3, aspace, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Awrite(attr, H5T_NATIVE_FLOAT, fp8_e4m3_vals);
+
+ H5Aclose(attr);
+ H5Dclose(dataset);
+
+ /* Dataset of 8-bit FP8 E5M2 with all values written with datatype conversion from
+ * float. This dataset will have nearly all values correct in the file. However, a
+ * few of the smaller values appear to be incorrectly rounded by the library, at
+ * least when converting from IEEE 32-bit float.
+ */
+ dataset = H5Dcreate2(fid, F109_DATASET6, H5T_FLOAT_F8E5M2, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, fp8_e5m2_vals);
+
+ /* Attribute of 8-bit FP8 E5M2 with all values written with datatype conversion from
+ * float. This attribute will have nearly all values correct in the file. However, a
+ * few of the smaller values appear to be incorrectly rounded by the library, at
+ * least when converting from IEEE 32-bit float.
+ */
+ attr = H5Acreate2(dataset, F109_DATASET6, H5T_FLOAT_F8E5M2, aspace, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Awrite(attr, H5T_NATIVE_FLOAT, fp8_e5m2_vals);
+
+ H5Aclose(attr);
+ H5Dclose(dataset);
+
+error:
+ free(aset8);
+ free(dset8);
+
+ H5E_BEGIN_TRY
+ {
+ H5Aclose(attr);
+ H5Sclose(aspace);
+ H5Sclose(space);
+ H5Dclose(dataset);
+ H5Fclose(fid);
+ }
+ H5E_END_TRY;
+}
+
/* For test_reference_external_generate() */
#define GROUPNAME "/group"
#define DSETNAME "/dset"
diff --git a/tools/test/h5dump/h5dumpgentest.h b/tools/test/h5dump/h5dumpgentest.h
index 6733100598b..9a178cbbe7d 100644
--- a/tools/test/h5dump/h5dumpgentest.h
+++ b/tools/test/h5dump/h5dumpgentest.h
@@ -128,6 +128,8 @@ void gent_complex_be(void);
void gent_bfloat16(void);
void gent_bfloat16_be(void);
+void gent_float8(void);
+
void gent_trefer_attr(void);
void gent_tattr4_be(void);
void gent_tno_subset(void);
diff --git a/tools/test/h5gentest.c b/tools/test/h5gentest.c
index 40ffa4f9719..ebdc44457a6 100644
--- a/tools/test/h5gentest.c
+++ b/tools/test/h5gentest.c
@@ -266,6 +266,8 @@ gen_h5dump_files(void)
gent_bfloat16();
gent_bfloat16_be();
+ gent_float8();
+
gent_trefer_attr();
gent_tattr4_be();
gent_tno_subset();
diff --git a/tools/test/h5ls/CMakeTests.cmake b/tools/test/h5ls/CMakeTests.cmake
index 68552a2cbb7..165ba653534 100644
--- a/tools/test/h5ls/CMakeTests.cmake
+++ b/tools/test/h5ls/CMakeTests.cmake
@@ -40,6 +40,7 @@ set (LIST_HDF5_TEST_FILES
textlink.h5
textlinksrc.h5
textlinktar.h5
+ tfloat8.h5
tfloat16.h5
tfloat16_be.h5
tgroup.h5
@@ -98,6 +99,7 @@ set (LIST_OTHER_TEST_FILES
textlinksrc-7-old.ls
textlinksrc-nodangle-1.ls
textlinksrc-nodangle-2.ls
+ tfloat8.ls
tfloat16.ls
tfloat16_nosupport.ls
tfloat16_be.ls
@@ -479,6 +481,9 @@ endif ()
ADD_H5_TEST (tbfloat16 RESULT_CODE 0 -w80 -v tbfloat16.h5)
ADD_H5_TEST (tbfloat16_be RESULT_CODE 0 -w80 -v tbfloat16_be.h5)
+# test for FP8 types
+ADD_H5_TEST (tfloat8 RESULT_CODE 0 -w80 -v tfloat8.h5)
+
# tests for complex numbers
if (${${HDF_PREFIX}_HAVE_COMPLEX_NUMBERS})
# If support is available for complex numbers, the second test
diff --git a/tools/test/h5ls/expected/tfloat8.ls b/tools/test/h5ls/expected/tfloat8.ls
new file mode 100644
index 00000000000..64aaac18489
--- /dev/null
+++ b/tools/test/h5ls/expected/tfloat8.ls
@@ -0,0 +1,43 @@
+Opened "tfloat8.h5" with sec2 driver.
+DS8BITSE4M3 Dataset {8/8, 16/16}
+ Attribute: DS8BITSE4M3 {128}
+ Type: FP8 E4M3 8-bit float
+ Location: 1:800
+ Links: 1
+ Storage: 128 logical bytes, 128 allocated bytes, 100.00% utilization
+ Type: FP8 E4M3 8-bit float
+DS8BITSE4M3_ALLVALS Dataset {16/16, 16/16}
+ Attribute: DS8BITSE4M3_ALLVALS {256}
+ Type: FP8 E4M3 8-bit float
+ Location: 1:4096
+ Links: 1
+ Storage: 256 logical bytes, 256 allocated bytes, 100.00% utilization
+ Type: FP8 E4M3 8-bit float
+DS8BITSE4M3_ALLVALS_CONVERT Dataset {16/16, 16/16}
+ Attribute: DS8BITSE4M3_ALLVALS_CONVERT {256}
+ Type: FP8 E4M3 8-bit float
+ Location: 1:5104
+ Links: 1
+ Storage: 256 logical bytes, 256 allocated bytes, 100.00% utilization
+ Type: FP8 E4M3 8-bit float
+DS8BITSE5M2 Dataset {8/8, 16/16}
+ Attribute: DS8BITSE5M2 {128}
+ Type: FP8 E5M2 8-bit float
+ Location: 1:1608
+ Links: 1
+ Storage: 128 logical bytes, 128 allocated bytes, 100.00% utilization
+ Type: FP8 E5M2 8-bit float
+DS8BITSE5M2_ALLVALS Dataset {16/16, 16/16}
+ Attribute: DS8BITSE5M2_ALLVALS {256}
+ Type: FP8 E5M2 8-bit float
+ Location: 1:4600
+ Links: 1
+ Storage: 256 logical bytes, 256 allocated bytes, 100.00% utilization
+ Type: FP8 E5M2 8-bit float
+DS8BITSE5M2_ALLVALS_CONVERT Dataset {16/16, 16/16}
+ Attribute: DS8BITSE5M2_ALLVALS_CONVERT {256}
+ Type: FP8 E5M2 8-bit float
+ Location: 1:5904
+ Links: 1
+ Storage: 256 logical bytes, 256 allocated bytes, 100.00% utilization
+ Type: FP8 E5M2 8-bit float
diff --git a/tools/test/testfiles/tfloat8.h5 b/tools/test/testfiles/tfloat8.h5
new file mode 100644
index 00000000000..43f1128c4bc
Binary files /dev/null and b/tools/test/testfiles/tfloat8.h5 differ