Modern Fortran explained / Michael Metcalf, John Reid, and Malcolm Cohen.
Material type: TextSeries: Numerical mathematics and scientific computationPublication details: Oxford ; New York : Oxford University Press, 2011.Description: xx, 488 p. : ill. ; 24 cmISBN:- 9780199601424 (pbk.)
- 0199601429 (pbk.)
- 9780199601417
- 0199601410
- 005.342 22
- QA76.73.F235 M48 2011
- ST 250
- ST 256
Item type | Current library | Call number | Status | Date due | Barcode | |
---|---|---|---|---|---|---|
Books | Kwara State University Library | QA76.73 .F23 M48 2011 (Browse shelf(Opens below)) | Available | 008189-02 | ||
Books | Kwara State University Library | QA76.73 .F23 M48 2011 (Browse shelf(Opens below)) | Available | 008189-03 |
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.
There are no comments on this title.