TY - BOOK AU - Metcalf,Michael AU - Reid,John Ker AU - Cohen,Malcolm AU - Metcalf,Michael TI - Modern Fortran explained T2 - Numerical mathematics and scientific computation SN - 9780199601424 (pbk.) AV - QA76.73.F235 M48 2011 U1 - 005.342 22 PY - 2011/// CY - Oxford, New York PB - Oxford University Press KW - FORTRAN (Computer program language) N1 - Previous ed.: published as Fortran 95/2003 explained. 2004; Includes index; Machine generated contents note; 1; Whence Fortran? --; 1.1; Introduction --; 1.2; Fortran's early history --; 1.3; The drive for the Fortran 90 standard --; 1.4; Language evolution --; 1.5; Fortran 95 --; 1.6; Extensions to Fortran 95 --; 1.7; Fortran 2003 --; 1.8; Fortran 2008 --; 1.9; Conformance --; 2; Language elements --; 2.1; Introduction --; 2.2; Fortran character set --; 2.3; Tokens --; 2.4; Source form --; 2.5; Concept of type --; 2.6; Literal constants of intrinsic type --; 2.6.1; Integer literal constants --; 2.6.2; Real literal constants --; 2.6.3; Complex literal constants --; 2.6.4; Character literal constants --; 2.6.5; Logical literal constants --; 2.7; Names --; 2.8; Scalar variables of intrinsic type --; 2.9; Derived data types --; 2.10; Arrays of intrinsic type --; 2.11; Character substrings --; 2.12; Objects and subobjects --; 2.13; Pointers --; 2.14; Summary --; 3; Expressions and assignments --; 3.1; Introduction --; 3.2; Scalar numeric expressions --; 3.3; Defined and undefined variables; 3.4; Scalar numeric assignment --; 3.5; Scalar relational operators --; 3.6; Scalar logical expressions and assignments --; 3.7; Scalar character expressions and assignments --; 3.8; Structure constructors and scalar defined operators --; 3.9; Scalar defined assignments --; 3.10; Array expressions --; 3.11; Array assignment --; 3.12; Pointers in expressions and assignments --; 3.13; The nullify statement --; 3.14; Summary --; 4; Control constructs --; 4.1; Introduction --; 4.2; The if construct and statement --; 4.3; The case construct --; 4.4; The do construct --; 4.5; The go to statement --; 4.6; Summary --; 5; Program units and procedures --; 5.1; Introduction --; 5.2; Main program --; 5.3; The stop statement --; 5.4; External subprograms --; 5.5; Modules --; 5.6; Internal subprograms --; 5.7; Arguments of procedures --; 5.7.1; Pointer arguments --; 5.7.2; Restrictions on actual arguments --; 5.7.3; Arguments with the target attribute --; 5.8; The return statement --; 5.9; Argument intent --; 5.10; Functions --; 5.10.1; Prohibited side-effects --; 5.11; Explicit and implicit interfaces; 5.12; Procedures as arguments --; 5.13; Keyword and optional arguments --; 5.14; Scope of labels --; 5.15; Scope of names --; 5.16; Direct recursion --; 5.17; Indirect recursion --; 5.18; Overloading and generic interfaces --; 5.19; Assumed character length --; 5.20; The subroutine and function statements --; 5.21; Summary --; 6; Array features --; 6.1; Introduction --; 6.2; Zero-sized arrays --; 6.3; Assumed-shape arrays --; 6.4; Automatic objects --; 6.5; Allocation of data --; 6.5.1; The allocatable attribute --; 6.5.2; The allocate statement --; 6.5.3; The deallocate statement --; 6.5.4; Allocatable dummy arguments --; 6.5.5; Allocatable functions --; 6.5.6; Allocatable components --; 6.5.7; Allocatable arrays vs. pointers --; 6.6; Elemental operations and assignments --; 6.7; Array-valued functions --; 6.8; The where statement and construct --; 6.9; The forall statement and construct --; 6.10; Pure procedures --; 6.11; Elemental procedures --; 6.12; Array elements --; 6.13; Array subobjects --; 6.14; Arrays of pointers --; 6.15; Pointers as aliases; 6.16; Array constructors --; 6.17; Mask arrays --; 6.18; Summary --; 7; Specification statements --; 7.1; Introduction --; 7.2; Implicit typing --; 7.3; Declaring entities of differing shapes --; 7.4; Named constants and constant expressions --; 7.5; Initial values for variables --; 7.5.1; Initialization in type declaration statements --; 7.5.2; The data statement --; 7.5.3; Pointer initialization and the function null --; 7.5.4; Default initialization of components --; 7.6; The public and private attributes --; 7.7; The pointer, target, and allocatable statements --; 7.8; The intent and optional statements --; 7.9; The save attribute --; 7.10; The use statement --; 7.11; Derived-type definitions --; 7.12; The type declaration statement --; 7.13; Type and type parameter specification --; 7.14; Specification expressions --; 7.14.1; Specification functions --; 7.15; The namelist statement --; 7.16; Summary --; 8; Intrinsic procedures --; 8.1; Introduction --; 8.1.1; Keyword calls --; 8.1.2; Categories of intrinsic procedures --; 8.1.3; The intrinsic statement; 8.1.4; Argument intents --; 8.2; Inquiry functions for any type --; 8.3; Elemental numeric functions --; 8.3.1; Elemental functions that may convert --; 8.3.2; Elemental functions that do not convert --; 8.4; Elemental mathematical functions --; 8.5; Elemental character and logical functions --; 8.5.1; Character-integer conversions --; 8.5.2; Lexical comparison functions --; 8.5.3; String-handling elemental functions --; 8.5.4; Logical conversion --; 8.6; Non-elemental string-handling functions --; 8.6.1; String-handling inquiry function --; 8.6.2; String-handling transformational functions --; 8.7; Numeric inquiry and manipulation functions --; 8.7.1; Models for integer and real data --; 8.7.2; Numeric inquiry functions --; 8.7.3; Elemental functions to manipulate reals --; 8.7.4; Transformational functions for kind values --; 8.8; Bit manipulation procedures --; 8.8.1; Inquiry function --; 8.8.2; Elemental functions --; 8.8.3; Elemental subroutine --; 8.9; Transfer function --; 8.10; Vector and matrix multiplication functions --; 8.11; Transformational functions that reduce arrays; 8.11.1; Single argument case --; 8.11.2; Optional argument dim --; 8.11.3; Optional argument mask --; 8.12; Array inquiry functions --; 8.12.1; Allocation status --; 8.12.2; Bounds, shape, and size --; 8.13; Array construction and manipulation functions --; 8.13.1; The merge elemental function --; 8.13.2; Packing and unpacking arrays --; 8.13.3; Reshaping an array --; 8.13.4; Transformational function for replication --; 8.13.5; Array shifting functions --; 8.13.6; Matrix transpose --; 8.14; Transformational functions for geometric location --; 8.15; Transformational function for pointer disassociation --; 8.16; Non-elemental intrinsic subroutines --; 8.16.1; Real-time clock --; 8.16.2; CPU time --; 8.16.3; Random numbers --; 8.17; Summary --; 9; Data transfer --; 9.1; Introduction --; 9.2; Number conversion --; 9.3; I/O lists --; 9.4; Format definition --; 9.5; Unit numbers --; 9.6; Internal files --; 9.7; Formatted input --; 9.8; Formatted output --; 9.9; List-directed I/O --; 9.10; Namelist I/O --; 9.11; Non-advancing I/O --; 9.12; Edit descriptors; 9.12.1; Repeat counts --; 9.12.2; Data edit descriptors --; 9.12.3; Character string edit descriptor --; 9.12.4; Control edit descriptors --; 9.13; Unformatted I/O --; 9.14; Direct-access files --; 9.15; Execution of a data transfer statement --; 9.16; Summary --; 10; Operations on external files --; 10.1; Introduction --; 10.2; Positioning statements for sequential files --; 10.2.1; The backspace statement --; 10.2.2; The rewind statement --; 10.2.3; The endfile statement --; 10.2.4; Data transfer statements --; 10.3; The open statement --; 10.4; The close statement --; 10.5; The inquire statement --; 10.6; Summary --; 11; Floating-point exception handling --; 11.1; Introduction --; 11.2; The IEEE standard --; 11.3; Access to the features --; 11.4; The Fortran flags --; 11.5; Halting --; 11.6; The rounding mode --; 11.7; The underflow mode (Fortran 2003 only) --; 11.8; The module ieee%5Fexceptions --; 11.8.1; Derived types --; 11.8.2; Inquiry functions for IEEE exceptions --; 11.8.3; Subroutines for the flags and halting modes --; 11.8.4; Subroutines for the whole of the floating-point status; 11.9; The module ieee%5Farithmetic --; 11.9.1; Derived types --; 11.9.2; Inquiry functions for IEEE arithmetic --; 11.9.3; Elemental functions --; 11.9.4; Non-elemental subroutines --; 11.9.5; Transformational function for kind value --; 11.10; Examples --; 11.10.1; Dot product --; 11.10.2; Calling alternative procedures --; 11.10.3; Calling alternative in-line code --; 11.10.4; Reliable hypotenuse function --; 11.10.5; Access to IEEE arithmetic values --; 12; Interoperability with C --; 12.1; Introduction --; 12.2; Interoperability of intrinsic types --; 12.3; Interoperability with C pointer types --; 12.4; Interoperability of derived types --; 12.5; Interoperability of variables --; 12.6; The value attribute --; 12.7; Interoperability of procedures --; 12.8; Interoperability of global data --; 12.9; Invoking a C function from Fortran --; 12.10; Invoking Fortran from C --; 12.11; Enumerations --; 13; Type parameters and procedure pointers --; 13.1; Introduction --; 13.2; Deferred type parameters --; 13.3; Type parameter enquiry --; 13.4; Parameterized derived types --; 13.4.1; Defining a parameterized derived type; 13.4.2; Assumed and deferred type parameters --; 13.4.3; Default type parameter values --; 13.4.4; Derived type parameter enquiry --; 13.5; Abstract interfaces --; 13.6; Procedure pointers --; 13.6.1; Procedure pointer variables --; 13.6.2; Procedure pointer components --; 13.6.3; The pass attribute --; 14; Object-oriented programming --; 14.1; Introduction --; 14.2; Type extension --; 14.2.1; Type extension and type parameters --; 14.3; Polymorphic entities --; 14.3.1; Establishing the dynamic type --; 14.3.2; Limitations on the use of a polymorphic variable --; 14.3.3; Polymorphic arrays and scalars --; 14.3.4; Unlimited polymorphic entities --; 14.3.5; Polymorphic entities and generic resolution; 14.4; The associate construct --; 14.5; The select type construct --; 14.6; Type-bound procedures --; 14.6.1; Specific type-bound procedures --; 14.6.2; Generic type-bound procedures --; 14.6.3; Type extension and type-bound procedures --; 14.7; Deferred bindings and abstract types --; 14.8; Finalization --; 14.8.1; Type extension and final subroutines --; 14.9; Procedure encapsulation example --; 14.10; Type inquiry functions --; 15; Establishing and moving data --; 15.1; Introduction --; 15.2; Mixed component accessibility --; 15.3; Structure constructors --; 15.4; The allocate statement --; 15.4.1; Typed allocation and deferred type parameters --; 15.4.2; Polymorphic variables and typed allocation --; 15.4.3; Sourced allocation --; 15.5; Allocatable entities --; 15.5.1; Allocatable scalars --; 15.5.2; Assignment to an allocatable array --; 15.5.3; Transferring an allocation --; 15.6; Pointer assignment --; 15.7; More control of access from a module; 15.8; Renaming operators on the use statement --; 15.9; Array constructor syntax --; 15.10; Specification and constant expressions --; 16; Miscellaneous enhancements --; 16.1; Introduction --; 16.2; Pointer intent --; 16.3; The volatile attribute --; 16.3.1; Volatile semantics --; 16.3.2; Volatile scoping --; 16.3.3; Volatile arguments --; 16.4; The import statement --; 16.5; Intrinsic modules --; 16.6; Access to the computing environment --; 16.6.1; Environment variables --; 16.6.2; Information about the program invocation --; 16.7; Support for internationalization --; 16.7.1; Character sets --; 16.7.2; ASCII character set --; 16.7.3; ISO 10646 character set --; 16.7.4; UTF-8 files --; 16.7.5; Decimal comma for input/output --; 16.8; Lengths of names and statements --; 16.9; Binary, octal, and hexadecimal constants --; 16.10; Other changes to intrinsic procedures --; 16.11; Error message retrieval --; 16.12; Enhanced complex constants --; 16.13; Interface block extensions --; 16.14; Public entities of private type --; 17; Input/output enhancements; 17.1; Introduction --; 17.2; Non-default derived-type input/output --; 17.3; Asynchronous input/output --; 17.4; The asynchronous attribute --; 17.5; Input and output of IEEE exceptional values --; 17.6; Stream access input/output --; 17.7; Recursive input/output --; 17.8; The flush statement --; 17.9; Comma after a P edit descriptor --; 17.10; The iomsg= specifier --; 17.11; The round= specifier --; 17.12; The sign= specifier --; 17.13; Kind type parameters of integer and logical specifiers --; 17.14; More specifiers in read and write statements --; 17.15; Intrinsic functions for I/O status testing --; 17.16; Some inquire statement enhancements --; 17.17; Namelist enhancements --; 18; Enhanced module facilities --; 18.1; Introduction --; 18.2; Submodules --; 18.2.1; Separate module procedures --; 18.2.2; Submodules of submodules --; 18.2.3; Submodule entities --; 18.2.4; Submodules and use association --; 18.3; The advantages of submodules --; 19; Coarrays --; 19.1; Introduction --; 19.2; Referencing images --; 19.3; The properties of coarrays; 19.4; Accessing coarrays --; 19.5; The sync all statement --; 19.6; Coarrays in procedures --; 19.7; Allocatable coarrays --; 19.8; Coarrays with allocatable or pointer components --; 19.8.1; Data components --; 19.8.2; Procedure pointer components --; 19.9; Coarray components --; 19.10; References to polymorphic subobjects --; 19.11; Volatile and asynchronous attributes --; 19.12; Interoperability --; 19.13; Synchronization --; 19.13.1; Execution segments --; 19.13.2; The sync images statement --; 19.13.3; The lock and unlock statements --; 19.13.4; Critical sections --; 19.13.5; The sync memory statement and atomic subroutines --; 19.13.6; The stat= and errmsg= specifiers in synchronization statements --; 19.13.7; The image control statements --; 19.14; Program termination --; 19.15; Input/Output --; 19.16; Intrinsic procedures --; 19.16.1; Inquiry functions --; 19.16.2; Transformational functions --; 20; Other Fortran 2008 enhancements --; 20.1; Trivial syntactic conveniences --; 20.1.1; Implied-shape arrays --; 20.1.2; Implied-do loops in data statements; 20.1.3; Type-bound procedures --; 20.1.4; Structure constructors --; 20.1.5; Semicolons --; 20.1.6; The stop statement --; 20.1.7; Exit from nearly any construct --; 20.2; Limitation changes --; 20.2.1; 64-bit integer support --; 20.2.2; Maximum array rank --; 20.3; Data expressiveness --; 20.3.1; Allocatable components of recursive type --; 20.3.2; Initial pointer association --; 20.4; Performance-oriented features --; 20.4.1; The do concurrent construct --; 20.4.2; The contiguous attribute --; 20.4.3; Simply contiguous array designators --; 20.5; Computational expressiveness --; 20.5.1; Accessing parts of complex variables --; 20.5.2; Pointer functions denoting variables --; 20.5.3; The block construct --; 20.5.4; Impure elemental procedures --; 20.5.5; Internal procedures as actual arguments --; 20.5.6; Specifying the kind of a forall index variable --; 20.5.7; Generic resolution --; 20.6; Data usage and computation --; 20.6.1; Enhancements to the allocate statement --; 20.6.2; Automatic reallocation --; 20.6.3; Elemental subprogram restrictions --; 20.7; Input/output; 20.7.1; Recursive input/output --; 20.7.2; The newunit= specifier --; 20.7.3; Writing comma-separated values --; 20.8; Intrinsic procedures --; 20.9; Mathemetical intrinsic functions --; 20.9.1; Changes to trigonometric functions --; 20.9.2; New hyperbolic trigonometic functions --; 20.9.3; New special mathematical functions --; 20.9.4; Euclidean norms --; 20.10; Bit manipulation --; 20.10.1; Bitwise (unsigned) comparison --; 20.10.2; Double-width shifting --; 20.10.3; Bitwise reductions --; 20.10.4; Counting bits --; 20.10.5; Producing bitmasks --; 20.10.6; Merging bits --; 20.10.7; Additional shift operations --; 20.11; Miscellaneous intrinsic procedures --; 20.11.1; Procedures supporting coarrays --; 20.11.2; Executing another program --; 20.11.3; Character comparison --; 20.11.4; Array searching --; 20.11.5; Logical parity --; 20.11.6; Decimal arithmetic support --; 20.11.7; Size of an object in memory --; 20.12; Additions to the iso%5Ffortran%5Fenv module --; 20.12.1; Compilation information --; 20.12.2; Names for common kinds --; 20.12.3; Kind arrays; 20.12.4; Coarray support facilities --; 20.13; Changes to other standard intrinsic modules --; 20.13.1; The iso%5Fc%5Fbinding module --; 20.13.2; The ieee%5Farithmetic module --; 20.14; Programs and procedures --; 20.14.1; Saved module entities --; 20.14.2; Automatic pointer targetting --; 20.14.3; Denoting absent arguments --; A; Intrinsic procedures --; B; Deprecated features --; B.1; Introduction --; B.2; Storage association --; B.2.1; Storage units --; B.2.2; The equivalence statement --; B.2.3; The common block --; B.2.4; The block data program unit --; B.2.5; Coarrays and storage association --; B.3; Shape and character length disagreement --; B.4; The include line --; B.5; Other forms of loop control --; B.5.1; The labelled do construct --; B.5.2; The do while --; B.6; Double precision real --; B.7; The dimension, codimension, and parameter statements --; B.8; Specific names of intrinsic procedures --; B.9; Non-default mapping for implicit typing --; B.10; Fortran 2008 deprecated features --; B.10.1; The sync memory statement and atomic subroutines; B.10.2; Components of type c%5Fptr or c%5Ffunptr --; B.10.3; Type declarations --; B.10.4; Redundant contains statement --; B.10.5; The end statement --; B.10.6; Referencing atan2 by the name atan --; C; Obsolescent features --; C.1; Obsolescent in Fortran 95 --; C.1.1; Fixed source form --; C.1.2; Computed go to --; C.1.3; Character length specification character --; C.1.4; Data statements among executables --; C.1.5; Statement functions --; C.1.6; Assumed character length of function results --; C.1.7; Arithmetic if statement --; C.1.8; Shared do-loop termination --; C.1.9; Alternate return --; C.2; Feature obsolescent in Fortran 2008: Entry statement --; C.3; Feature deleted in Fortran 2003: Carriage control --; C.4; Features deleted in Fortran 95 --; D; Avoiding compilation cascades --; E; Object-oriented list example --; F; Fortran terms --; G; Solutions to exercises UR - http://www.loc.gov/catdir/enhancements/fy1312/2012360954-b.html UR - http://www.loc.gov/catdir/enhancements/fy1312/2012360954-d.html UR - http://www.loc.gov/catdir/enhancements/fy1312/2012360954-t.html ER -