Muutke küpsiste eelistusi

Modern Fortran Explained 4th Revised edition [Pehme köide]

(Formerly of CERN, Geneva, Switzerland), (JKR Associates, Oxfordshire), (The Numerical Algorithms Group Ltd., Oxfordshire)
  • Formaat: Paperback / softback, 512 pages, kõrgus x laius x paksus: 240x172x28 mm, kaal: 826 g, 3 illustrations
  • Sari: Numerical Mathematics and Scientific Computation
  • Ilmumisaeg: 24-Mar-2011
  • Kirjastus: Oxford University Press
  • ISBN-10: 0199601429
  • ISBN-13: 9780199601424
  • Pehme köide
  • Hind: 96,33 €*
  • * saadame teile pakkumise kasutatud raamatule, mille hind võib erineda kodulehel olevast hinnast
  • See raamat on trükist otsas, kuid me saadame teile pakkumise kasutatud raamatule.
  • Kogus:
  • Lisa ostukorvi
  • Tasuta tarne
  • Lisa soovinimekirja
  • Formaat: Paperback / softback, 512 pages, kõrgus x laius x paksus: 240x172x28 mm, kaal: 826 g, 3 illustrations
  • Sari: Numerical Mathematics and Scientific Computation
  • Ilmumisaeg: 24-Mar-2011
  • Kirjastus: Oxford University Press
  • ISBN-10: 0199601429
  • ISBN-13: 9780199601424
Fortran remains one of the principal programming languages used in high-performance scientific, numerical, and engineering computing. A series of significant revisions to the standard versions of the language have progressively enhanced its capabilities and the latest standard, Fortran 2008, includes many modern features, such as object orientation, coarrays for parallel programming, interoperability with C and various other enhancements.Modern Fortran Explained expands on its predecessor, Fortran 95/2003 Explained. The opening chapters contain a complete description of Fortran 95, extended by Fortran 2003 allocatable array features. Coverage of the other additional features of Fortran 2003 follows, before new chapters on coarrays and the many other enhancements of Fortran 2008. The distinction between the three language levels is maintained throughout, allowing readers to understand and amend legacy code as well as the new features.Authored by three experts in the field, two of whom have actively contributed to Fortran 2008, this is a complete and authoritative description of Fortran in its modern form. It is intended for new and existing users of the language and for all those involved in scientific and numerical computing. It is suitable as a textbook for teaching and, with its extensive Appendices and an Index, as a handy reference for practitioners.

Arvustused

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 90/95 code, keep this book by your computer." * Computer Bulletin * "It is a complete and authoritative description of Fortran 90/95 and is intended for new and existing users, and all for those involved in scientific and numerical computing." * Zentralblatt Math * "Both authors are eminent scientists in the field of scientific computing and their experience shines through every page and every example." * Mathematics Today * 'The book is excellent. It is written in such a way that simple programs can already be coded after the first three chapters have been read.' * EMS Newsletter * Readers who are familiar with Fortran 90/95 Explained by Michael Malcolm and John Reid will be pleased to add Fortran 95/2003 Explained, with the welcome addition of Malcolm Cohen as co-author, to their libraries. As with the previous work, this is a model of clear exposition ... Practitioners will be happy to have this important new book. * ACM Fortran Forum *

