Preface |
|
xxiii | |
Acknowledgments |
|
xxv | |
Author |
|
xxvii | |
1 Preliminaries |
|
1 | (24) |
|
|
2 | (1) |
|
|
3 | (1) |
|
|
4 | (1) |
|
1.4 Constants and Variables |
|
|
4 | (1) |
|
|
4 | (1) |
|
|
5 | (1) |
|
1.7 Double Precision Constants |
|
|
6 | (1) |
|
|
6 | (1) |
|
1.9 Double Precision Complex Constants |
|
|
7 | (1) |
|
1.10 Quadruple (Quad) Precision Constants |
|
|
7 | (1) |
|
|
7 | (1) |
|
|
7 | (1) |
|
|
8 | (1) |
|
|
8 | (1) |
|
1.15 Variable Declarations |
|
|
8 | (1) |
|
1.16 Meaning of a Declaration |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
12 | (1) |
|
|
13 | (1) |
|
|
13 | (2) |
|
1.24 Continuation of Character Strings |
|
|
15 | (1) |
|
1.25 Structure of a Program |
|
|
16 | (1) |
|
|
16 | (1) |
|
|
17 | (1) |
|
|
18 | (1) |
|
|
18 | (1) |
|
1.30 Comments on IMPLICIT Statement |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
|
20 | (1) |
|
|
21 | (1) |
|
|
21 | (1) |
|
|
21 | (1) |
|
1.38 Initialization Using DATA Statement |
|
|
21 | (1) |
|
|
22 | (1) |
|
1.40 Integer Variables and BOZ Numbers |
|
|
22 | (1) |
|
1.41 Executable and Non-Executable Statements |
|
|
23 | (1) |
|
|
23 | (1) |
|
|
24 | (1) |
|
1.44 Processor Dependencies |
|
|
24 | (1) |
|
1.45 Compilation and Execution of Fortran Programs |
|
|
24 | (1) |
2 Arithmetic, Relational and Logical Operators and Expressions |
|
25 | (18) |
|
|
25 | (1) |
|
2.2 Arithmetic Expressions |
|
|
26 | (1) |
|
|
26 | (1) |
|
2.4 Rules for Arithmetic Expressions |
|
|
27 | (1) |
|
2.5 Precedence of the Arithmetic Operators |
|
|
28 | (1) |
|
|
29 | (1) |
|
2.7 Mixed-Mode Operations |
|
|
30 | (2) |
|
|
32 | (1) |
|
2.9 List-Directed Input/Output Statement |
|
|
33 | (2) |
|
2.10 Variable Assignment-Comparative Study |
|
|
35 | (1) |
|
|
35 | (1) |
|
2.12 Memory Requirement of Intrinsic Data Types |
|
|
36 | (1) |
|
2.13 Programming Examples |
|
|
36 | (1) |
|
|
37 | (1) |
|
2.15 Assignment of BOZ Numbers |
|
|
38 | (1) |
|
2.16 Initialization and Library Functions |
|
|
39 | (1) |
|
2.17 Relational Operators |
|
|
39 | (1) |
|
2.18 Precedence Rule of Relational Operators |
|
|
40 | (1) |
|
2.19 Relational Operators and Complex Numbers |
|
|
40 | (1) |
|
|
40 | (2) |
|
2.21 Precedence Rule of Logical Operators |
|
|
42 | (1) |
|
2.22 Precedence of the Operators Discussed So Far |
|
|
42 | (1) |
3 Branch and Loop Statements |
|
43 | (28) |
|
|
43 | (1) |
|
|
44 | (1) |
|
|
44 | (2) |
|
|
46 | (2) |
|
|
48 | (1) |
|
3.6 Nested IF without ELSE |
|
|
49 | (1) |
|
|
49 | (2) |
|
|
51 | (2) |
|
|
53 | (1) |
|
|
54 | (1) |
|
|
54 | (1) |
|
3.12 EXIT Statement and CASE |
|
|
54 | (1) |
|
|
55 | (1) |
|
|
56 | (1) |
|
|
57 | (2) |
|
|
59 | (1) |
|
|
59 | (1) |
|
|
60 | (1) |
|
|
60 | (1) |
|
|
61 | (2) |
|
|
63 | (2) |
|
3.22 CYCLE, EXIT and the Nested Loop |
|
|
65 | (1) |
|
3.23 Termination of DO Loop |
|
|
66 | (1) |
|
3.24 Rules of DO Statement |
|
|
66 | (4) |
|
3.25 Remark about Loop Statements |
|
|
70 | (1) |
4 Handling of Characters |
|
71 | (16) |
|
|
71 | (1) |
|
|
71 | (1) |
|
|
72 | (1) |
|
|
73 | (1) |
|
4.5 Comparison of Character Strings |
|
|
73 | (1) |
|
4.6 Lexical Comparison Functions |
|
|
74 | (1) |
|
|
75 | (1) |
|
4.8 Trimming and Adjusting a String |
|
|
75 | (1) |
|
|
76 | (1) |
|
4.10 Character-Integer Conversion |
|
|
77 | (1) |
|
|
77 | (2) |
|
4.12 Programming Examples |
|
|
79 | (2) |
|
4.13 Library Functions INDEX, SCAN and VERIFY |
|
|
81 | (3) |
|
|
84 | (1) |
|
|
85 | (2) |
5 Precision and Range |
|
87 | (12) |
|
|
88 | (2) |
|
5.2 Precision and Range of Real Numbers |
|
|
90 | (1) |
|
|
90 | (2) |
|
|
92 | (1) |
|
|
92 | (2) |
|
5.6 KIND and COMPLEX Constants |
|
|
94 | (1) |
|
5.7 KIND and Character Handling Intrinsics |
|
|
94 | (1) |
|
5.8 Quadruple (Quad) Precision |
|
|
95 | (1) |
|
|
95 | (1) |
|
5.10 IMPLICIT and SELECTED KIND |
|
|
96 | (1) |
|
5.11 Type Parameter Inquiry |
|
|
97 | (1) |
|
5.12 Named Kind Constants |
|
|
97 | (2) |
6 Array and Array-Handling Intrinsics |
|
99 | (64) |
|
|
99 | (2) |
|
6.2 Multidimensional Array |
|
|
101 | (1) |
|
6.3 Storage Arrangement of Two dimensional Array |
|
|
101 | (1) |
|
6.4 Characteristics of Array |
|
|
102 | (2) |
|
|
104 | (1) |
|
|
105 | (1) |
|
6.7 Initialization with DATA Statement |
|
|
105 | (1) |
|
6.8 Repeat Factor and Initialization |
|
|
106 | (1) |
|
6.9 DATA Statement and Implied DO Loop |
|
|
107 | (1) |
|
6.10 Named Array Constant |
|
|
108 | (1) |
|
6.11 Character Variable and Array Constructors |
|
|
108 | (1) |
|
|
109 | (1) |
|
6.13 Array Assignment and Array Arithmetic |
|
|
109 | (2) |
|
|
111 | (3) |
|
|
114 | (1) |
|
|
114 | (1) |
|
6.17 Programming Examples |
|
|
115 | (4) |
|
|
119 | (1) |
|
|
120 | (1) |
|
|
120 | (1) |
|
|
121 | (3) |
|
|
124 | (2) |
|
|
126 | (3) |
|
|
129 | (3) |
|
|
132 | (1) |
|
|
133 | (1) |
|
6.27 EQUIVALENCE Statement |
|
|
134 | (2) |
|
6.28 EQUIVALENCE and Character Variables |
|
|
136 | (2) |
|
6.29 Programming Examples |
|
|
138 | (3) |
|
6.30 Array-Handling Intrinsics |
|
|
141 | (1) |
|
6.31 Maximum, Minimum and Finding Location |
|
|
141 | (5) |
|
|
146 | (1) |
|
6.33 Handling of Arrays of More than Two Dimensions |
|
|
147 | (2) |
|
|
149 | (1) |
|
6.35 Matrix Multiplication |
|
|
149 | (1) |
|
6.36 TRANSPOSE of a Matrix |
|
|
150 | (1) |
|
|
151 | (4) |
|
|
155 | (1) |
|
6.39 Parity of Logical Array |
|
|
156 | (1) |
|
6.40 Locating and Counting Array Elements |
|
|
156 | (2) |
|
6.41 Packing and Unpacking |
|
|
158 | (3) |
|
|
161 | (1) |
|
|
162 | (1) |
7 User Defined Data Type |
|
163 | (12) |
|
|
163 | (1) |
|
|
164 | (1) |
|
|
165 | (1) |
|
7.4 Named Constant and Derived Type |
|
|
165 | (1) |
|
7.5 Keywords and Derived Types |
|
|
166 | (1) |
|
7.6 IMPLICIT and Derived Types |
|
|
166 | (1) |
|
|
166 | (1) |
|
|
167 | (1) |
|
7.9 Array and Derived Types |
|
|
168 | (1) |
|
7.10 Nested Derived Types |
|
|
169 | (1) |
|
7.11 Arrays as Elementary Items |
|
|
170 | (1) |
|
|
171 | (1) |
|
7.13 Derived Types and EQUIVALENCE Statement |
|
|
171 | (1) |
|
7.14 Parameterized Derived Types |
|
|
172 | (3) |
8 Format Statement |
|
175 | (28) |
|
|
175 | (1) |
|
|
176 | (1) |
|
8.3 General Form of Format Statement |
|
|
177 | (1) |
|
|
178 | (1) |
|
8.5 Summary of Edit Descriptors |
|
|
178 | (1) |
|
8.6 Descriptor for Integer |
|
|
178 | (2) |
|
8.7 Descriptors for Real Number |
|
|
180 | (3) |
|
|
183 | (1) |
|
8.9 Format and List Elements |
|
|
184 | (1) |
|
8.10 Descriptors for Complex Number |
|
|
185 | (1) |
|
8.11 Descriptors for BOZ Numbers |
|
|
185 | (1) |
|
8.12 Descriptor for Logical |
|
|
186 | (1) |
|
8.13 Descriptor for Character |
|
|
186 | (1) |
|
8.14 General Edit Descriptor |
|
|
187 | (2) |
|
8.15 Unlimited Repeat Factor |
|
|
189 | (1) |
|
|
189 | (1) |
|
|
190 | (1) |
|
|
191 | (1) |
|
|
192 | (1) |
|
|
192 | (1) |
|
|
193 | (1) |
|
8.22 Apostrophe and Quote Descriptors |
|
|
194 | (1) |
|
|
195 | (1) |
|
|
195 | (1) |
|
|
195 | (1) |
|
|
196 | (1) |
|
8.27 Memory to Memory Input/Output |
|
|
197 | (1) |
|
|
197 | (4) |
|
|
201 | (1) |
|
|
201 | (1) |
|
8.31 Processor Dependency |
|
|
202 | (1) |
9 Auxiliary Storage |
|
203 | (26) |
|
|
203 | (1) |
|
|
203 | (1) |
|
|
203 | (1) |
|
|
204 | (1) |
|
|
204 | (1) |
|
|
204 | (1) |
|
|
204 | (1) |
|
|
204 | (1) |
|
|
204 | (1) |
|
9.10 Scratch and Saved Files |
|
|
205 | (1) |
|
9.11 OPEN, CLOSE and INQUIRE Statements |
|
|
205 | (1) |
|
|
205 | (10) |
|
9.13 Kind Type Parameters of Integer Specifiers |
|
|
215 | (1) |
|
|
215 | (1) |
|
|
215 | (1) |
|
|
215 | (1) |
|
9.17 Data Transfer Statement |
|
|
216 | (1) |
|
9.18 READ/WRITE Statement |
|
|
216 | (3) |
|
9.19 Asynchronous Input/Output |
|
|
219 | (2) |
|
|
221 | (1) |
|
9.21 Rules for Input/Output Control List |
|
|
221 | (1) |
|
|
222 | (1) |
|
|
222 | (1) |
|
9.24 Examples of File Operations |
|
|
222 | (2) |
|
|
224 | (1) |
|
9.26 Storage Unit of Stream Input/Output |
|
|
224 | (1) |
|
9.27 Stream Input/Output Type |
|
|
225 | (1) |
|
|
225 | (1) |
|
9.29 Unformatted Stream File |
|
|
225 | (1) |
|
9.30 Formatted Stream I/O |
|
|
226 | (1) |
|
|
227 | (1) |
|
9.32 Recursive Input/Output |
|
|
228 | (1) |
|
9.33 Processor Dependencies |
|
|
228 | (1) |
10 Numerical Model |
|
229 | (8) |
|
10.1 Numerical Model for Integers |
|
|
229 | (1) |
|
|
229 | (1) |
|
|
230 | (1) |
|
|
230 | (1) |
|
|
230 | (1) |
|
|
231 | (1) |
|
10.7 FRACTION and EXPONENT |
|
|
231 | (1) |
|
10.8 MAXEXPONENT and MINEXPONENT |
|
|
231 | (1) |
|
10.9 Largest and Smallest Real Numbers |
|
|
232 | (1) |
|
10.10 DIGITS for Real Numbers |
|
|
232 | (1) |
|
10.11 RANGE for Real Numbers |
|
|
232 | (1) |
|
|
233 | (1) |
|
|
233 | (1) |
|
|
233 | (1) |
|
|
233 | (1) |
|
|
234 | (1) |
|
|
234 | (1) |
|
|
234 | (1) |
|
10.19 Programming Example |
|
|
235 | (2) |
11 Library Functions |
|
237 | (4) |
|
|
237 | (1) |
|
11.2 Intrinsic Procedures |
|
|
237 | (1) |
|
|
237 | (1) |
|
11.4 Elemental Procedures |
|
|
237 | (1) |
|
|
238 | (1) |
|
11.6 Transformational Functions |
|
|
238 | (1) |
|
11.7 Non-elemental Procedures |
|
|
238 | (1) |
|
|
238 | (1) |
|
11.9 Variable Number of Arguments |
|
|
239 | (1) |
|
|
239 | (1) |
|
11.11 Types of Available Intrinsics |
|
|
239 | (1) |
|
11.12 Intrinsic Statement |
|
|
240 | (1) |
|
11.13 Processor Dependencies |
|
|
240 | (1) |
|
|
240 | (1) |
12 Subprograms |
|
241 | (78) |
|
|
242 | (3) |
|
12.2 SUBROUTINE Subprogram |
|
|
245 | (1) |
|
|
246 | (3) |
|
|
249 | (1) |
|
|
249 | (3) |
|
12.6 Character Type Argument |
|
|
252 | (3) |
|
|
255 | (1) |
|
|
255 | (1) |
|
|
255 | (1) |
|
|
256 | (1) |
|
|
257 | (1) |
|
|
258 | (2) |
|
12.13 User Defined Type as Argument |
|
|
260 | (1) |
|
|
261 | (2) |
|
|
263 | (2) |
|
12.16 PUBLIC and PRIVATE Attributes |
|
|
265 | (5) |
|
12.17 PROTECTED Attribute |
|
|
270 | (2) |
|
|
272 | (2) |
|
12.19 Generic Subprograms |
|
|
274 | (2) |
|
|
276 | (2) |
|
|
278 | (1) |
|
12.22 Operator Overloading |
|
|
279 | (4) |
|
12.23 Overloading of Assignment Operator |
|
|
283 | (1) |
|
12.24 Overloading of Standard Library Functions |
|
|
284 | (1) |
|
12.25 User Defined Operators |
|
|
285 | (2) |
|
12.26 Use Statement and Renaming Operators |
|
|
287 | (1) |
|
12.27 Precedence of Overloaded Operators |
|
|
288 | (1) |
|
12.28 Precedence of User Defined Operators |
|
|
288 | (1) |
|
|
289 | (1) |
|
|
290 | (1) |
|
12.31 Assumed Rank of Dummy Arguments |
|
|
291 | (1) |
|
12.32 Array-Valued Functions |
|
|
292 | (1) |
|
|
292 | (2) |
|
|
294 | (1) |
|
|
295 | (2) |
|
12.36 COMMON and DIMENSION |
|
|
297 | (1) |
|
12.37 COMMON and User Defined Type |
|
|
297 | (1) |
|
12.38 COMMON and EQUIVALENCE |
|
|
297 | (1) |
|
|
298 | (3) |
|
|
301 | (1) |
|
|
301 | (2) |
|
12.42 RECURSIVE SUBROUTINE |
|
|
303 | (2) |
|
|
305 | (1) |
|
12.44 Rules for PURE Procedure |
|
|
305 | (1) |
|
12.45 ELEMENTAL Procedure |
|
|
306 | (1) |
|
12.46 IMPURE ELEMENTAL Procedure |
|
|
307 | (1) |
|
|
308 | (3) |
|
12.48 EQUIVALENCE and MODULE |
|
|
311 | (1) |
|
12.49 Function Calls and Side Effects |
|
|
311 | (1) |
|
12.50 Mechanism of a Subprogram Call |
|
|
312 | (1) |
|
12.51 Recursive Input/Output |
|
|
312 | (1) |
|
12.52 Programming Examples |
|
|
313 | (6) |
13 String with Variable Length |
|
319 | (8) |
|
|
319 | (2) |
|
|
321 | (1) |
|
|
321 | (1) |
|
13.4 Extended Meaning of Intrinsics |
|
|
322 | (1) |
|
|
322 | (1) |
|
|
322 | (1) |
|
|
323 | (1) |
|
|
324 | (1) |
|
|
324 | (1) |
|
|
324 | (1) |
|
|
325 | (2) |
14 IEEE Floating Point Arithmetic and Exceptions |
|
327 | (30) |
|
14.1 Representation of Floating Point Numbers (IEEE Standard) |
|
|
327 | (1) |
|
14.2 Single Precision 32-Bit Floating Point Numbers (IEEE Standard) |
|
|
327 | (3) |
|
14.3 Denormal (Subnormal) Numbers |
|
|
330 | (1) |
|
14.4 Representation of Zero |
|
|
330 | (1) |
|
14.5 Representation of Infinity |
|
|
331 | (1) |
|
14.6 Representation of NaN (Not a Number) |
|
|
332 | (1) |
|
14.7 Summary of IEEE "Numbers" |
|
|
332 | (2) |
|
|
334 | (1) |
|
|
334 | (1) |
|
|
334 | (1) |
|
14.11 Inexact Computation |
|
|
334 | (1) |
|
14.12 Invalid Arithmetic Operation |
|
|
334 | (1) |
|
|
334 | (1) |
|
|
335 | (1) |
|
|
335 | (1) |
|
14.16 Derived Types and Constants Defined in the Modules |
|
|
336 | (1) |
|
|
336 | (1) |
|
14.18 Inquiry Functions (Arithmetic Module) |
|
|
337 | (1) |
|
|
338 | (1) |
|
|
339 | (1) |
|
|
339 | (1) |
|
|
340 | (1) |
|
|
340 | (1) |
|
|
340 | (1) |
|
|
340 | (1) |
|
|
340 | (1) |
|
|
341 | (1) |
|
|
341 | (1) |
|
14.29 IEEE_MAX_NUM and IEEE_MIN_NUM |
|
|
341 | (1) |
|
14.30 IEEE_MAX_NUM_MAG and IEEE_MIN_NUM_MAG |
|
|
341 | (1) |
|
|
341 | (1) |
|
|
342 | (1) |
|
14.33 IEEE_NEXT_AFTER, IEEE_NEXT_DOWN and IEEE_NEXT_UP |
|
|
342 | (1) |
|
|
343 | (1) |
|
|
343 | (1) |
|
14.36 IEEE_GET_ROUNDING_MODE |
|
|
343 | (1) |
|
14.37 IEEE_SET_ROUNDING_MODE |
|
|
344 | (1) |
|
|
344 | (1) |
|
|
345 | (1) |
|
14.40 IEEE_GET_HALTING_MODE |
|
|
345 | (1) |
|
14.41 IEEE_SET_HALTING_MODE |
|
|
345 | (1) |
|
14.42 IEEE_GET_MODES and IEEE_SET_MODES |
|
|
346 | (1) |
|
14.43 IEEE_GET_STATUS and IEEE_SET_STATUS |
|
|
346 | (1) |
|
14.44 IEEE_GET_FLAG and IEEE_SET_FLAG |
|
|
347 | (1) |
|
14.45 IEEE_GET_UNDERFLOW_MODE |
|
|
347 | (1) |
|
14.46 IEEE_SET_UNDERFLOW_MODE |
|
|
348 | (1) |
|
14.47 IEEE_SELECTED_REAL_KIND |
|
|
348 | (1) |
|
14.48 Arithmetic IF and IEEE VALUE |
|
|
349 | (1) |
|
14.49 IEEE_QUIET Compare Routines |
|
|
349 | (1) |
|
14.50 IEEE_SIGNALING Compare Routines |
|
|
349 | (1) |
|
14.51 NaN, Infinity and Format |
|
|
349 | (1) |
|
14.52 Relational Operators, Infinity and NaN |
|
|
350 | (1) |
|
14.53 Exception within a Procedure |
|
|
351 | (1) |
|
14.54 Exception Outside a Procedure |
|
|
352 | (1) |
|
14.55 Programming Examples |
|
|
353 | (2) |
|
|
355 | (1) |
|
14.57 Processor Dependencies |
|
|
355 | (2) |
15 Dynamic Memory Management |
|
357 | (16) |
|
|
357 | (3) |
|
15.2 DEALLOCATE Statement |
|
|
360 | (1) |
|
|
361 | (1) |
|
15.4 Derived Type and ALLOCATE |
|
|
361 | (1) |
|
15.5 Allocated Array and Subprogram |
|
|
362 | (3) |
|
15.6 ALLOCATE and Dummy Parameter |
|
|
365 | (1) |
|
15.7 Allocatable Character Length |
|
|
366 | (1) |
|
15.8 Character and Allocatable Arrays |
|
|
367 | (1) |
|
|
367 | (1) |
|
15.10 Allocatable Function |
|
|
368 | (1) |
|
15.11 Allocation Transfer |
|
|
369 | (1) |
|
15.12 Restriction on Allocatable Arrays |
|
|
370 | (1) |
|
15.13 Programming Example |
|
|
370 | (3) |
16 Pointers |
|
373 | (24) |
|
|
373 | (1) |
|
|
373 | (1) |
|
|
374 | (1) |
|
16.4 POINTER InitiMization |
|
|
374 | (1) |
|
|
374 | (2) |
|
|
376 | (1) |
|
|
376 | (1) |
|
|
377 | (1) |
|
16.9 ALLOCATE and POINTER |
|
|
378 | (1) |
|
16.10 POINTER and ALLOCATABLE Array |
|
|
379 | (2) |
|
|
381 | (1) |
|
16.12 Unreferenced Storage |
|
|
382 | (1) |
|
16.13 ASSOCIATED Intrinsic |
|
|
382 | (1) |
|
|
382 | (1) |
|
16.15 POINTER within Subprogram |
|
|
383 | (1) |
|
16.16 POINTER and Derived Type |
|
|
383 | (1) |
|
16.17 Self-Referencing Pointer |
|
|
384 | (1) |
|
16.18 FUNCTION and POINTER |
|
|
384 | (1) |
|
16.19 POINTER and Subprogram |
|
|
385 | (1) |
|
|
386 | (1) |
|
16.21 PROCEDURE and POINTER |
|
|
386 | (3) |
|
16.22 ALLOCATE with SOURCE |
|
|
389 | (1) |
|
|
390 | (1) |
|
|
390 | (1) |
|
|
391 | (1) |
|
16.26 Programming Example |
|
|
391 | (6) |
17 Bit Handling |
|
397 | (26) |
|
|
397 | (1) |
|
|
397 | (2) |
|
|
399 | (1) |
|
|
400 | (1) |
|
|
401 | (2) |
|
|
403 | (1) |
|
|
404 | (1) |
|
|
404 | (1) |
|
|
404 | (1) |
|
|
405 | (1) |
|
|
405 | (2) |
|
|
407 | (1) |
|
|
408 | (2) |
|
|
410 | (1) |
|
17.15 Bit Sequence Comparison |
|
|
410 | (1) |
|
17.16 Programming Example |
|
|
411 | (1) |
|
|
412 | (1) |
|
|
413 | (1) |
|
|
413 | (1) |
|
|
413 | (1) |
|
|
413 | (1) |
|
|
414 | (2) |
|
|
416 | (1) |
|
|
416 | (1) |
|
17.25 Logical Operations with Array Elements |
|
|
416 | (2) |
|
|
418 | (2) |
|
|
420 | (3) |
18 C-Fortran Interoperability |
|
423 | (20) |
|
18.1 Interoperability of Intrinsic Types |
|
|
423 | (2) |
|
18.2 C Procedure and Interface Block |
|
|
425 | (1) |
|
18.3 Function, Subroutine and C Procedure |
|
|
425 | (1) |
|
18.4 Interoperability with a C Pointer |
|
|
425 | (1) |
|
18.5 Procedures in the Module ISO_C_BINDING |
|
|
425 | (2) |
|
18.6 Compilation and Linking |
|
|
427 | (1) |
|
|
427 | (1) |
|
18.8 Fortran and C Interoperability-Examples |
|
|
427 | (9) |
|
18.9 Interoperation with Global Variables |
|
|
436 | (3) |
|
18.10 C-Fortran Interoperation |
|
|
439 | (1) |
|
|
440 | (3) |
19 Object-Oriented Programming |
|
443 | (38) |
|
19.1 Object and Its Properties |
|
|
443 | (1) |
|
|
444 | (1) |
|
|
445 | (2) |
|
|
447 | (1) |
|
19.5 Polymorphic Variables |
|
|
448 | (2) |
|
19.6 SELECT TYPE Construct |
|
|
450 | (6) |
|
19.7 Allocation and Polymorphic Variables |
|
|
456 | (1) |
|
19.8 Type Bound Procedure |
|
|
457 | (5) |
|
|
462 | (2) |
|
19.10 Overriding Type Bound Procedures |
|
|
464 | (2) |
|
|
466 | (1) |
|
|
467 | (3) |
|
|
470 | (1) |
|
|
471 | (1) |
|
19.15 Derived Type Input and Output |
|
|
472 | (9) |
20 Parallel Programming Using Coarray |
|
481 | (42) |
|
|
481 | (1) |
|
|
482 | (1) |
|
20.3 Compilation of Fortran Program with Coarray |
|
|
482 | (1) |
|
|
483 | (1) |
|
|
484 | (1) |
|
20.6 Input and Output with Coarray |
|
|
484 | (1) |
|
|
484 | (2) |
|
|
486 | (1) |
|
|
486 | (1) |
|
|
487 | (1) |
|
20.11 Multidimensional Coarray |
|
|
487 | (1) |
|
20.12 Upper Bound of the Last CODIMENSION |
|
|
488 | (1) |
|
20.13 Properties of Coarray |
|
|
489 | (1) |
|
|
489 | (1) |
|
|
490 | (1) |
|
|
490 | (1) |
|
20.17 THIS IMAGE with Argument |
|
|
491 | (1) |
|
|
491 | (1) |
|
|
492 | (2) |
|
|
494 | (2) |
|
20.21 ALLOCATABLE Coarray |
|
|
496 | (1) |
|
|
496 | (1) |
|
|
497 | (1) |
|
|
498 | (1) |
|
|
498 | (1) |
|
|
499 | (1) |
|
|
500 | (1) |
|
20.28 Coarray and Subprogram |
|
|
501 | (3) |
|
20.29 Coarray and Function |
|
|
504 | (1) |
|
20.30 Coarray and Floating Point Status |
|
|
505 | (1) |
|
20.31 User Defined Type and Coarray |
|
|
505 | (4) |
|
20.32 COARRAY and POINTER |
|
|
509 | (1) |
|
20.33 Operator Overloading and Coarray |
|
|
510 | (1) |
|
20.34 Atomic Variables and Subroutines |
|
|
511 | (1) |
|
|
512 | (1) |
|
|
512 | (1) |
|
|
512 | (1) |
|
|
512 | (1) |
|
|
513 | (1) |
|
|
513 | (1) |
|
|
513 | (1) |
|
|
513 | (1) |
|
|
514 | (1) |
|
|
514 | (1) |
|
|
514 | (1) |
|
|
515 | (1) |
|
|
516 | (1) |
|
|
516 | (1) |
|
20.49 Coarray and Interoperability |
|
|
516 | (1) |
|
20.50 COMMON, EQUIVALENCE and Coarray |
|
|
516 | (1) |
|
|
516 | (1) |
|
|
517 | (1) |
|
|
517 | (1) |
|
|
518 | (1) |
|
|
519 | (1) |
|
20.56 Programming Examples Using Coarray |
|
|
519 | (4) |
21 Parallel Programming Using OpenMP |
|
523 | (48) |
|
|
523 | (1) |
|
|
523 | (1) |
|
|
524 | (1) |
|
|
524 | (1) |
|
21.5 Application Program Interface (API) |
|
|
524 | (1) |
|
|
524 | (1) |
|
21.7 Compilation of Program Containing Openmp Directives |
|
|
525 | (1) |
|
21.8 Structure of Compiler Directives |
|
|
525 | (1) |
|
|
526 | (1) |
|
21.10 Parallelization Directives |
|
|
526 | (1) |
|
21.11 Clauses Associated with the Directives |
|
|
527 | (1) |
|
|
528 | (1) |
|
21.13 Lexical and Dynamic Region |
|
|
529 | (1) |
|
21.14 Three Runtime Routines |
|
|
529 | (1) |
|
|
530 | (1) |
|
21.16 Clauses Associated with Parallel Construct |
|
|
531 | (1) |
|
|
531 | (1) |
|
|
532 | (1) |
|
|
532 | (1) |
|
|
533 | (1) |
|
|
533 | (1) |
|
|
533 | (1) |
|
|
533 | (1) |
|
|
534 | (1) |
|
21.25 Rules for OMP PARALLEL Directive |
|
|
534 | (2) |
|
21.26 Workshare Construct |
|
|
536 | (1) |
|
|
536 | (1) |
|
21.28 Rules of OMP DO/OMP END DO |
|
|
537 | (1) |
|
21.29 OMP SECTIONS/OMP END SECTIONS |
|
|
537 | (2) |
|
|
539 | (2) |
|
21.31 OMP SINGLE/OMP END SINGLE |
|
|
541 | (1) |
|
21.32 OMP MASTER/OMP END MASTER |
|
|
542 | (1) |
|
|
543 | (3) |
|
21.34 CRITICAL/END CRITICAL |
|
|
546 | (1) |
|
|
547 | (2) |
|
|
549 | (1) |
|
|
550 | (1) |
|
|
551 | (2) |
|
21.39 Rules for THREADPRIVATE |
|
|
553 | (1) |
|
|
553 | (2) |
|
|
555 | (1) |
|
|
555 | (1) |
|
|
556 | (1) |
|
|
557 | (1) |
|
|
557 | (3) |
|
|
560 | (1) |
|
|
561 | (1) |
|
|
562 | (1) |
|
|
563 | (1) |
|
|
564 | (1) |
|
|
564 | (1) |
|
21.52 Openmp Runtime Library Routines |
|
|
564 | (2) |
|
21.53 Runtime Time Routines |
|
|
566 | (1) |
|
21.54 Environment Control |
|
|
567 | (1) |
|
21.55 Environment Variables |
|
|
567 | (1) |
|
21.56 Programming Examples |
|
|
568 | (2) |
|
|
570 | (1) |
22 Parallel Programming Using Message Passing Interface (MPI) |
|
571 | (50) |
|
|
571 | (1) |
|
|
571 | (1) |
|
22.3 Error Parameter of MPI Routines |
|
|
572 | (1) |
|
|
572 | (1) |
|
|
573 | (1) |
|
|
573 | (1) |
|
|
573 | (1) |
|
|
574 | (1) |
|
|
574 | (1) |
|
22.10 Structure of a MPI Program |
|
|
574 | (1) |
|
|
575 | (1) |
|
|
575 | (1) |
|
22.13 Use of Rank in Controlling the Flow of the MPI Program |
|
|
576 | (1) |
|
|
576 | (1) |
|
22.15 Basic MPI Datatype in Fortran |
|
|
577 | (1) |
|
22.16 Point-to-Point Communication |
|
|
577 | (1) |
|
22.17 Communication Modes |
|
|
577 | (1) |
|
22.18 Message Sent and Received |
|
|
578 | (1) |
|
22.19 MPI_SEND and MPI_RECV |
|
|
578 | (3) |
|
|
581 | (1) |
|
|
581 | (1) |
|
|
582 | (1) |
|
|
582 | (1) |
|
22.24 Non-blocking Send and Receive |
|
|
583 | (2) |
|
22.25 Send Function-Naming Conventions in Blocking and Non-blocking Forms |
|
|
585 | (1) |
|
22.26 MPI_ANY_TAG and MPI_ANY_SOURCE |
|
|
585 | (1) |
|
|
586 | (6) |
|
|
592 | (1) |
|
|
593 | (2) |
|
22.30 MPI_REDUCE_SCATTER_BLOCK |
|
|
595 | (1) |
|
|
596 | (1) |
|
|
597 | (1) |
|
|
598 | (1) |
|
|
599 | (1) |
|
|
600 | (1) |
|
|
601 | (2) |
|
|
603 | (1) |
|
|
604 | (1) |
|
22.39 MPI_TYPE_CONTIGUOUS |
|
|
604 | (2) |
|
|
606 | (1) |
|
22.41 MPLTYPE_CREATE HVECTOR |
|
|
607 | (1) |
|
|
608 | (1) |
|
22.43 MPI TYPE_CREATE_HINDEXED |
|
|
609 | (1) |
|
22.44 MPI TYPE_CREATE_INDEXED_BLOCK |
|
|
609 | (1) |
|
22.45 MPI TYPE_CREATE_HINDEXED_BLOCK |
|
|
610 | (1) |
|
22.46 MPI TYPE_CREATE_STRUCT |
|
|
610 | (2) |
|
22.47 MPI_PACK and MPI_UNPACK |
|
|
612 | (1) |
|
|
613 | (2) |
|
|
615 | (1) |
|
22.50 Programming Examples |
|
|
615 | (5) |
|
|
620 | (1) |
Appendix A |
|
621 | (2) |
Appendix B |
|
623 | (2) |
Appendix C |
|
625 | (8) |
Appendix D |
|
633 | (2) |
Appendix E |
|
635 | (2) |
Appendix F |
|
637 | (2) |
Appendix G |
|
639 | (2) |
Appendix H |
|
641 | (2) |
Appendix I |
|
643 | (2) |
References |
|
645 | (2) |
Index |
|
647 | |