Remarks on manual Gfortran
--------------------------
(Page numbers and such refer to the PDF-file available online
at 19 september 2008)

General remarks
---------------
1. Section on distributing programs is missing:
   What is needed if you have created a product to distribute it to
   customers? (Either with or without sources)
2. Section on floating-point issues is missing:
   How do the compile options influence the floating-point behaviour?
   What is the treatment of special values such as Inf and Nan?
   What happens with atan2(0,0)?
3. POSIX-type extensions in the language reference:
   No particular information is given how the various functions
   (SYMLNK for instance or STAT) work (or do not work) on a non-POSIX
   system like MS Windows.

Specific remarks
----------------

Missing words indicated as _words_
Superfluous words indicated as /words/

Page 1.
(bullet 2) because _it_ is easy to make ...

(bullet 3) The Fortran 90 _standard_ requires

Sentence: "When writing Fortran, it is easy to make big mistakes
That is not a very encouraging statement, it is also not inherent to
Fortran (but rather to programming in general) and it adds no
information. Just remove it.

Page 7.
-Wall:
I have seen at least one version of Gfortran that said (with
--help) "This option lacks documentation" or similar words. Version
"4.3.2-tdm-1 for MinGW" does not list it at all

Page 8.
-fall-intrinsics:
The explanation is not very clear, in my opinion: it accepts all intrinsic
procedures without regard to -std, but it is very useful with -std=f95?
The next sentence I had to read it two or three times.

Perhaps something like:
This option causes all intrinsic procedures (including the GNU-specific
extensions) to be accepted. Any user-defined procedures with the same
name are ignored.

-fd-lines-as-*
What is the default? (-fd-lines-as-comments, I suppose)

-fdefault-double-8 etc:
Does this have any influence on selected_real_kind() or kind(1.0), etc.?

Page 15.
-Wextra:
This flag does not appear in the documentation, other than under
-Wunused-parameter

Page 16.
are likely to /to/ trigger

Page 17.
-static-libgfortran:
When would you use this flag? Would it make distribution easier?

Page 20.
-founds-check:
_Note:_ In the future

Page 23.
3.5 GFORTRAN_TMPDIR
On Windows I have had severe problems with temporary files opened
from a C program (tmpfile()): Files were opened on the root directory
of a network disk - which was prohibited, of course.

How is that taken care of in Gfortran?

Page 29.
-fshort-enums should not be "hyphenated".

Page 31.
TYPESPEC(k):

Please replace the sentence explaining k by something like the
following, to stress that the _numerical_ value of k is platform-dependent:

"where k is the kind parameter suitable for the intended precision. As
kind parameters are implementation-dependent, use the kind(),
selected_int_kind() and selected_real_kind() functions to retrieve the
correct value, for instance:

REAL*8 x can be replaced by:

integer, parameter :: dbl = kind(1.0d0)
real(dbl)          :: x"

Page 38.
"to the existence of an important number of extensions:"
Shouldn't that be:
"to the existence of a number of important extensions"

Page 39.
(comment) manipulates -> manipulate

Page 41.
ABORT: produces a coredump even if -fno-dump-core is in effect?

ABS: COMPLEX(8) return type - shouldn't that be REAL(8)?

ACCESS: how is the executable flag determined on MS Windows?

ACOS: that is less than _or equal to_ one

ADJUSTL: the standard that introduced it is Fortran 90, but perhaps this
is too detailed.

ALLOCATED: if (allocated(x) .eqv. .false.) ...
This is an ugly style and actually a misuse of .eqv., use instead:
           if (.not. allocated(x)) ...

ASIN: see ACOS

ASSOCIATED: Is it still possible that association status of a pointer is
undefined? I thought Fortran 95 solved that monstrum?

If I understand it correctly, the return value of associated(p,a) is
always false if a is a zero-sized array?

BIT_SIZE: ... by the type of I. _The result bit_size() is independent of
the actual value of I._

BTEST: ... I is set. The counting of the bits starts at 0.

CHDIR: does it change the disk drive on Windows automatically? So that
    CALL CHDIR( "C:/" )
succeeds?

COSH: for real argument x, cosh(x) >= 1

COUNT: scaler -> scalar. The range formatting is wrong: 1/leqDIM/leqn

Note: scaler occurs more often, and the range formatting too

CSHIFT: range formatting wrong, "scaler"

DIGITS: significant _binary_ digits

DOT_PRODUCT: "scaler"

EOSHIFT: "scaler" (2x) and range formatting

EPSILON: replace by: EPSILON(X) returns the smallest number E of the
same kind as X such that 1+E is not equal to 1.

GET_COMMAND_ARGUMENT:
Is LENGTH independent of the buffer used (so that you can use it to
check that all of the argument was retrieved)?
retrival -> retrieval
positiv -> positive

GMTIME:
This is missing a reference to the standard routine DATE_AND_TIME
(I think it would be good to mention the standard routines for all
date and time related GNU-specific intrinsics).

IDATE:
"Does not return"? This text appears more often with subroutines, but is
only correct for ABORT and EXIT. As subroutines have no return values,
perhaps leave out that part?

LOG:
What is the imaginary part for complex arguments?

LOG_GAMMA:
Allows negative values like -0.5?

MAXLOC:
MAXLOC does _not_ return a scalar if the array is of rank 1:

This program fails to compile: Incompatible ranks 0 and 1 in assignment

! maxlocp.f90 --
!     Check the return value of maxloc for a one-dimensional array
!
program maxlocp
    integer             :: pos
    real, dimension(10) :: x

    call random_number( x )

    pos = maxloc(x)

    write(*,*) pos
end program maxlocp

MAXVAL:
Replace "...the result is the most negative number" by "... the result
is -HUGE(ARRAY)"

MINLOC: see MAXLOC

PRODUCT: formatting error - RESULT = ... ]) RESULT = ...

RANDOM_NUMBER:
Does each run of the program produce the _same_ or a different sequence?
(Perhaps a clue as to how to guarantee the same sequence is used?)

SELECTED_REAL_KIND:
return -> returns
"greater" is superfluous

SIGNAL:
There is no information on the interface for the signal handler. Does it
take any parameters?

STAT:
Function form missing

Page 169.
Vertical spacing between C_FUNLOC and C_LOC

Page 170.
(CHARACTER(KIND=C_CHAR) lacks a closing paren.


-- 
           Summary: Remarks on user manual for Gfortran
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: arjen dot markus at wldelft dot nl


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37605

Reply via email to