1 Whence Fortran?
1(8)
1.1 Introduction
1(1)
1.2 Fortran's early history
2(1)
1.3 The drive for the Fortran 90 standard
3(1)
1.4 Language evolution
4(1)
1.5 Fortran 95
4(1)
1.6 Extensions to Fortran 95
5(1)
1.7 Fortran 2003
6(1)
1.8 Fortran 2008
7(1)
1.9 Conformance
7(2)
2 Language elements
9(24)
2.1 Introduction
9(1)
2.2 Fortran character set
9(1)
2.3 Tokens
10(1)
2.4 Source form
11(2)
2.5 Concept of type
13(1)
2.6 Literal constants of intrinsic type
14(6)
2.6.1 Integer literal constants
14(1)
2.6.2 Real literal constants
15(2)
2.6.3 Complex literal constants
17(1)
2.6.4 Character literal constants
17(2)
2.6.5 Logical literal constants
19(1)
2.7 Names
20(1)
2.8 Scalar variables of intrinsic type
20(1)
2.9 Derived data types
21(2)
2.10 Arrays of intrinsic type
23(3)
2.11 Character substrings
26(1)
2.12 Objects and subobjects
27(1)
2.13 Pointers
27(2)
2.14 Summary
29(4)
3 Expressions and assignments
33(22)
3.1 Introduction
33(1)
3.2 Scalar numeric expressions
34(3)
3.3 Defined and undefined variables
37(1)
3.4 Scalar numeric assignment
38(1)
3.5 Scalar relational operators
38(1)
3.6 Scalar logical expressions and assignments
39(2)
3.7 Scalar character expressions and assignments
41(1)
3.8 Structure constructors and scalar defined operators
42(3)
3.9 Scalar defined assignments
45(1)
3.10 Array expressions
46(2)
3.11 Array assignment
48(1)
3.12 Pointers in expressions and assignments
48(3)
3.13 The nullify statement
51(1)
3.14 Summary
51(4)
4 Control constructs
55(12)
4.1 Introduction
55(1)
4.2 The if construct and statement
55(2)
4.3 The case construct
57(2)
4.4 The do construct
59(3)
4.5 The go to statement
62(1)
4.6 Summary
63(4)
5 Program units and procedures
67(32)
5.1 Introduction
67(1)
5.2 Main program
68(1)
5.3 The stop statement
69(1)
5.4 External subprograms
69(1)
5.5 Modules
70(3)
5.6 Internal subprograms
73(1)
5.7 Arguments of procedures
73(4)
5.7.1 Pointer arguments
75(1)
5.7.2 Restrictions on actual arguments
76(1)
5.7.3 Arguments with the target attribute
76(1)
5.8 The return statement
77(1)
5.9 Argument intent
77(1)
5.10 Functions
78(2)
5.10.1 Prohibited side-effects
80(1)
5.11 Explicit and implicit interfaces
80(2)
5.12 Procedures as arguments
82(1)
5.13 Keyword and optional arguments
83(2)
5.14 Scope of labels
85(1)
5.15 Scope of names
85(3)
5.16 Direct recursion
88(1)
5.17 Indirect recursion
89(1)
5.18 Overloading and generic interfaces
90(3)
5.19 Assumed character length
93(2)
5.20 The subroutine and function statements
95(1)
5.21 Summary
96(3)
6 Array features
99(34)
6.1 Introduction
99(1)
6.2 Zero-sized arrays
99(1)
6.3 Assumed-shape arrays
100(1)
6.4 Automatic objects
100(2)
6.5 Allocation of data
102(8)
6.5.1 The allocatable attribute
102(1)
6.5.2 The allocate statement
103(1)
6.5.3 The deallocate statement
104(1)
6.5.4 Allocatable dummy arguments
105(1)
6.5.5 Allocatable functions
105(1)
6.5.6 Allocatable components
106(3)
6.5.7 Allocatable arrays vs. pointers
109(1)
6.6 Elemental operations and assignments
110(1)
6.7 Array-valued functions
110(1)
6.8 The where statement and construct
111(3)
6.9 The forall statement and construct
114(3)
6.10 Pure procedures
117(1)
6.11 Elemental procedures
118(1)
6.12 Array elements
119(1)
6.13 Array subobjects
120(3)
6.14 Arrays of pointers
123(1)
6.15 Pointers as aliases
124(1)
6.16 Array constructors
125(1)
6.17 Mask arrays
126(1)
6.18 Summary
127(6)
7 Specification statements
133(28)
7.1 Introduction
133(1)
7.2 Implicit typing
133(1)
7.3 Declaring entities of differing shapes
134(1)
7.4 Named constants and constant expressions
134(3)
7.5 Initial values for variables
137(5)
7.5.1 Initialization in type declaration statements
137(1)
7.5.2 The data statement
138(2)
7.5.3 Pointer initialization and the function null
140(1)
7.5.4 Default initialization of components
141(1)
7.6 The public and private attributes
142(2)
7.7 The pointer, target, and allocatable statements
144(1)
7.8 The intent and optional statements
144(1)
7.9 The save attribute
145(1)
7.10 The use statement
146(3)
7.11 Derived-type definitions
149(1)
7.12 The type declaration statement
150(2)
7.13 Type and type parameter specification
152(1)
7.14 Specification expressions
153(2)
7.14.1 Specification functions
153(2)
7.15 The namelist statement
155(1)
7.16 Summary
156(5)
8 Intrinsic procedures
161(24)
8.1 Introduction
161(1)
8.1.1 Keyword calls
161(1)
8.1.2 Categories of intrinsic procedures
162(1)
8.1.3 The intrinsic statement
162(1)
8.1.4 Argument intents
162(1)
8.2 Inquiry functions for any type
162(1)
8.3 Elemental numeric functions
163(2)
8.3.1 Elemental functions that may convert
163(1)
8.3.2 Elemental functions that do not convert
164(1)
8.4 Elemental mathematical functions
165(1)
8.5 Elemental character and logical functions
166(2)
8.5.1 Character-integer conversions
166(1)
8.5.2 Lexical comparison functions
167(1)
8.5.3 String-handling elemental functions
167(1)
8.5.4 Logical conversion
168(1)
8.6 Non-elemental string-handling functions
168(1)
8.6.1 String-handling inquiry function
168(1)
8.6.2 String-handling transformational functions
168(1)
8.7 Numeric inquiry and manipulation functions
168(3)
8.7.1 Models for integer and real data
168(1)
8.7.2 Numeric inquiry functions
169(1)
8.7.3 Elemental functions to manipulate reals
170(1)
8.7.4 Transformational functions for kind values
171(1)
8.8 Bit manipulation procedures
171(2)
8.8.1 Inquiry function
172(1)
8.8.2 Elemental functions
172(1)
8.8.3 Elemental subroutine
173(1)
8.9 Transfer function
173(1)
8.10 Vector and matrix multiplication functions
174(1)
8.11 Transformational functions that reduce arrays
175(1)
8.11.1 Single argument case
175(1)
8.11.2 Optional argument dim
175(1)
8.11.3 Optional argument mask
176(1)
8.12 Array inquiry functions
176(1)
8.12.1 Allocation status
176(1)
8.12.2 Bounds, shape, and size
176(1)
8.13 Array construction and manipulation functions
177(2)
8.13.1 The merge elemental function
177(1)
8.13.2 Packing and unpacking arrays
177(1)
8.13.3 Reshaping an array
177(1)
8.13.4 Transformational function for replication
178(1)
8.13.5 Array shifting functions
178(1)
8.13.6 Matrix transpose
179(1)
8.14 Transformational functions for geometric location
179(1)
8.15 Transformational function for pointer disassociation
179(1)
8.16 Non-elemental intrinsic subroutines
180(2)
8.16.1 Real-time clock
180(1)
8.16.2 CPU time
181(1)
8.16.3 Random numbers
181(1)
8.17 Summary
182(3)
9 Data transfer
185(28)
9.1 Introduction
185(1)
9.2 Number conversion
185(1)
9.3 I/O lists
186(2)
9.4 Format definition
188(2)
9.5 Unit numbers
190(1)
9.6 Internal files
191(2)
9.7 Formatted input
193(1)
9.8 Formatted output
194(1)
9.9 List-directed I/O
195(2)
9.10 Namelist I/O
197(1)
9.11 Non-advancing I/O
198(2)
9.12 Edit descriptors
200(8)
9.12.1 Repeat counts
200(1)
9.12.2 Data edit descriptors
201(4)
9.12.3 Character string edit descriptor
205(1)
9.12.4 Control edit descriptors
205(3)
9.13 Unformatted I/O
208(1)
9.14 Direct-access files
209(1)
9.15 Execution of a data transfer statement
210(1)
9.16 Summary
211(2)
10 Operations on external files
213(10)
10.1 Introduction
213(1)
10.2 Positioning statements for sequential files
214(2)
10.2.1 The backspace statement
214(1)
10.2.2 The rewind statement
214(1)
10.2.3 The endfile statement
215(1)
10.2.4 Data transfer statements
215(1)
10.3 The open statement
216(2)
10.4 The close statement
218(1)
10.5 The inquire statement
219(3)
10.6 Summary
222(1)
11 Floating-point exception handling
223(20)
11.1 Introduction
223(1)
11.2 The IEEE standard
224(1)
11.3 Access to the features
225(2)
11.4 The Fortran flags
227(1)
11.5 Halting
228(1)
11.6 The rounding mode
228(1)
11.7 The underflow mode (Fortran 2003 only)
229(1)
11.8 The module ieee_exceptions
229(3)
11.8.1 Derived types
229(1)
11.8.2 Inquiry functions for IEEE exceptions
230(1)
11.8.3 Subroutines for the flags and halting modes
230(1)
11.8.4 Subroutines for the whole of the floating-point status
231(1)
11.9 The module ieee_arithmetic
232(5)
11.9.1 Derived types
232(1)
11.9.2 Inquiry functions for IEEE arithmetic
232(2)
11.9.3 Elemental functions
234(1)
11.9.4 Non-elemental subroutines
235(1)
11.9.5 Transformational function for kind value
236(1)
11.10 Examples
237(6)
11.10.1 Dot product
237(1)
11.10.2 Calling alternative procedures
237(1)
11.10.3 Calling alternative in-line code
238(1)
11.10.4 Reliable hypotenuse function
238(1)
11.10.5 Access to IEEE arithmetic values
239(4)
12 Interoperability with C
243(12)
12.1 Introduction
243(1)
12.2 Interoperability of intrinsic types
243(2)
12.3 Interoperability with C pointer types
245(1)
12.4 Interoperability of derived types
246(1)
12.5 Interoperability of variables
247(1)
12.6 The value attribute
248(1)
12.7 Interoperability of procedures
249(1)
12.8 Interoperability of global data
250(1)
12.9 Invoking a C function from Fortran
251(1)
12.10 Invoking Fortran from C
252(1)
12.11 Enumerations
253(2)
13 Type parameters and procedure pointers
255(10)
13.1 Introduction
255(1)
13.2 Deferred type parameters
255(1)
13.3 Type parameter enquiry
256(1)
13.4 Parameterized derived types
256(3)
13.4.1 Defining a parameterized derived type
256(2)
13.4.2 Assumed and deferred type parameters
258(1)
13.4.3 Default type parameter values
258(1)
13.4.4 Derived type parameter enquiry
259(1)
13.5 Abstract interfaces
259(2)
13.6 Procedure pointers
261(4)
13.6.1 Procedure pointer variables
261(1)
13.6.2 Procedure pointer components
261(1)
13.6.3 The pass attribute
262(3)
14 Object-oriented programming
265(24)
14.1 Introduction
265(1)
14.2 Type extension
265(2)
14.2.1 Type extension and type parameters
267(1)
14.3 Polymorphic entities
267(4)
14.3.1 Establishing the dynamic type
268(1)
14.3.2 Limitations on the use of a polymorphic variable
269(1)
14.3.3 Polymorphic arrays and scalars
269(1)
14.3.4 Unlimited polymorphic entities
269(1)
14.3.5 Polymorphic entities and generic resolution
270(1)
14.4 The associate construct
271(1)
14.5 The select type construct
272(2)
14.6 Type-bound procedures
274(6)
14.6.1 Specific type-bound procedures
274(3)
14.6.2 Generic type-bound procedures
277(2)
14.6.3 Type extension and type-bound procedures
279(1)
14.7 Deferred bindings and abstract types
280(1)
14.8 Finalization
281(3)
14.8.1 Type extension and final subroutines
284(1)
14.9 Procedure encapsulation example
284(2)
14.10 Type inquiry functions
286(3)
15 Establishing and moving data
289(12)
15.1 Introduction
289(1)
15.2 Mixed component accessibility
289(1)
15.3 Structure constructors
289(2)
15.4 The allocate statement
291(2)
15.4.1 Typed allocation and deferred type parameters
291(1)
15.4.2 Polymorphic variables and typed allocation
292(1)
15.4.3 Sourced allocation
292(1)
15.5 Allocatable entities
293(3)
15.5.1 Allocatable scalars
294(1)
15.5.2 Assignment to an allocatable array
294(1)
15.5.3 Transferring an allocation
295(1)
15.6 Pointer assignment
296(1)
15.7 More control of access from a module
296(1)
15.8 Renaming operators on the use statement
297(1)
15.9 Array constructor syntax
297(1)
15.10 Specification and constant expressions
298(3)
16 Miscellaneous enhancements
301(16)
16.1 Introduction
301(1)
16.2 Pointer intent
301(1)
16.3 The volatile attribute
301(3)
16.3.1 Volatile semantics
302(1)
16.3.2 Volatile scoping
303(1)
16.3.3 Volatile arguments
304(1)
16.4 The import statement
304(2)
16.5 Intrinsic modules
306(1)
16.6 Access to the computing environment
307(1)
16.6.1 Environment variables
307(1)
16.6.2 Information about the program invocation
308(1)
16.7 Support for internationalization
308(4)
16.7.1 Character sets
309(1)
16.7.2 ASCII character set
309(1)
16.7.3 ISO 10646 character set
310(1)
16.7.4 UTF-8 files
310(1)
16.7.5 Decimal comma for input/output
311(1)
16.8 Lengths of names and statements
312(1)
16.9 Binary, octal, and hexadecimal constants
312(1)
16.10 Other changes to intrinsic procedures
313(1)
16.11 Error message retrieval
314(1)
16.12 Enhanced complex constants
314(1)
16.13 Interface block extensions
314(1)
16.14 Public entities of private type
315(2)
17 Input/output enhancements
317(12)
17.1 Introduction
317(1)
17.2 Non-default derived-type input/output
317(3)
17.3 Asynchronous input/output
320(2)
17.4 The asynchronous attribute
322(1)
17.5 Input and output of IEEE exceptional values
323(1)
17.6 Stream access input/output
323(1)
17.7 Recursive input/output
324(1)
17.8 The flush statement
324(1)
17.9 Comma after a P edit descriptor
324(1)
17.10 The iomsg= specifier
325(1)
17.11 The round= specifier
325(1)
17.12 The sign= specifier
325(1)
17.13 Kind type parameters of integer and logical specifiers
325(1)
17.14 More specifiers in read and write statements
326(1)
17.15 Intrinsic functions for I/O status testing
326(1)
17.16 Some inquire statement enhancements
326(1)
17.17 Namelist enhancements
327(2)
18 Enhanced module facilities
329(4)
18.1 Introduction
329(1)
18.2 Submodules
330(2)
18.2.1 Separate module procedures
330(1)
18.2.2 Submodules of submodules
331(1)
18.2.3 Submodule entities
331(1)
18.2.4 Submodules and use association
332(1)
18.3 The advantages of submodules
332(1)
19 Coarrays
333(20)
19.1 Introduction
333(1)
19.2 Referencing images
334(1)
19.3 The properties of coarrays
335(1)
19.4 Accessing coarrays
336(1)
19.5 The sync all statement
337(1)
19.6 Coarrays in procedures
338(2)
19.7 Allocatable coarrays
340(1)
19.8 Coarrays with allocatable or pointer components
341(1)
19.8.1 Data components
341(1)
19.8.2 Procedure pointer components
342(1)
19.9 Coarray components
342(1)
19.10 References to polymorphic subobjects
343(1)
19.11 Volatile and asynchronous attributes
343(1)
19.12 Interoperability
343(1)
19.13 Synchronization
343(5)
19.13.1 Execution segments
343(1)
19.13.2 The sync images statement
344(1)
19.13.3 The lock and unlock statements
345(2)
19.13.4 Critical sections
347(1)
19.13.5 The sync memory statement and atomic subroutines
347(1)
19.13.6 The stat= and errmsg= specifiers in synchronization statements
348(1)
19.13.7 The image control statements
348(1)
19.14 Program termination
348(1)
19.15 Input/Output
349(2)
19.16 Intrinsic procedures
351(2)
19.16.1 Inquiry functions
351(1)
19.16.2 Transformational functions
351(2)
20 Other Fortran 2008 enhancements
353(40)
20.1 Trivial syntactic conveniences
353(3)
20.1.1 Implied-shape arrays
353(1)
20.1.2 Implied-do loops in data statements
353(1)
20.1.3 Type-bound procedures
354(1)
20.1.4 Structure constructors
354(1)
20.1.5 Semicolons
355(1)
20.1.6 The stop statement
355(1)
20.1.7 Exit from nearly any construct
355(1)
20.2 Limitation changes
356(1)
20.2.1 64-bit integer support
356(1)
20.2.2 Maximum array rank
356(1)
20.3 Data expressiveness
356(3)
20.3.1 Allocatable components of recursive type
356(2)
20.3.2 Initial pointer association
358(1)
20.4 Performance-oriented features
359(6)
20.4.1 The do concurrent construct
359(2)
20.4.2 The contiguous attribute
361(3)
20.4.3 Simply contiguous array designators
364(1)
20.5 Computational expressiveness
365(7)
20.5.1 Accessing parts of complex variables
365(1)
20.5.2 Pointer functions denoting variables
366(1)
20.5.3 The block construct
366(2)
20.5.4 Impure elemental procedures
368(2)
20.5.5 Internal procedures as actual arguments
370(1)
20.5.6 Specifying the kind of a forall index variable
370(1)
20.5.7 Generic resolution
371(1)
20.6 Data usage and computation
372(2)
20.6.1 Enhancements to the allocate statement
372(1)
20.6.2 Automatic reallocation
373(1)
20.6.3 Elemental subprogram restrictions
373(1)
20.7 Input/output
374(2)
20.7.1 Recursive input/output
374(1)
20.7.2 The newunit= specifier
374(1)
20.7.3 Writing comma-separated values
375(1)
20.8 Intrinsic procedures
376(1)
20.9 Mathemetical intrinsic functions
376(2)
20.9.1 Changes to trigonometric functions
376(1)
20.9.2 New hyperbolic trigonometic functions
376(1)
20.9.3 New special mathematical functions
377(1)
20.9.4 Euclidean norms
378(1)
20.10 Bit manipulation
378(4)
20.10.1 Bitwise (unsigned) comparison
378(1)
20.10.2 Double-width shifting
379(1)
20.10.3 Bitwise reductions
379(1)
20.10.4 Counting bits
380(1)
20.10.5 Producing bitmasks
380(1)
20.10.6 Merging bits
381(1)
20.10.7 Additional shift operations
381(1)
20.11 Miscellaneous intrinsic procedures
382(3)
20.11.1 Procedures supporting coarrays
382(1)
20.11.2 Executing another program
382(1)
20.11.3 Character comparison
383(1)
20.11.4 Array searching
383(1)
20.11.5 Logical parity
383(1)
20.11.6 Decimal arithmetic support
384(1)
20.11.7 Size of an object in memory
384(1)
20.12 Additions to the iso_fortran_env module
385(2)
20.12.1 Compilation information
385(1)
20.12.2 Names for common kinds
385(1)
20.12.3 Kind arrays
386(1)
20.12.4 Coarray support facilities
386(1)
20.13 Changes to other standard intrinsic modules
387(1)
20.13.1 The iso_c_binding module
387(1)
20.13.2 The ieee_arithmetic module
387(1)
20.14 Programs and procedures
388(5)
20.14.1 Saved module entities
388(1)
20.14.2 Automatic pointer targetting
388(1)
20.14.3 Denoting absent arguments
389(4)
A Intrinsic procedures
393(6)
B Deprecated features
399(20)
B.1 Introduction
399(1)
B.2 Storage association
399(6)
B.2.1 Storage units
399(1)
B.2.2 The equivalence statement
400(2)
B.2.3 The common block
402(2)
B.2.4 The block data program unit
404(1)
B.2.5 Coarrays and storage association
405(1)
B.3 Shape and character length disagreement
405(2)
B.4 The include line
407(1)
B.5 Other forms of loop control
407(1)
B.5.1 The labelled do construct
407(1)
B.5.2 The do while
408(1)
B.6 Double precision real
408(1)
B.7 The dimension, codimension, and parameter statements
409(1)
B.8 Specific names of intrinsic procedures
410(2)
B.9 Non-default mapping for implicit typing
412(1)
B.10 Fortran 2008 deprecated features
413(6)
B.10.1 The sync memory statement and atomic subroutines
413(3)
B.10.2 Components of type c_ptr or c_funptr
416(1)
B.10.3 Type declarations
416(1)
B.10.4 Redundant contains statement
417(1)
B.10.5 The end statement
417(1)
B.10.6 Referencing atan2 by the name atan
418(1)
C Obsolescent features
419(10)
C.1 Obsolescent in Fortran 95
419(5)
C.1.1 Fixed source form
419(1)
C.1.2 Computed go to
420(1)
C.1.3 Character length specification character
420(1)
C.1.4 Data statements among executables
420(1)
C.1.5 Statement functions
421(1)
C.1.6 Assumed character length of function results
422(1)
C.1.7 Arithmetic if statement
422(1)
C.1.8 Shared do-loop termination
423(1)
C.1.9 Alternate return
423(1)
C.2 Feature obsolescent in Fortran 2008: Entry statement
424(2)
C.3 Feature deleted in Fortran 2003: Carriage control
426(1)
C.4 Features deleted in Fortran 95
427(2)
D Avoiding compilation cascades
429(4)
E Object-oriented list example
433(8)
F Fortran terms
441(12)
G Solutions to exercises
453(22)
Index 475
Michael Metcalf worked for many years at CERN. He is the author or co-author of a range of publications, including forerunners to the present volume, as well as Effective FORTRAN 77 (Oxford University Press) and FORTRAN Optimization (Academic Press), and a number of contributions to technical encyclopaedias.



John Reid is well-known as a numerical analyst and is a co-author of Direct Methods for Sparse Matrices (Oxford University Press). He is the Convenor of the ISO Fortran Committee and has played a leading role in the development of many of the features of modern Fortran, especially of coarrays.



Malcolm Cohen is a mathematician and the leading compiler writer at NAG. He has participated actively in the development of the Fortran standards, being a major designer of the objected-oriented features. He is the Editor of the Fortran 2008 standard.