make_generic ("loc", GFC_ISYM_LOC, GFC_STD_GNU);
- /* The next of intrinsic subprogram are the degree trigonometric functions.
- These were hidden behind the -fdec-math option, but are now simply
- included as extensions to the set of intrinsic subprograms. */
+ /* The degree trigonometric functions were added as part of the DEC
+ Fortran compatibility effort, and were hidden behind a -fdec-math
+ option. Fortran 2023 has added some of these functions to Fortran
+ standard as generic subprogram, e.g., acosd() is added while dacosd()
+ is not. So, update GFC_STD_GNU to GFC_STD_F2023 for the generic
+ functions. */
add_sym_1 ("acosd", GFC_ISYM_ACOSD, CLASS_ELEMENTAL, ACTUAL_YES,
- BT_REAL, dr, GFC_STD_GNU,
+ BT_REAL, dr, GFC_STD_F2023,
gfc_check_fn_r, gfc_simplify_acosd, gfc_resolve_trigd,
x, BT_REAL, dr, REQUIRED);
+ make_generic ("acosd", GFC_ISYM_ACOSD, GFC_STD_F2023);
+
add_sym_1 ("dacosd", GFC_ISYM_ACOSD, CLASS_ELEMENTAL, ACTUAL_YES,
BT_REAL, dd, GFC_STD_GNU,
gfc_check_fn_d, gfc_simplify_acosd, gfc_resolve_trigd,
x, BT_REAL, dd, REQUIRED);
- make_generic ("acosd", GFC_ISYM_ACOSD, GFC_STD_GNU);
-
add_sym_1 ("asind", GFC_ISYM_ASIND, CLASS_ELEMENTAL, ACTUAL_YES,
- BT_REAL, dr, GFC_STD_GNU,
+ BT_REAL, dr, GFC_STD_F2023,
gfc_check_fn_r, gfc_simplify_asind, gfc_resolve_trigd,
x, BT_REAL, dr, REQUIRED);
+ make_generic ("asind", GFC_ISYM_ASIND, GFC_STD_F2023);
+
add_sym_1 ("dasind", GFC_ISYM_ASIND, CLASS_ELEMENTAL, ACTUAL_YES,
BT_REAL, dd, GFC_STD_GNU,
gfc_check_fn_d, gfc_simplify_asind, gfc_resolve_trigd,
x, BT_REAL, dd, REQUIRED);
- make_generic ("asind", GFC_ISYM_ASIND, GFC_STD_GNU);
-
add_sym_1 ("atand", GFC_ISYM_ATAND, CLASS_ELEMENTAL, ACTUAL_YES,
- BT_REAL, dr, GFC_STD_GNU,
+ BT_REAL, dr, GFC_STD_F2023,
gfc_check_fn_r, gfc_simplify_atand, gfc_resolve_trigd,
x, BT_REAL, dr, REQUIRED);
+ make_generic ("atand", GFC_ISYM_ATAND, GFC_STD_F2023);
+
add_sym_1 ("datand", GFC_ISYM_ATAND, CLASS_ELEMENTAL, ACTUAL_YES,
BT_REAL, dd, GFC_STD_GNU,
gfc_check_fn_d, gfc_simplify_atand, gfc_resolve_trigd,
x, BT_REAL, dd, REQUIRED);
- make_generic ("atand", GFC_ISYM_ATAND, GFC_STD_GNU);
-
add_sym_2 ("atan2d", GFC_ISYM_ATAN2D, CLASS_ELEMENTAL, ACTUAL_YES,
- BT_REAL, dr, GFC_STD_GNU,
+ BT_REAL, dr, GFC_STD_F2023,
gfc_check_atan2, gfc_simplify_atan2d, gfc_resolve_trigd2,
y, BT_REAL, dr, REQUIRED,
x, BT_REAL, dr, REQUIRED);
+ make_generic ("atan2d", GFC_ISYM_ATAN2D, GFC_STD_F2023);
+
add_sym_2 ("datan2d", GFC_ISYM_ATAN2D, CLASS_ELEMENTAL, ACTUAL_YES,
BT_REAL, dd, GFC_STD_GNU,
gfc_check_datan2, gfc_simplify_atan2d, gfc_resolve_trigd2,
y, BT_REAL, dd, REQUIRED,
x, BT_REAL, dd, REQUIRED);
- make_generic ("atan2d", GFC_ISYM_ATAN2D, GFC_STD_GNU);
-
add_sym_1 ("cosd", GFC_ISYM_COSD, CLASS_ELEMENTAL, ACTUAL_YES,
- BT_REAL, dr, GFC_STD_GNU,
+ BT_REAL, dr, GFC_STD_F2023,
gfc_check_fn_r, gfc_simplify_cosd, gfc_resolve_trigd,
x, BT_REAL, dr, REQUIRED);
+ make_generic ("cosd", GFC_ISYM_COSD, GFC_STD_F2023);
+
add_sym_1 ("dcosd", GFC_ISYM_COSD, CLASS_ELEMENTAL, ACTUAL_YES,
BT_REAL, dd, GFC_STD_GNU,
gfc_check_fn_d, gfc_simplify_cosd, gfc_resolve_trigd,
x, BT_REAL, dd, REQUIRED);
- make_generic ("cosd", GFC_ISYM_COSD, GFC_STD_GNU);
-
add_sym_1 ("cotan", GFC_ISYM_COTAN, CLASS_ELEMENTAL, ACTUAL_YES,
BT_REAL, dr, GFC_STD_GNU,
gfc_check_fn_rc2008, gfc_simplify_cotan, gfc_resolve_trigd,
make_generic ("cotand", GFC_ISYM_COTAND, GFC_STD_GNU);
add_sym_1 ("sind", GFC_ISYM_SIND, CLASS_ELEMENTAL, ACTUAL_YES,
- BT_REAL, dr, GFC_STD_GNU,
+ BT_REAL, dr, GFC_STD_F2023,
gfc_check_fn_r, gfc_simplify_sind, gfc_resolve_trigd,
x, BT_REAL, dr, REQUIRED);
+ make_generic ("sind", GFC_ISYM_SIND, GFC_STD_F2023);
+
add_sym_1 ("dsind", GFC_ISYM_SIND, CLASS_ELEMENTAL, ACTUAL_YES,
BT_REAL, dd, GFC_STD_GNU,
gfc_check_fn_d, gfc_simplify_sind, gfc_resolve_trigd,
x, BT_REAL, dd, REQUIRED);
- make_generic ("sind", GFC_ISYM_SIND, GFC_STD_GNU);
-
add_sym_1 ("tand", GFC_ISYM_TAND, CLASS_ELEMENTAL, ACTUAL_YES,
- BT_REAL, dr, GFC_STD_GNU,
+ BT_REAL, dr, GFC_STD_F2023,
gfc_check_fn_r, gfc_simplify_tand, gfc_resolve_trigd,
x, BT_REAL, dr, REQUIRED);
+ make_generic ("tand", GFC_ISYM_TAND, GFC_STD_F2023);
+
add_sym_1 ("dtand", GFC_ISYM_TAND, CLASS_ELEMENTAL, ACTUAL_YES,
BT_REAL, dd, GFC_STD_GNU,
gfc_check_fn_d, gfc_simplify_tand, gfc_resolve_trigd,
x, BT_REAL, dd, REQUIRED);
- make_generic ("tand", GFC_ISYM_TAND, GFC_STD_GNU);
-
/* The following function is internally used for coarray libray functions.
"make_from_module" makes it inaccessible for external users. */
add_sym_1 (GFC_PREFIX ("caf_get"), GFC_ISYM_CAF_GET, CLASS_IMPURE, ACTUAL_NO,
symstd_msg = _("new in Fortran 2018");
break;
+ case GFC_STD_F2023:
+ symstd_msg = _("new in Fortran 2023");
+ break;
+
case GFC_STD_GNU:
symstd_msg = _("a GNU Fortran extension");
break;
@code{ACOSD(X)} computes the arccosine of @var{X} in degrees (inverse of
@code{COSD(X)}).
-This function is for compatibility only and should be avoided in favor of
-standard constructs wherever possible.
-
@item @emph{Standard}:
-GNU extension, enabled with @option{-fdec-math}
+Fortran 2023
@item @emph{Class}:
Elemental function
@item @emph{Specific names}:
@multitable @columnfractions .20 .23 .20 .33
@headitem Name @tab Argument @tab Return type @tab Standard
-@item @code{ACOSD(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab GNU extension
+@item @code{ACOSD(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab Fortran 2023
@item @code{DACOSD(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)} @tab GNU extension
@end multitable
@code{ASIND(X)} computes the arcsine of its @var{X} in degrees (inverse of
@code{SIND(X)}).
-This function is for compatibility only and should be avoided in favor of
-standard constructs wherever possible.
-
@item @emph{Standard}:
-GNU extension, enabled with @option{-fdec-math}.
+Fortran 2023
@item @emph{Class}:
Elemental function
@item @emph{Specific names}:
@multitable @columnfractions .20 .23 .20 .33
@headitem Name @tab Argument @tab Return type @tab Standard
-@item @code{ASIND(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab GNU extension
+@item @code{ASIND(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab Fortran 2023
@item @code{DASIND(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)} @tab GNU extension
@end multitable
@ref{ASIN}
@end table
-
-
@node ASINH
@section @code{ASINH} --- Inverse hyperbolic sine function
@fnindex ASINH
@code{ATAND(X)} computes the arctangent of @var{X} in degrees (inverse of
@ref{TAND}).
-This function is for compatibility only and should be avoided in favor of
-standard constructs wherever possible.
-
@item @emph{Standard}:
-GNU extension, enabled with @option{-fdec-math}.
+Fortran 2023
@item @emph{Class}:
Elemental function
@item @emph{Specific names}:
@multitable @columnfractions .23 .23 .20 .30
@headitem Name @tab Argument @tab Return type @tab Standard
-@item @code{ATAND(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab GNU extension
+@item @code{ATAND(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab Fortran 2023
@item @code{DATAND(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)} @tab GNU extension
@end multitable
be used to transform from Cartesian into polar coordinates and
allows to determine the angle in the correct quadrant.
-This function is for compatibility only and should be avoided in favor of
-standard constructs wherever possible.
-
@item @emph{Standard}:
-GNU extension, enabled with @option{-fdec-math}.
+Fortran 2023
@item @emph{Class}:
Elemental function
@item @emph{Specific names}:
@multitable @columnfractions .23 .23 .20 .30
@headitem Name @tab Argument @tab Return type @tab Standard
-@item @code{ATAN2D(X, Y)} @tab @code{REAL(4) X, Y} @tab @code{REAL(4)} @tab GNU extension
+@item @code{ATAN2D(X, Y)} @tab @code{REAL(4) X, Y} @tab @code{REAL(4)} @tab Fortran 2023
@item @code{DATAN2D(X, Y)} @tab @code{REAL(8) X, Y} @tab @code{REAL(8)} @tab GNU extension
@end multitable
@ref{ATAN2}
@end table
-
-
@node ATANH
@section @code{ATANH} --- Inverse hyperbolic tangent function
@fnindex ATANH
@item @emph{Description}:
@code{COSD(X)} computes the cosine of @var{X} in degrees.
-This function is for compatibility only and should be avoided in favor of
-standard constructs wherever possible.
-
@item @emph{Standard}:
-GNU extension, enabled with @option{-fdec-math}.
+Fortran 2023
@item @emph{Class}:
Elemental function
@item @emph{Specific names}:
@multitable @columnfractions .20 .23 .20 .33
@headitem Name @tab Argument @tab Return type @tab Standard
-@item @code{COSD(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab GNU extension
+@item @code{COSD(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab Fortran 2023
@item @code{DCOSD(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)} @tab GNU extension
@item @code{CCOSD(X)} @tab @code{COMPLEX(4) X} @tab @code{COMPLEX(4)} @tab GNU extension
@item @code{ZCOSD(X)} @tab @code{COMPLEX(8) X} @tab @code{COMPLEX(8)} @tab GNU extension
@item @emph{Description}:
@code{SIND(X)} computes the sine of @var{X} in degrees.
-This function is for compatibility only and should be avoided in favor of
-standard constructs wherever possible.
-
@item @emph{Standard}:
-GNU extension, enabled with @option{-fdec-math}.
+Fortran 2023
@item @emph{Class}:
Elemental function
@item @emph{Specific names}:
@multitable @columnfractions .20 .23 .20 .33
@headitem Name @tab Argument @tab Return type @tab Standard
-@item @code{SIND(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab GNU extension
+@item @code{SIND(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab Fortran 2023
@item @code{DSIND(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)} @tab GNU extension
@item @code{CSIND(X)} @tab @code{COMPLEX(4) X} @tab @code{COMPLEX(4)} @tab GNU extension
@item @code{ZSIND(X)} @tab @code{COMPLEX(8) X} @tab @code{COMPLEX(8)} @tab GNU extension
@ref{SIN} @*
@end table
-
-
@node SINH
@section @code{SINH} --- Hyperbolic sine function
@fnindex SINH
@item @emph{Description}:
@code{TAND(X)} computes the tangent of @var{X} in degrees.
-This function is for compatibility only and should be avoided in favor of
-standard constructs wherever possible.
-
@item @emph{Standard}:
-GNU extension, enabled with @option{-fdec-math}.
+Fortran 2023
@item @emph{Class}:
Elemental function
@item @emph{Specific names}:
@multitable @columnfractions .20 .23 .20 .33
@headitem Name @tab Argument @tab Return type @tab Standard
-@item @code{TAND(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab GNU extension
+@item @code{TAND(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)} @tab Fortran 2023
@item @code{DTAND(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)} @tab GNU extension
@end multitable