1 option
Modern fortran explained : incorporating Fortran 2023.
- Format:
- Book
- Author/Creator:
- Metcalf, Michael, 1931- author.
- Reid, John Ker, author.
- Cohen, Malcolm, 1957- author.
- Bader, Reinhold, author.
- Series:
- Numerical mathematics and scientific computation.
- Oxford scholarship online.
- Numerical mathematics and scientific computation
- Oxford scholarship online
- Language:
- English
- Subjects (All):
- FORTRAN (Computer program language).
- Physical Description:
- 1 online resource (xxi, 545 pages) : illustrations.
- Edition:
- Sixth edition.
- Place of Publication:
- Oxford : Oxford University Press, 2023.
- Summary:
- This new edition of 'Modern Fortran Explained' provides a clear and thorough description of the latest version of Fortran, written by experts in the field with the intention that it remain the main reference work in the field.
- Contents:
- Cover
- Title
- Copyright Page
- Preface
- Conventions used in this book
- Contents
- 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 Fortran 2003
- 1.7 Fortran 2008
- 1.8 Fortran 2018
- 1.9 Fortran 2023
- 1.10 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.7 Names
- 2.8 Scalar variables of intrinsic type
- 2.9 Derived data types
- 2.10 Arrays
- 2.11 Coarrays and images
- 2.12 Character substrings
- 2.13 Dynamic memory management and aliasing
- 2.14 Type extension
- 2.15 Polymorphic variables
- 2.16 Objects and subobjects
- 2.17 Summary
- Exercises
- 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
- 3.9 Scalar defined operators
- 3.10 Scalar defined assignments
- 3.11 Array expressions
- 3.12 Array assignment
- 3.13 Pointers in expressions and assignments
- 3.14 The nullify statement
- 3.15 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 Further uses of the
- 4.6 Summary
- 5. Program units and procedures
- 5.1 Introduction
- 5.2 Main program
- 5.3 Program termination
- 5.4 External subprograms
- 5.5 Modules
- 5.6 Internal subprograms
- 5.7 Arguments of procedures
- 5.8 The return statement
- 5.9 Local variables
- 5.10 Argument intent
- 5.11 Functions.
- 5.12 Explicit interfaces
- 5.13 Procedures as arguments
- 5.14 Keyword and optional arguments
- 5.15 Use and scope of labels
- 5.16 Scope of names
- 5.17 Recursion
- 5.18 Overloading
- 5.19 Assumed character length
- 5.20 The subroutine and function statements
- 5.21 Requirements on statement ordering
- 5.22 Summary
- 6. Allocation of data
- 6.1 Introduction
- 6.2 The allocatable attribute
- 6.3 Deferred type parameters
- 6.4 Allocatable scalars
- 6.5 The allocate statement
- 6.6 The deallocate statement
- 6.7 Automatic reallocation in intrinsic assignment
- 6.8 Transferring an allocation
- 6.9 Allocatable dummy arguments
- 6.10 Allocatable functions
- 6.11 Allocatable components
- 6.12 Allocatable arrays vs. pointers
- 6.13 Summary
- 7. Array features
- 7.1 Introduction
- 7.2 Zero-sized arrays
- 7.3 Automatic objects
- 7.4 Elemental operations and assignments
- 7.5 Array-valued functions
- 7.6 The where statement and construct
- 7.7 Mask arrays
- 7.8 Pure procedures
- 7.9 Elemental procedures
- 7.10 Array elements
- 7.11 Array subobjects
- 7.12 Arrays of pointers
- 7.13 Pointers as aliases
- 7.14 Remapping bounds and rank in pointer assignments
- 7.15 Array constructors
- 7.16 The do concurrent construct
- 7.17 Contiguous arrays
- 7.18 Assumed rank
- 7.19 Summary
- 8. Specification statements
- 8.1 Introduction
- 8.2 Implicit declarations
- 8.3 Named constants
- 8.4 Constant expressions
- 8.5 Initial values for variables
- 8.6 Accessibility
- 8.7 Pointer functions denoting variables
- 8.8 The pointer, target, and allocatable statements
- 8.9 The intent and optional statements
- 8.10 The save attribute
- 8.11 Asynchronous actions
- 8.12 The block construct
- 8.13 The use statement
- 8.14 Derived-type definitions
- 8.15 The type declaration statement.
- 8.16 Type and type parameter specification
- 8.17 Specification expressions
- 8.18 Structure constructors
- 8.19 The namelist statement
- 8.20 Summary
- 9. Intrinsic procedures and modules
- 9.1 Introduction
- 9.2 Inquiry functions for any type
- 9.3 Elemental numeric functions
- 9.4 Elemental mathematical functions
- 9.5 Transformational functions for Bessel functions
- 9.6 Elemental character and logical functions
- 9.7 Non-elemental string-handling functions
- 9.8 Character inquiry function
- 9.9 Numeric inquiry and manipulation functions
- 9.10 Bit manipulation procedures
- 9.11 Transfer function
- 9.12 Vector and matrix multiplication functions
- 9.13 Transformational functions that reduce arrays
- 9.14 Array inquiry functions
- 9.15 Array construction and manipulation functions
- 9.16 Transformational functions for geometric location
- 9.17 Transformational function for disassociated or unallocated entities
- 9.18 Non-elemental intrinsic subroutines
- 9.19 Access to the computing environment
- 9.20 Elemental functions for input/output status testing
- 9.21 Size of an object in memory
- 9.22 Miscellaneous procedures
- 9.23 Intrinsic modules
- 9.24 Fortran environment
- 9.25 Summary
- 10. Data transfer
- 10.1 Introduction
- 10.2 Number conversion
- 10.3 Input/output lists
- 10.4 Format definition
- 10.5 Unit numbers
- 10.6 Internal files
- 10.7 Formatted input
- 10.8 Formatted output
- 10.9 List-directed input/output
- 10.10 Namelist input/output
- 10.11 Non-advancing input/output
- 10.12 Unformatted input/output
- 10.13 Direct-access files
- 10.14 UTF-8 files
- 10.15 Asynchronous input/output
- 10.16 Stream access files
- 10.17 Execution of a data transfer statement
- 10.18 Summary
- 11. Edit descriptors
- 11.1 Introduction.
- 11.2 Character string edit descriptor
- 11.3 Data edit descriptors
- 11.4 Control edit descriptors
- 11.5 Changeable file connection modes
- 11.6 Defined derived-type input/output
- 11.7 Recursive input/output
- 11.8 Summary
- 12. Operations on external files
- 12.1 Introduction
- 12.2 Positioning statements for sequential files
- 12.3 The flush statement
- 12.4 The open statement
- 12.5 The close statement
- 12.6 The inquire statement
- 12.7 Summary
- 13. Further type parameter features
- 13.1 Type parameter inquiry
- 13.2 Parameterized derived types
- 14. Abstract interfaces and procedure pointers
- 14.1 Abstract interfaces
- 14.2 Procedure pointers
- 15. Object-oriented programming
- 15.1 Introduction
- 15.2 Type extension
- 15.3 Polymorphic entities
- 15.4 Typed and sourced allocation
- 15.5 Assignment for allocatable polymorphic variables
- 15.6 The associate construct
- 15.7 The select type construct
- 15.8 Type-bound procedures
- 15.9 Design for overriding
- 15.10 Deferred bindings and abstract types
- 15.11 Finalization
- 15.12 Procedure encapsulation example
- 15.13 Type inquiry functions
- 16. Submodules
- 16.1 Introduction
- 16.2 Separate module procedures
- 16.3 Submodules of submodules
- 16.4 Submodule entities
- 16.5 Submodules and use association
- 16.6 The advantages of submodules
- 17. Coarrays
- 17.1 Introduction
- 17.2 Referencing images
- 17.3 The properties of coarrays
- 17.4 Accessing coarrays
- 17.5 The sync all statement
- 17.6 Allocatable coarrays and coarray components
- 17.7 Coarrays with allocatable or pointer components
- 17.8 Coarrays in procedures
- 17.9 Asynchronous attribute
- 17.10 Interoperability
- 17.11 Execution segments
- 17.12 The sync images statement.
- 17.13 The lock and unlock statements
- 17.14 Critical sections
- 17.15 Events
- 17.16 Derived types for locks, events, and teams
- 17.17 The image control statements
- 17.18 Error termination
- 17.19 Normal termination
- 17.20 Input/output
- 17.21 Intrinsic procedures
- 17.22 Collective subroutines
- 17.23 Atomic subroutines
- 17.24 Image failure
- 17.25 Diagnosing the state of a parallel computation
- 18. Coarray teams
- 18.1 Teams
- 18.2 The form team statement
- 18.3 The change team construct
- 18.4 Coarrays allocated in teams
- 18.5 The sync team statement
- 18.6 Image selectors and teams
- 18.7 Procedure calls and teams
- 18.8 Intrinsic functions
- 18.9 Detecting failed and stopped images
- 18.10 Recovering from image failure
- 19. Floating-point exception handling
- 19.1 Introduction
- 19.2 The IEEE standard
- 19.3 Access to the features
- 19.4 The Fortran flags
- 19.5 The floating-pointing modes
- 19.6 The ieee_exceptions module
- 19.7 The ieee_arithmetic module
- 19.8 Examples
- 20. Basic interoperability with C
- 20.1 Introduction
- 20.2 Interoperability of intrinsic types
- 20.3 Interoperability with C pointer types
- 20.4 Interoperability of derived types
- 20.5 Shape and character length disagreement
- 20.6 Interoperability of variables
- 20.7 Function
- 20.8 The value attribute
- 20.9 Interoperability of procedures
- 20.10 Interoperability of global data
- 20.11 Invoking a C function from Fortran
- 20.12 Invoking Fortran from C
- 20.13 Enumerations
- 20.14 Optional arguments
- 20.15 Assumed-type dummy arguments
- 20.16 Assumed character length
- 21. Interoperating with C using descriptors
- 21.1 Introduction
- 21.2 C descriptors
- 21.3 Accessing Fortran objects
- 21.4 Calling Fortran with C descriptors
- 21.5 Restrictions.
- 22. Generic programming.
- Notes:
- This edition also issued in print: 2023.
- Previous edition: published as Michael Metcalf, John Reid and Malcolm Cohen, 2018.
- Includes bibliographical references and index.
- Description based on online resource and publisher information; title from PDF title page (viewed on November 27, 2023).
- ISBN:
- 9780191987946
- 0191987948
- 9780198876595
- 0198876599
- OCLC:
- 1410601194
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.