+2006-03-25 Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/26816
+ * intrinsic.c (add_functions): Allow FLOAT to accept all integer kinds.
+ * intrinsic.texi: Document FLOAT.
+
2006-03-25 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/26769
a, BT_UNKNOWN, dr, REQUIRED);
add_sym_1 ("float", 1, 0, BT_REAL, dr, GFC_STD_F77,
- NULL, gfc_simplify_float, NULL,
+ gfc_check_i, gfc_simplify_float, NULL,
a, BT_INTEGER, di, REQUIRED);
add_sym_1 ("sngl", 1, 0, BT_REAL, dr, GFC_STD_F77,
* @code{EXP}: EXP, Exponential function
* @code{EXPONENT}: EXPONENT, Exponent function
* @code{FDATE}: FDATE, Subroutine (or function) to get the current time as a string
+* @code{FLOAT}: FLOAT, Convert integer to default real
* @code{FLOOR}: FLOOR, Integer floor function
* @code{FNUM}: FNUM, File number function
* @code{FREE}: FREE, Memory de-allocation subroutine
@end smallexample
@end table
+@node FLOAT
+@section @code{FLOAT} --- Convert integer to default real
+@findex @code{FLOAT} intrinsic
+@cindex floor
+
+@table @asis
+@item @emph{Description}:
+@code{FLOAT(I)} converts the integer @var{I} to a default real value.
+
+@item @emph{Option}:
+gnu
+
+@item @emph{Class}:
+function
+
+@item @emph{Syntax}:
+@code{X = FLOAT(I)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@end multitable
+
+@item @emph{Return value}:
+The return value is of type default @code{REAL}
+
+@item @emph{Example}:
+@smallexample
+program test_float
+ integer :: i = 1
+ if (float(i) /= 1.) call abort
+end program test_float
+@end smallexample
+@end table
+
@node FLOOR
@section @code{FLOOR} --- Integer floor function
+2006-03-25 Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/26816
+ * gfortran.dg/float_1.f90: New test.
+
2006-03-25 Steven G. Kargl <kargsl@comcast.net>
* gfortran.dg/transfer_array_intrinsic_1.f90: Restrict to i?86 and
--- /dev/null
+! { dg-do run }
+! PR fortran/26816
+program test_float
+ integer(1) :: i1 = 1
+ integer(2) :: i2 = 1
+ integer(4) :: i4 = 1
+ integer(8) :: i8 = 1
+ if (float(i1) /= 1.) call abort
+ if (float(i2) /= 1.) call abort
+ if (float(i4) /= 1.) call abort
+ if (float(i8) /= 1.) call abort
+end program test_float