Documente Academic
Documente Profesional
Documente Cultură
Welcome
A Brief History
Original Question: Can a Compiled Language Be Efficient? Fortran 66 / 77 (Archaic) Fortran 90 / 95 (Modern) Fortran 2003 Alternation of Large Revisions and Small Revisions Fortran 2008 May Be Substantial
Parameterized Derived Types Inheritance Associate Construct Deferred Type Parameters Asynchronous Input/Output Procedure Pointers Interoperability with C
Specify Kind Values When a Type is Used Within the Type Definition, Use the Kind Values to Specify Kinds of Components Disambiguate Procedure References Based on Kind Values Length Values May Be Determined during Execution
Inheritance
Single Inheritance
Efficiency, Clarity Single look-up (at most) needed during execution to call correct procedure Reference similar to component reference Finalizers (destructors)
Abstract Types
class( root) :: foo select type( foo) type( child) class( root) end select
Associate Construct
Simplify Expressions
Associate Example
associate( x => array( i)% coords% x, & y => array( i)% coords% y, & r2 => array( j)% dist2) r2 = x**2 + y**2 end associate
A Length Parameter Value is Unknown Until the Object Is Associated or Allocated Applies to Pointers, Allocatables, and Dummy Arguments Values Determined During Execution
Asynchronous Input/Output
Specify asynchronous Keyword on Data Declaration Use asynchronous Specifier on Open Statement Use asynchronous Specifier on Data Transfer Statement Use Wait Statement to Await Completion of Transfer
Procedure Pointers
Declared to Be both Procedures and Pointers May Have Either Explicit Interfaces or Implicit Interfaces May Be Used with Abstract Interfaces May Be Type-Bound
Interoperability with C
Allow Access to OS Services, Other Low-Level Libraries Allow C Programs to Access Fortran Numerical Libraries Provide Interoperability of Data and Procedures Convert Between C Pointers and Fortran Pointers
Pointer to Contiguous Memory Same Shape Array Declarations Intent( scratch) Allocate Mold
Concurrent Loop Control Detecting Logical & Character Kind Values Forward Allocatable Declaration Findloc() Rank > 7 Arrays Typeless Intrinsic Type CSV Files
Co-arrays I
Co-arrays II
High-Level Syntax High Efficiency www.co-array.org (Alan Wallcraft) Numerich & Reid at RAL (UK)
Parameterized Modules
Modeled After Ada's Generic Packages See J3 Paper 04-383r1 Instantiation Is Per Module Reference
So for one instantiation per program, wrap the parameterized module reference in a module which specifies the parameters needed
Complete the Complex Arc-Trig Functions Bessel, Gamma, Error Function, Etc. Findloc() Array Search Intrinsic Storage Size C Storage Size More?
Declare Permissible Targets of Pointers Declare Permissible Pointers to Targets Specify that Assumed Shape Arrays will have the Same Extents Specify Pointing to Contiguous Memory Intent( Scratch)
Typeless
popcnt(), poppar(), leadz(), trailz() min, max etc work as unsigned and / or / xor
As Dummy Argument, Accepts Any Type of Actual of Same Size See J3 Paper 05-155r1
Provide an Easy Means to Write CSV Files Provide Access to MATLAB, Mathematica, Maple, S-Plus, Spreadsheets, Etc. Done as an Access Method (?) See J3 Paper 05-108r1
ISO
Ice-Oh
ANSI
ANSI Does Everything www.ansi.org INCITS Does Information Technology www.incits.org TC- Technical Committees J3 www.j3-fortran.org
Volunteer