@@ -21,6 +21,7 @@ module ieee_arithmetic
21
21
ieee_away = > __builtin_ieee_away, &
22
22
ieee_down = > __builtin_ieee_down, &
23
23
ieee_fma = > __builtin_fma, &
24
+ ieee_int = > __builtin_ieee_int, &
24
25
ieee_is_nan = > __builtin_ieee_is_nan, &
25
26
ieee_is_negative = > __builtin_ieee_is_negative, &
26
27
ieee_is_normal = > __builtin_ieee_is_normal, &
@@ -29,6 +30,7 @@ module ieee_arithmetic
29
30
ieee_next_down = > __builtin_ieee_next_down, &
30
31
ieee_next_up = > __builtin_ieee_next_up, &
31
32
ieee_other = > __builtin_ieee_other, &
33
+ ieee_real = > __builtin_ieee_real, &
32
34
ieee_round_type = > __builtin_ieee_round_type, &
33
35
ieee_scalb = > scale, &
34
36
ieee_selected_real_kind = > __builtin_ieee_selected_real_kind, &
@@ -57,6 +59,7 @@ module ieee_arithmetic
57
59
public :: ieee_away
58
60
public :: ieee_down
59
61
public :: ieee_fma
62
+ public :: ieee_int
60
63
public :: ieee_is_nan
61
64
public :: ieee_is_negative
62
65
public :: ieee_is_normal
@@ -65,6 +68,7 @@ module ieee_arithmetic
65
68
public :: ieee_next_after
66
69
public :: ieee_next_down
67
70
public :: ieee_next_up
71
+ public :: ieee_real
68
72
public :: ieee_round_type
69
73
public :: ieee_scalb
70
74
public :: ieee_selected_real_kind
@@ -303,29 +307,6 @@ end subroutine ieee_get_underflow_mode_l##GKIND;
303
307
public :: ieee_get_underflow_mode
304
308
#undef IEEE_GET_UNDERFLOW_MODE_L
305
309
306
- ! When kind argument is present, kind(result) is value(kind), not kind(kind).
307
- ! That is not known here, so return integer(16).
308
- #define IEEE_INT_R(AKIND) \
309
- elemental integer function ieee_int_a##AKIND(a, round); \
310
- import ieee_round_type; \
311
- real (AKIND), intent (in ) :: a; \
312
- type (ieee_round_type), intent (in ) :: round; \
313
- end function ieee_int_a##AKIND;
314
- #define IEEE_INT_RI(AKIND, KKIND) \
315
- elemental integer (16 ) function ieee_int_a##AKIND##_i##KKIND(a, round, kind); \
316
- import ieee_round_type; \
317
- real (AKIND), intent (in ) :: a; \
318
- type (ieee_round_type), intent (in ) :: round; \
319
- integer (KKIND), intent (in ) :: kind; \
320
- end function ieee_int_a##AKIND##_i##KKIND;
321
- interface ieee_int
322
- SPECIFICS_R(IEEE_INT_R)
323
- SPECIFICS_RI(IEEE_INT_RI)
324
- end interface ieee_int
325
- public :: ieee_int
326
- #undef IEEE_INT_R
327
- #undef IEEE_INT_RI
328
-
329
310
#define IEEE_IS_FINITE_R(XKIND) \
330
311
elemental logical function ieee_is_finite_a##XKIND(x); \
331
312
real (XKIND), intent (in ) :: x; \
@@ -486,40 +467,6 @@ end function ieee_quiet_ne_a##AKIND;
486
467
public :: ieee_quiet_ne
487
468
#undef IEEE_QUIET_NE_R
488
469
489
- ! When kind argument is present, kind(result) is value(kind), not kind(kind).
490
- ! That is not known here, so return real(16).
491
- #define IEEE_REAL_I(AKIND) \
492
- elemental real function ieee_real_i##AKIND(a); \
493
- integer (AKIND), intent (in ) :: a; \
494
- end function ieee_real_i##AKIND;
495
- #define IEEE_REAL_R(AKIND) \
496
- elemental real function ieee_real_a##AKIND(a); \
497
- real (AKIND), intent (in ) :: a; \
498
- end function ieee_real_a##AKIND;
499
- #define IEEE_REAL_II(AKIND, KKIND) \
500
- elemental real (16 ) function ieee_real_i##AKIND##_i##KKIND(a, kind); \
501
- integer (AKIND), intent (in ) :: a; \
502
- integer (KKIND), intent (in ) :: kind; \
503
- end function ieee_real_i##AKIND##_i##KKIND;
504
- #define IEEE_REAL_RI(AKIND, KKIND) \
505
- elemental real (16 ) function ieee_real_a##AKIND##_i##KKIND(a, kind); \
506
- real (AKIND), intent (in ) :: a; \
507
- integer (KKIND), intent (in ) :: kind; \
508
- end function ieee_real_a##AKIND##_i##KKIND;
509
- interface ieee_real
510
- SPECIFICS_I(IEEE_REAL_I)
511
- SPECIFICS_R(IEEE_REAL_R)
512
- #if FLANG_SUPPORT_R16
513
- SPECIFICS_II(IEEE_REAL_II)
514
- SPECIFICS_RI(IEEE_REAL_RI)
515
- #endif
516
- end interface ieee_real
517
- public :: ieee_real
518
- #undef IEEE_REAL_I
519
- #undef IEEE_REAL_R
520
- #undef IEEE_REAL_II
521
- #undef IEEE_REAL_RI
522
-
523
470
#define IEEE_REM_RR(XKIND, YKIND) \
524
471
elemental real (XKIND) function ieee_rem_a##XKIND##_a##YKIND(x, y); \
525
472
real (XKIND), intent (in ) :: x; \
0 commit comments