skip to content
Modern Fortran explained Preview this item
ClosePreview this item
Checking...

Modern Fortran explained

Author: Michael Metcalf; John Ker Reid; Malcolm Cohen
Publisher: Oxford ; New York : Oxford University Press, 2011.
Series: Numerical mathematics and scientific computation.
Edition/Format:   eBook : Document : EnglishView all editions and formats
Summary:

A clear and thorough description of the latest versions of Fortran by leading experts in the field. It is intended for new and existing users of the language, and for all those involved in scientific  Read more...

Rating:

(not yet rated) 0 with reviews - Be the first.

Subjects
More like this

Find a copy online

Links to this item

Find a copy in the library

&AllPage.SpinnerRetrieving; Finding libraries that hold this item...

Details

Genre/Form: Electronic books
Additional Physical Format: Print version:
Metcalf, Michael.
Modern Fortran explained.
Oxford ; New York : Oxford University Press, 2011
(OCoLC)712556031
Material Type: Document, Internet resource
Document Type: Internet Resource, Computer File
All Authors / Contributors: Michael Metcalf; John Ker Reid; Malcolm Cohen
ISBN: 9780191616792 0191616796
OCLC Number: 754997043
Notes: Previous edition: published as Fortran 95/2003 explained. 2004.
Includes index.
Description: 1 online resource (xx, 488 pages) : illustrations.
Contents: 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.
Series Title: Numerical mathematics and scientific computation.
Responsibility: Michael Metcalf, John Reid, and Malcolm Cohen.
More information:

Reviews

Editorial reviews

Publisher Synopsis

Review from previous edition "This book is excellent. The prose is clear and concise, explaining all the elements of Fortran 90 and the extensions making up Fortan 95... If you need to write Fortran Read more...

 
User-contributed reviews
Retrieving GoodReads reviews...
Retrieving DOGObooks reviews...

Tags

Be the first.
Confirm this request

You may have already requested this item. Please select Ok if you would like to proceed with this request anyway.

Close Window

Please sign in to WorldCat 

Don't have an account? You can easily create a free account.