From 8db2ba4032d683b70d21d443f519c79362db8593 Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Thu, 24 Mar 2005 18:16:33 +0000 Subject: [PATCH] intrinsic.texi: New file. gfortran.texi: Include it; white space change; fix typo. From-SVN: r97000 --- gcc/fortran/ChangeLog | 5 + gcc/fortran/gfortran.texi | 34 +- gcc/fortran/intrinsic.texi | 701 +++++++++++++++++++++++++++++++++++++ 3 files changed, 726 insertions(+), 14 deletions(-) create mode 100644 gcc/fortran/intrinsic.texi diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7a6962159fe..2018a4adca2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2005-03-34 Steven G. Kargl + + * intrinsic.texi: New file. + * gfortran.texi: Include it; white space change; fix typo. + 2005-03-23 Joseph S. Myers * f95-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove. diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index c3242f7b5a3..9068cffdc76 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -109,25 +109,31 @@ the GNU Fortran 95 compiler. You can find in this manual how to invoke @ifset DEVELOPMENT @emph{Warning:} This document, and the compiler it describes, are still -under development. While efforts are made too keep it up-to-date it might +under development. While efforts are made to keep it up-to-date, it might not accurately reflect the status of the most recent @command{gfortran}. @end ifset +@comment +@comment When you add a new menu item, please keep the right hand +@comment aligned to the same column. Do not use tabs. This provides +@comment better formatting. +@comment @menu -* Copying:: GNU General Public License says - how you can copy and share GNU Fortran. +* Copying:: GNU General Public License says + how you can copy and share GNU Fortran. * GNU Free Documentation License:: - How you can copy and share this manual. -* Funding:: How to help assure continued work for free software. -* Getting Started:: What you should know about @command{gfortran}. -* GFORTRAN and GCC:: You can compile Fortran, C, or other programs. -* GFORTRAN and G77:: Why we choose to start from scratch. + How you can copy and share this manual. +* Funding:: How to help assure continued work for free software. +* Getting Started:: What you should know about @command{gfortran}. +* GFORTRAN and GCC:: You can compile Fortran, C, or other programs. +* GFORTRAN and G77:: Why we chose to start from scratch. * Invoking GFORTRAN:: Command options supported by @command{gfortran}. -* Project Status:: Status of @command{gfortran}, Roadmap, proposed extensions. -* Contributing:: Helping you can help. -* Standards:: Standards supported by @command{gfortran} -* Extensions:: Language extensions implemented by @command{gfortran} -* Index:: Index of this documentation. +* Project Status:: Status of @command{gfortran}, roadmap, proposed extensions. +* Contributing:: How you can help. +* Standards:: Standards supported by @command{gfortran} +* Extensions:: Language extensions implemented by @command{gfortran} +* Intrinsic Procedures:: Intrinsic procedures supported by @command{gfortran} +* Index:: Index of this documentation. @end menu @@ -369,7 +375,6 @@ because it was expected to be easier to maintain code we develop ourselves than to do a major overhaul of @command{g77} first, and then build a Fortran 95 compiler out of it. - @include invoke.texi @c --------------------------------------------------------------------- @@ -670,6 +675,7 @@ Examples of standard conforming code equivalent to the above example, are: DATA i,j,x /1,2,3*0.,1./ @end smallexample +@include intrinsic.texi @c --------------------------------------------------------------------- @c Contributing @c --------------------------------------------------------------------- diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi new file mode 100644 index 00000000000..c40cfed52a1 --- /dev/null +++ b/gcc/fortran/intrinsic.texi @@ -0,0 +1,701 @@ +@ignore +Copyright (C) 2005 +Free Software Foundation, Inc. +This is part of the GFORTRAN manual. +For copying conditions, see the file gfortran.texi. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with the +Invariant Sections being ``GNU General Public License'' and ``Funding +Free Software'', the Front-Cover texts being (a) (see below), and with +the Back-Cover Texts being (b) (see below). A copy of the license is +included in the gfdl(7) man page. + + +Some basic guidelines for editing this document: + + (1) The intrinsic procedures are to be listed in alphabetical order. + (2) The generic name is to be use. + (3) The specific names are included in the function index and in a + table at the end of the node (See ABS entry). + (4) Try to maintain the same style for each entry. + + +@end ignore + + +@node Intrinsic Procedures +@chapter Intrinsic Procedures +@cindex Intrinsic Procedures + +This portion of the document is incomplete and undergoing massive expansion +and editing. All contributions and corrections are strongly encouraged. + +@menu +* Introduction: Introduction +* @code{ABORT}: @code{ABORT}, Abort the program +* @code{ABS}: @code{ABS}, Absolute value +* @code{ACHAR}: @code{ACHAR}, Character in @acronym{ASCII} collating sequence +* @code{ACOS}: @code{ACOS}, Arccosine function +* @code{ADJUSTL}: @code{ADJUSTL}, Left adjust a string +* @code{ADJUSTR}: @code{ADJUSTR}, Right adjust a string +@end menu + +@node Introduction +@section Introduction to intrinsic procedures + +Gfortran provides a rich set of intrinsic procedures that includes all +the intrinsic procedures required by the Fortran 95 standard, a set of +intrinsic procedures for backwards compatibility with Gnu Fortran 77 +(i.e., @command{g77}), and a small selection of intrinsic procedures +from the Fortran 2003 standard. Any description here, which conflicts with a +description in either the Fortran 95 standard or the Fortran 2003 standard, +is unintentional and the standard(s) should be considered authoritative. + +The enumeration of the @code{KIND} type parameter is processor defined in +the Fortran 95 standard. Gfortran defines the default integer type and +default real type by @code{INTEGER(KIND=4)} and @code{REAL(KIND=4)}, +respectively. The standard mandates that both data types shall have +another kind, which have more precision. On typical target architectures +supports by @command{gfortran}, this kind type parameter is @code{KIND=8}. +Hence, @code{REAL(KIND=8)} and @code{DOUBLE PRECISION} are equivalent. +In the description of generic intrinsic procedures, the kind type parameter +will be specified by @code{KIND=*}, and in the description of specific +names for an intrinsic procedure the kind type parameter will be explicitly +given (e.g., @code{REAL(KIND=4)} or @code{REAL(KIND=8)}). Finally, for +brevity the optional @code{KIND=} syntax will be omitted. + +Many of the intrinsics procedures take one or more optional arguments. +This document follows the convention used in the Fortran 95 standard, +and denotes such arguments by square brackets. + +@command{Gfortran} offers the @option{-std=f95} and @option{-std=gnu} options, +which can be used to restrict the set of intrinsic procedures to a +given standard. By default, @command{gfortran} sets the @option{-std=gnu} +option, and so all intrinsic procedures describe here are accepted. There +is one caveat. For a select group of intrinsic procedures, @command{g77} +implemented both a function and a subroutine. Both classes +have been implemented in @command{gfortran} for backwards compatibility +with @command{g77}. It is noted here that these functions and subroutines +cannot be intermixed in a given subprogram. In the descriptions that follow, +the applicable option(s) is noted. + + + +@node @code{ABORT} +@section @code{ABORT} --- Abort the program +@findex @code{ABORT} +@cindex abort + +@table @asis +@item @emph{Description}: +@code{ABORT} causes immediate termination of the program. On operating +systems that support a core dump, @code{ABORT} will produce a core dump, +which is suitable for debugging purposes. + +@item @emph{Option}: +gnu + +@item @emph{Type}: +non-elemental subroutine + +@item @emph{Syntax}: +@code{CALL ABORT} + +@item @emph{Return value}: +Does not return. + +@item @emph{Example}: +@smallexample +program test_abort + integer :: i = 1, j = 2 + if (i /= j) call abort +end program test_abort +@end smallexample +@end table + + + +@node @code{ABS} +@section @code{ABS} --- Absolute value +@findex @code{ABS} intrinsic +@findex @code{CABS} intrinsic +@findex @code{DABS} intrinsic +@findex @code{IABS} intrinsic +@findex @code{ZABS} intrinsic +@findex @code{CDABS} intrinsic +@cindex absolute value + +@table @asis +@item @emph{Description}: +@code{ABS(X)} computes the absolute value of @code{X}. + +@item @emph{Option}: +f95, gnu + +@item @emph{Type}: +elemental function + +@item @emph{Syntax}: +@code{X = ABS(X)} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .80 +@item @var{X} @tab The type of the argument shall be an @code{INTEGER(*)}, +@code{REAL(*)}, or @code{COMPLEX(*)}. +@end multitable + +@item @emph{Return value}: +The return value is of the same type and +kind as the argument except the return value is @code{REAL(*)} for a +@code{COMPLEX(*)} argument. + +@item @emph{Example}: +@smallexample +program test_abort + integer :: i = -1 + real :: x = -1.e0 + complex :: z = (-1.e0,0.e0) + i = abs(i) + x = abs(x) + x = abs(z) +end program test_abort +@end smallexample + +@item @emph{Specific names}: +@multitable @columnfractions .24 .24 .24 .24 +@item Name @tab Argument @tab Return type @tab Option +@item @code{CABS(Z)} @tab @code{COMPLEX(4) Z} @tab @code{REAL(4)} @tab f95, gnu +@item @code{DABS(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)} @tab f95, gnu +@item @code{IABS(I)} @tab @code{INTEGER(4) I} @tab @code{INTEGER(4)} @tab f95, gnu +@item @code{ZABS(Z)} @tab @code{COMPLEX(8) Z} @tab @code{COMPLEX(8)} @tab gnu +@item @code{CDABS(Z)} @tab @code{COMPLEX(8) Z} @tab @code{COMPLEX(8)} @tab gnu +@end multitable +@end table + + + +@node @code{ACHAR} +@section @code{ACHAR} --- Character in @acronym{ASCII} collating sequence +@findex @code{ACHAR} intrinsic +@cindex @acronym{ASCII} collating sequence + +@table @asis +@item @emph{Description}: +@code{ACHAR(I)} returns the character located at position @code{I} +in the @acronym{ASCII} collating sequence. + +@item @emph{Option}: +f95, gnu + +@item @emph{Type}: +elemental function + +@item @emph{Syntax}: +@code{C = ACHAR(I)} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .80 +@item @var{I} @tab The type shall be an @code{INTEGER(*)}. +@end multitable + +@item @emph{Return value}: +The return value is of type @code{CHARACTER} with a length of one. The +kind type parameter is the same as @code{KIND('A')}. + +@item @emph{Example}: +@smallexample +program test_achar + character c + c = achar(32) +end program test_abort +@end smallexample +@end table + + + +@node @code{ACOS} +@section @code{ACOS} --- Arccosine function +@findex @code{ACOS} intrinsic +@findex @code{DACOS} intrinsic +@cindex arccosine + +@table @asis +@item @emph{Description}: +@code{ACOS(X)} computes the arccosine of its @var{X}. + +@item @emph{Option}: +f95, gnu + +@item @emph{Type}: +elemental function + +@item @emph{Syntax}: +@code{X = ACOS(X)} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .80 +@item @var{X} @tab The type shall be an @code{REAL(*)}. +@end multitable + +@item @emph{Return value}: +The return value is of type @code{REAL(*)} and it lies in the +range @math{ 0 \leq \arccos (x) \leq \pi}. + +@item @emph{Example}: +@smallexample +program test_acos + real(8) :: x = 0.866_8 + x = achar(x) +end program test_acos +@end smallexample + +@item @emph{Specific names}: +@multitable @columnfractions .24 .24 .24 .24 +@item Name @tab Argument @tab Return type @tab Option +@item @code{DACOS(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)} @tab f95, gnu +@end multitable +@end table + +@node @code{ADJUSTL} +@section @code{ADJUSTL} --- Left adjust a string +@findex @code{ADJUSTL} intrinsic +@cindex adjust string + +@table @asis +@item @emph{Description}: +@code{ADJUSTL(STR)} will left adjust a string by removing leading spaces. +Spaces are inserted at the end of the string as needed. + +@item @emph{Option}: +f95, gnu + +@item @emph{Type}: +elemental function + +@item @emph{Syntax}: +@code{STR = ADJUSTL(STR)} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .80 +@item @var{STR} @tab The type shall be @code{CHARACTER}. +@end multitable + +@item @emph{Return value}: +The return value is of type @code{CHARACTER} where leading spaces +are removed and the same number of spaces are inserted on the end +of @var{STR}. + +@item @emph{Example}: +@smallexample +program test_adjustl + character(len=20) :: str = ' gfortran' + str = adjustl(str) + print *, str +end program test_adjustl +@end smallexample +@end table + + +@node @code{ADJUSTR} +@section @code{ADJUSTR} --- Right adjust a string +@findex @code{ADJUSTR} intrinsic +@cindex adjust string + +@table @asis +@item @emph{Description}: +@code{ADJUSTR(STR)} will right adjust a string by removing trailing spaces. +Spaces are inserted at the start of the string as needed. + +@item @emph{Option}: +f95, gnu + +@item @emph{Type}: +elemental function + +@item @emph{Syntax}: +@code{STR = ADJUSTR(STR)} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .80 +@item @var{STR} @tab The type shall be @code{CHARACTER}. +@end multitable + +@item @emph{Return value}: +The return value is of type @code{CHARACTER} where trailing spaces +are removed and the same number of spaces are inserted at the start +of @var{STR}. + +@item @emph{Example}: +@smallexample +program test_adjustr + character(len=20) :: str = 'gfortran' + str = adjustr(str) + print *, str +end program test_adjustr +@end smallexample +@end table + + + +@comment gen aimag +@comment dimag +@comment +@comment gen aint +@comment dint +@comment +@comment gen all +@comment +@comment gen allocated +@comment +@comment gen anint +@comment dnint +@comment +@comment gen any +@comment +@comment gen asin +@comment dasin +@comment +@comment gen associated +@comment +@comment gen atan +@comment datan +@comment +@comment gen atan2 +@comment datan2 +@comment +@comment gen besj0 +@comment dbesj0 +@comment +@comment gen besj1 +@comment dbesj1 +@comment +@comment gen besjn +@comment dbesjn +@comment +@comment gen besy0 +@comment dbesy0 +@comment +@comment gen besy1 +@comment dbesy1 +@comment +@comment gen besyn +@comment dbesyn +@comment +@comment gen bit_size +@comment +@comment gen btest +@comment +@comment gen ceiling +@comment +@comment gen char +@comment +@comment gen cmplx +@comment +@comment gen command_argument_count +@comment +@comment gen conjg +@comment dconjg +@comment +@comment gen cos +@comment dcos +@comment ccos +@comment zcos,cdcos +@comment +@comment gen cosh +@comment dcosh +@comment +@comment gen count +@comment +@comment sub cpu_time +@comment +@comment gen cshift +@comment +@comment sub date_and_time +@comment +@comment gen dble +@comment dfloat +@comment +@comment gen dcmplx +@comment +@comment gen digits +@comment +@comment gen dim +@comment idim +@comment ddim +@comment +@comment gen dot_product +@comment +@comment gen dprod +@comment +@comment gen dreal +@comment +@comment sub dtime +@comment +@comment gen eoshift +@comment +@comment gen epsilon +@comment +@comment gen erf +@comment derf +@comment +@comment gen erfc +@comment derfc +@comment +@comment gen etime +@comment sub etime +@comment +@comment sub exit +@comment +@comment gen exp +@comment dexp +@comment cexp +@comment zexp,cdexp +@comment +@comment gen exponent +@comment +@comment gen floor +@comment +@comment sub flush +@comment +@comment gen fnum +@comment +@comment gen fraction +@comment +@comment gen fstat +@comment sub fstat +@comment +@comment sub getarg +@comment +@comment gen getcwd +@comment sub getcwd +@comment +@comment sub getenv +@comment +@comment gen getgid +@comment +@comment gen getpid +@comment +@comment gen getuid +@comment +@comment sub get_command +@comment +@comment sub get_command_argument +@comment +@comment sub get_environment_variable +@comment +@comment gen huge +@comment +@comment gen iachar +@comment +@comment gen iand +@comment +@comment gen iargc +@comment +@comment gen ibclr +@comment +@comment gen ibits +@comment +@comment gen ibset +@comment +@comment gen ichar +@comment +@comment gen ieor +@comment +@comment gen index +@comment +@comment gen int +@comment ifix +@comment idint +@comment +@comment gen ior +@comment +@comment gen irand +@comment +@comment gen ishft +@comment +@comment gen ishftc +@comment +@comment gen kind +@comment +@comment gen lbound +@comment +@comment gen len +@comment +@comment gen len_trim +@comment +@comment gen lge +@comment +@comment gen lgt +@comment +@comment gen lle +@comment +@comment gen llt +@comment +@comment gen log +@comment alog +@comment dlog +@comment clog +@comment zlog, cdlog +@comment +@comment gen log10 +@comment alog10 +@comment dlog10 +@comment +@comment gen logical +@comment +@comment gen matmul +@comment +@comment gen max +@comment max0 +@comment amax0 +@comment amax1 +@comment max1 +@comment dmax1 +@comment +@comment gen maxexponent +@comment +@comment gen maxloc +@comment +@comment gen maxval +@comment +@comment gen merge +@comment +@comment gen min +@comment min0 +@comment amin0 +@comment amin1 +@comment min1 +@comment dmin1 +@comment +@comment gen minexponent +@comment +@comment gen minloc +@comment +@comment gen minval +@comment +@comment gen mod +@comment amod +@comment dmod +@comment +@comment gen modulo +@comment +@comment sub mvbits +@comment +@comment gen nearest +@comment +@comment gen nint +@comment idnint +@comment +@comment gen not +@comment +@comment gen null +@comment +@comment gen pack +@comment +@comment gen precision +@comment +@comment gen present +@comment +@comment gen product +@comment +@comment gen radix +@comment +@comment gen rand +@comment ran +@comment +@comment sub random_number +@comment +@comment sub random_seed +@comment +@comment gen range +@comment +@comment gen real +@comment float +@comment sngl +@comment +@comment gen repeat +@comment +@comment gen reshape +@comment +@comment gen rrspacing +@comment +@comment gen scale +@comment +@comment gen scan +@comment +@comment gen second +@comment sub second +@comment +@comment gen selected_int_kind +@comment +@comment gen selected_real_kind +@comment +@comment gen set_exponent +@comment +@comment gen shape +@comment +@comment gen sign +@comment isign +@comment dsign +@comment +@comment gen sin +@comment dsin +@comment csin +@comment zsin,cdsin +@comment +@comment gen sinh +@comment dsinh +@comment +@comment gen size +@comment +@comment gen spacing +@comment +@comment gen spread +@comment +@comment gen sqrt +@comment dsqrt +@comment csqrt +@comment zsqrt,cdsqrt +@comment +@comment sub srand +@comment +@comment gen stat +@comment sub stat +@comment +@comment gen sum +@comment +@comment gen system +@comment sub system +@comment +@comment sub system_clock +@comment +@comment gen tan +@comment dtan +@comment +@comment gen tanh +@comment dtanh +@comment +@comment gen tiny +@comment +@comment gen transfer +@comment +@comment gen transpose +@comment +@comment gen trim +@comment +@comment gen ubound +@comment +@comment gen umask +@comment sub umask +@comment +@comment gen unlink +@comment sub unlink +@comment +@comment gen unpack +@comment +@comment gen verify + + + -- 2.30.2