Fact-checked by Grok 2 weeks ago

Fortran

Fortran is a general-purpose, language designed primarily for numeric computation and scientific computing, featuring strong support for array operations, mathematical functions, and high-performance execution. Developed by a team led by at starting in 1954, it was the first high-level programming language, aimed at translating mathematical formulas into efficient to simplify coding for scientists and engineers. The initial version, known as Fortran I, was commercially released in 1957 as the IBM Mathematical Formula Translating System, with its first delivered in April of that year after testing on the computer. The language's development addressed the limitations of early computers, where programming required low-level code; Fortran reduced the effort dramatically, for example, condensing a problem that took about 1,000 assembly instructions into just 47 Fortran statements. Key contributors included a diverse team of experts such as a crystallographer, cryptographer, and Lois Haibt, who emphasized collaborative learning during the three-year project. Fortran I introduced innovations like an that produced code nearly as fast as hand-assembled programs, setting a for modern compilers. Subsequent versions, such as Fortran II (1958), expanded features like subroutines and capabilities, while the language became a U.S. national standard by the mid-1960s. Over decades, Fortran has evolved through international standards set by ISO and the IEC, with the latest being Fortran 2023, which enhances parallelism through coarrays, teams, and collective operations for (HPC). It supports multiple paradigms, including procedural, object-oriented, and , while remaining statically typed for reliability and efficiency. Today, Fortran dominates in fields like , , nuclear simulations, and benchmarks, powering much of the world's scientific software due to its maturity and performance on parallel architectures. Despite competition from newer languages, it continues to be actively developed and used in mission-critical applications, underscoring its enduring impact on .

History

Origins

Development of Fortran began in 1954 at , led by , with the goal of creating a for the computer to automate mathematical computations that had previously required tedious programming. This initiative addressed the pressing need for greater programming productivity in scientific research during the early computer era, where scientists and engineers often relied on professional programmers to translate formulas into , leading to significant delays and errors. The principles emphasized a language tailored for scientific programming, prioritizing —through algebraic notation resembling mathematical expressions—and in generated , while abstracting away machine-specific details to make it more accessible than low-level alternatives. Backus's team adopted a fixed-form based on 72-column punched cards, where specific columns designated lines (column 6), labels (columns 1-5), and comments (column 7 with a C), facilitating input on the era's hardware while enforcing structured organization. Key innovations in the initial implementation included automatic memory allocation for variables and expression evaluation that handled arithmetic operations without requiring programmers to manage manually, marking a significant departure from practices. The first was completed in 1957, releasing the initial version known as FORTRAN (short for Formula Translation), which dramatically reduced programming effort—for instance, translating a 1,000-line routine into just 47 lines of Fortran .

Early Development

Following the release of FORTRAN I, IBM introduced FORTRAN II in 1958, which significantly enhanced support for larger programs through features like separate of subroutines, linking of relocatable binary modules, and overlay structures to manage efficiently. These additions allowed programmers to modularize , compile subroutines independently while retaining information, and combine FORTRAN and components via a binary subroutine loader, addressing the limitations of monolithic in earlier versions. FORTRAN III, also developed in 1958 and released on a limited basis to approximately 20 installations (primarily sites), extended these capabilities by incorporating support for data types and basic operations, including enhanced I/O with alphanumeric handling via a new FORMAT code "A" for mixed symbolic and FORTRAN statements. However, its proved overly due to heavy reliance on machine-specific features of the , leading to a short lifespan and minimal adoption before development shifted focus. By 1961-1962, FORTRAN IV emerged as a more portable , expanding compatibility across diverse machines and introducing expressions through the logical IF statement, alongside improved handling and diagnostics to aid program reliability. This version also added debugging tools, such as better trace facilities, and expanded library functions available on (e.g., SQRTF for square roots), facilitating broader use in scientific . Key events included rapid adoption by vendors like (for the Solid-State 80) and CDC (for the 1604) starting in 1961, which helped propagate the language beyond IBM systems. Throughout this period, developers faced challenges in balancing portability with machine-specific optimizations, particularly as hardware transitioned from vacuum tube-based systems like the to transistorized architectures such as the , which demanded adjustments for differing word lengths, memory constraints, and I/O mechanisms. These evolutions from FORTRAN I's fixed layout laid the groundwork for more robust programming practices.

Standardization

The formal standardization of Fortran commenced in the mid-1960s amid growing concerns over inconsistencies across vendor implementations of FORTRAN IV, which featured varying interpretations of syntax and semantics. The American Standards Association (ASA), predecessor to the American National Standards Institute (ANSI), established the X3J3 committee to address these ambiguities and create a unified specification. This work resulted in the first official standard, FORTRAN 66 (ANSI X3.9-1966), published on March 7, 1966, which defined a core language for enhanced portability by stripping away many machine-dependent vendor extensions while retaining essential elements like program units (main, SUBROUTINE, FUNCTION, BLOCK DATA), data types (INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL), and statements for control flow, arrays, and I/O. FORTRAN 66 marked the first programming language to achieve formal standardization, earning international recognition through adoption by the International Organization for Standardization (ISO) shortly thereafter. By focusing on a minimal, consistent subset derived from FORTRAN IV, the standard promoted interoperability across diverse computing environments, though it drew criticism for its austerity, such as the absence of advanced features like formatted I/O enhancements present in some proprietary dialects. The X3J3 committee's efforts ensured that compilers adhering to this specification could produce portable code, significantly reducing the fragmentation that had plagued earlier Fortran variants. As computational needs evolved, the X3J3 committee initiated revisions in the early 1970s to incorporate constructs without sacrificing compatibility. This culminated in Fortran 77 (ANSI X3.9-1978), approved in April 1978 and also adopted by ISO, which extended the language with features including the block IF statement for improved , the data type for handling, parameterized DO loops, and direct-access I/O for efficient file operations. Debates within the committee highlighted tensions between advocates for fuller paradigms—such as eliminating GOTO statements—and proponents of to support the vast existing codebase, ultimately favoring a conservative approach that made Fortran 77 a superset of FORTRAN 66. Fortran 77 rapidly achieved dominance as the de facto global standard for scientific computing, with widespread implementation in compilers by major vendors and integration into educational curricula and industrial workflows through the . Its fostered reliability in numerical applications, enabling consistent performance across platforms and solidifying Fortran's role in until subsequent revisions.

Fortran 90 and 95

Fortran 90, formally known as ISO/IEC 1539:1991, represented a major revision of the language, developed by the ANSI X3J3 subcommittee (now INCITS J3) in collaboration with the international ISO/IEC JTC1/SC22/WG5 during the . This effort aimed to modernize Fortran by incorporating elements, such as modules for and improved array handling, while ensuring full with Fortran 77 to preserve existing codebases in scientific and engineering applications. The standard was published in 1991 after extensive deliberation to balance innovation with reliability, addressing limitations in earlier versions like fixed-form source code and static memory allocation. Key innovations in Fortran 90 included free-form source code, which allowed statements to span multiple lines without column restrictions, enhancing readability and reducing errors from punched-card era constraints. Modules provided a mechanism for organizing code into reusable units, encapsulating data types, variables, and procedures to promote modularity; for example, a module might define a type and associated operations accessible via USE statements in other programs. Dynamic memory management was introduced through the ALLOCATE and DEALLOCATE statements, enabling runtime allocation of arrays whose sizes were determined during execution, such as ALLOCATE(A(10)) for a one-dimensional array. Recursive procedures were permitted, allowing functions to call themselves, which facilitated more elegant solutions to problems like tree traversals. To streamline the language, several outdated features from Fortran 77 were designated obsolescent, including Hollerith constants for character data and the EQUIVALENCE statement for overlaying storage, signaling their potential removal in future standards. Fortran 95, defined by ISO/IEC 1539-1:1997, built on Fortran 90 with minor refinements and was published in 1997 as a technical corrigendum and extension, maintaining compatibility while addressing practical needs in high-performance computing. Notable additions included the FORALL construct for concurrent array assignments without dependencies, improving expressiveness for vectorized operations, as in FORALL (I=1:N) A(I) = B(I) + C(I). PURE procedures were introduced to denote functions without side effects, enabling compiler optimizations and safer use in parallel contexts. Conditional compilation via directives in ISO/IEC 1539-3:1997 allowed source code variants for different platforms, such as #ifdef blocks for architecture-specific code. Minor enhancements supported varying-length character strings through adjustable bounds. This revision also deleted obsolescent features from Fortran 90, such as Hollerith constants and EQUIVALENCE, to simplify the language core. The introduction of these features in Fortran 90 and 95 marked a pivotal shift, revitalizing the language for modern scientific computing by supporting larger, more maintainable codebases and leveraging emerging hardware capabilities like vector processors. This overhaul facilitated Fortran's continued dominance in numerical simulations and , with widespread adoption in academic and national laboratory environments.

Modern Revisions

The modern revisions of Fortran, beginning with the 2003 standard, have introduced advanced language capabilities to address evolving demands in high-performance computing, object-oriented design, and interoperability with other languages. These updates build on the foundational modernizations of Fortran 90 and 95 by incorporating features for parallelism, safety, and integration with contemporary software ecosystems. Published as ISO/IEC 1539-1:2004, Fortran 2003 marked a significant expansion, adding support for object-oriented programming through classes, inheritance, and polymorphism via type-bound procedures and dynamic dispatch. It also introduced interoperability with C via the ISO_C_BINDING module, enabling seamless calling of C functions and data sharing, which facilitates integration with libraries written in other languages. Additionally, parameterized derived types were added, allowing generic programming by parameterizing type definitions at compile time. Fortran 2008, formalized in ISO/IEC 1539-1:2010, further enhanced modularity and performance for large-scale applications. A key addition was submodules, which extend modules by providing a hierarchical structure for private implementation details without exposing them to users, improving code organization and encapsulation. Parallel I/O capabilities were introduced through enhancements to the OPEN and INQUIRE statements, supporting operations across multiple processes to optimize handling in distributed environments. The standard also expanded intrinsic functions for mathematical operations, including support and improved bitwise operations, to better serve numerical computations. The Fortran 2018 revision, published as ISO/IEC 1539-1:2018, emphasized concurrency and robustness in response to multi-core architectures and high-performance needs. It expanded the DO CONCURRENT construct from Fortran 2008, adding support for reduction clauses and local initialization to enable more efficient loop-level ism without data races. Coarray teams were introduced, allowing dynamic creation and management of groups of images for scalable execution, building on the coarray model for programming. Error handling was improved with the introduction of the STOP statement's support and enhanced ALLOCATE failure options, promoting safer program execution. Fortran 2023, released as ISO/IEC 1539-1:2023, focuses on enhanced expressiveness, safety, and further interoperability to meet modern development practices. It introduces enumerated types (ENUMs) for defining named constants, reducing errors in code that relies on flags. A standardized with directives for conditional compilation and macro-like expansions was added, improving portability across compilers that previously relied on non-standard tools like . C interoperability was extended with features such as improved pointer handling and value types, streamlining mixed-language projects. These changes prioritize performance optimizations, like longer source lines and automatic reallocation for character variables, while addressing security concerns through obsolescence of vulnerable features. The evolution of Fortran's standardization process reflects a shift toward greater . Originally managed by the U.S.-based INCITS J3 (formerly X3J3), development now involves ISO/IEC JTC1/SC22/WG5, which coordinates input from national bodies worldwide to ensure global applicability. This structure has enabled responses to demands from and multi-core systems, with features like coarrays and teams directly addressing scalability in parallel environments. As of 2025, work is underway on the next revision, tentatively Fortran 2025, with ongoing meetings and work item lists developed by WG5.

Language Features

Syntax and Layout

Fortran's syntax and layout have evolved significantly since its inception, transitioning from rigid, column-based formatting suited to punched-card input to more flexible structures that accommodate modern text editors and development practices. The language defines two primary source forms: fixed form, which was the sole format in early standards like Fortran 77, and free form, introduced in Fortran 90 to enhance readability and portability. These forms govern how lines are structured, including positioning of statements, comments, and continuations, while maintaining compatibility across implementations. In fixed form, source code adheres to a strict 72-column layout derived from 80-column punched cards, where positions 1 through 5 are reserved for optional statement labels (numeric identifiers for branching), position 6 indicates line continuation with any non-blank character (often '0' through '5'), and positions 7 through 72 contain the actual code. Positions 73 through 80, if present, are ignored as optional sequence numbers. Comments in fixed form begin with 'C', 'c', '*', or '!' in column 1, extending to the end of the line, and statements must start in column 7 or later unless labeled. Continuation lines are limited to a maximum of 19 in practice for many compilers, though the standard permits up to 255, and blank characters in column 6 signal the start of a new statement. This format, while obsolescent since Fortran 95, remains supported for legacy code portability. Free form, the default since Fortran 90, removes column restrictions, allowing code to begin anywhere on a line up to a maximum of 132 characters (extendable by processors). Statements can span multiple lines via an ampersand (&) as the last non-blank character before any comment or end-of-line, with an optional leading & on the continuation line for clarity; up to 255 such continuations are allowed. Comments start with '!' anywhere on the line and extend to the end, enabling inline annotations without disrupting layout. Semicolons may separate multiple statements on a single line in free form, though they are optional at the end, and block constructs like programs or subroutines require explicit END statements to terminate. Fortran keywords and identifiers are case-insensitive throughout both forms, treating variants like "" and "" as identical, which simplifies code but requires careful naming to avoid unintended matches in mixed-case environments. This feature, consistent since the language's early days, applies to all lexical tokens except character literals. The evolution from fixed to free form reflects Fortran's adaptation to computing advancements, moving away from the punched-card era's constraints—where early programs like those on systems demanded precise columnar alignment—to editor-friendly formats that support indentation for readability without altering semantics. Fixed form has been obsolescent since Fortran 95 but remains supported for in modern standards, allowing mixed use via directives or file extensions (e.g., .f for fixed, .f90 for free). For example, a simple assignment in fixed form might appear as:
      X = 1.0
while in free form, it could be indented and annotated:
  x = 1.0  ! Initialize variable
Both execute identically due to case insensitivity and layout flexibility in the latter.

Data Types and Declarations

Fortran supports five intrinsic data types: integer for whole numbers, real for floating-point values, complex for numbers with real and imaginary parts, logical for boolean values, and character for strings. These types can be specified with a kind parameter to control storage size and precision, which is processor-dependent but often follows common conventions such as INTEGER(KIND=4) for 32-bit integers or REAL(KIND=8) for double-precision floating-point with approximately 15 decimal digits of precision. For example, the declaration integer(kind=4) :: i allocates a 32-bit signed integer variable, while real(kind=8) :: x = 3.14159 declares a double-precision real. Variables in Fortran must be declared explicitly when using the IMPLICIT NONE , which disables the default implicit typing rules (where variables starting with I-N are integers and others reals) and is recommended for all modern code to enhance and prevent errors. Declarations follow the syntax type-specifier :: variable-list, such as integer :: count, index or character(len=20) :: name. Constants are defined using the PARAMETER attribute, ensuring their values cannot be modified at ; for instance, real, parameter :: pi = 3.1415926535 creates an unchangeable double-precision constant. Introduced in Fortran 90, derived types allow users to create composite data structures by combining intrinsic or other derived types as components, enabling encapsulation similar to or structs in other languages. A derived type is declared using the TYPE construct, such as:
type :: point
  real :: x, y
end type point
This defines a type with two real components, which can then be instantiated as type(point) :: origin and accessed via origin%x = 0.0. Components support initialization, either at declaration (e.g., real :: z = 0.0 within the type) or via structure constructors like type(point)(1.0, 2.0). For dynamic memory management, Fortran provides the allocatable and pointer attributes, both introduced in Fortran 90 to support flexible storage allocation without fixed sizes at . The allocatable attribute applies to variables or components, allowing allocation via the ALLOCATE statement; for example, real, allocatable :: array(:) declares a one-dimensional allocatable array, which can be sized with allocate(array(100)). Allocatable entities are automatically deallocated when out of scope, promoting safer memory handling compared to static arrays. The pointer attribute designates variables that reference (or "point to") other data objects, useful for linked structures or ; declaration uses type, pointer :: var, and association occurs via => in statements like allocate(target); var => target. Pointers must target entities with the TARGET attribute if needed, and they support dynamic polymorphism but require explicit nullification to avoid dangling references. Fortran 2003 extended derived types with object-oriented features, including type-bound procedures that bind specific subroutines or functions directly to a type, facilitating encapsulation and polymorphism. These are declared after the CONTAINS statement within a type definition, such as:
type :: vector
  real :: components(3)
contains
  procedure :: norm => vector_norm
end type vector
This allows invoking the bound procedure as vec%norm(), where vector_norm is an external subroutine, integrating behavior with data in an manner without global procedure calls. Type-bound procedures support generics and finalizers for cleanup, enhancing modularity in complex simulations.

Control Structures

Fortran's control structures have evolved significantly since the language's , transitioning from unstructured branching mechanisms to modern, structured constructs that promote and . The original Fortran (1957) featured the arithmetic IF statement, which conditionally transferred control to one of three labels based on whether an arithmetic expression evaluated to negative, zero, or positive, reflecting the era's reliance on unconditional statements for flow control. This approach, while efficient for early compilers, led to "" issues, prompting later revisions to introduce more disciplined alternatives. The Fortran 77 standard marked a pivotal shift toward by introducing the block IF construct, which allowed multi-line conditional blocks with ELSE and ELSE IF clauses, replacing much of the need for arithmetic IF (now deprecated but still supported for legacy code). The block IF syntax is:
IF (logical-expression) THEN
    block
[ELSE IF (logical-expression) THEN
    block
]...
[ELSE
    block
]
END IF
This enables chains of ELSE IF for handling multiple conditions, evaluating the logical expression (using relational operators like ==, /=, <, >, <=, >=) sequentially until a true branch is found or the ELSE executes. Looping constructs began with the indexed DO loop in early Fortran, specifying fixed iteration bounds and an optional step, as in DO i = 1, 10 or DO i = 1, 10, 2 for even increments. Fortran 77 formalized this as a block construct (END DO), preventing unstructured entry or exit except via transfers like (discouraged). The DO WHILE loop, added in Fortran 90, supports condition-based iteration without a predefined counter: DO WHILE (logical-expression) ... END DO, repeating until the expression is false. Fortran 2008 introduced DO CONCURRENT for expressing independent iterations amenable to parallel execution, though its core sequential semantics align with traditional loops; parallel aspects are detailed elsewhere. The SELECT CASE construct, introduced in Fortran 90, provides efficient multi-way branching on a scalar expression, akin to a , avoiding lengthy IF-ELSE IF chains for discrete values. Its syntax is:
SELECT CASE (expression)
    CASE (case-value-list)
        block
    [CASE DEFAULT
        block
]
END SELECT
Case values can be constants, ranges (e.g., 1:5), or defaults, with the first matching case executing; the expression must be , logical, , or compatible. For finer loop control, Fortran 90 added and statements, applicable to any enclosing DO construct (including named ones for nesting). terminates the loop immediately, transferring control to the statement after END DO, as in IF (condition) [EXIT](/page/Exit) to break early. skips the remaining statements in the current iteration, advancing to the next, useful for filtering, e.g., IF (i > 5) [CYCLE](/page/Cycle) to ignore later values. These enhancements, building on Fortran 77's foundations, ensure robust, structured flow control across revisions.

Procedures and Modules

In Fortran, procedures provide a mechanism for modularizing code through subroutines and functions. Subroutines are invoked using statement and perform actions without returning a directly, while functions are invoked within expressions or assignments and return a computed via the RESULT clause or the function name. This distinction allows subroutines to handle side effects like or state modifications, whereas functions emphasize pure computations. Dummy arguments in procedures specify the interface for actual arguments passed from the caller. By default, Fortran passes arguments by reference, meaning the procedure receives a pointer to the actual argument's , allowing modifications to propagate back to the caller. The attribute, introduced in Fortran 90, clarifies the usage intent of dummy arguments to aid optimization and error detection: indicates input-only arguments that cannot be modified; specifies output arguments whose initial values are undefined and must be defined before use; allows both input and output, with the argument modifiable and its initial value preserved. For example, in a subroutine printing a :
fortran
subroutine print_matrix(n, m, A)
  [integer](/page/Integer), intent(in) :: n, m
  real, intent(in) :: A(n, m)
  ! Printing logic here
end subroutine print_matrix
Here, n and m are inputs, and A is read-only. Fortran 2003 introduced the VALUE attribute for scalar dummy arguments in procedures with explicit interfaces and the BIND(C) attribute, enabling pass-by-value semantics where a local copy is made, isolating changes from the caller—primarily for C interoperability. Modules, added in Fortran 90, encapsulate data and procedures to promote reusability and management. A declares entities with or access specifiers: entities are accessible outside the , while ones are hidden, enforcing encapsulation. The CONTAINS within a defines internal procedures, and the USE imports entities into a program unit, optionally with ONLY to limit imports. For instance:
fortran
module math_utils
  implicit none
  private
  public :: vector_norm
contains
  function vector_norm(n, vec) result(norm)
    integer, intent(in) :: n
    real, intent(in) :: vec(n)
    real :: norm
    norm = sqrt(sum(vec**2))
  end function vector_norm
end module math_utils
This module exports only vector_norm, keeping internal details private. USE math_utils; then invokes vector_norm(5, v) in the main program. Recursion became supported in Fortran 90 via the RECURSIVE prefix on SUBROUTINE or FUNCTION statements, allowing a procedure to invoke itself directly or indirectly, with local variables allocated on the stack per call. Prior standards prohibited recursion to simplify storage management. Procedure interfaces, also from Fortran 90, enable overloading through generic INTERFACE blocks, where a single name resolves to specific procedures based on argument types, ranks, or kinds—distinguishing calls without ambiguity. For example, a generic norm could overload for scalars, vectors, and matrices via an INTERFACE norm with multiple specific bindings. Fortran 2008 extended modules with submodules, which nest under a parent module or another submodule to organize implementations separately from s. A submodule provides definitions for s declared in its ancestor, accessing ancestor's entities via host association without USE, and supports descendant submodules for hierarchical structures. This facilitates large-scale projects by reducing recompilation dependencies and isolating implementation details, as is implicit for entities. For example, a parent module declares a , while a submodule supplies its body, enhancing without exposing internals.

Arrays and Parallelism

Fortran arrays have evolved significantly since the language's inception, transitioning from static, fixed-size declarations in early standards like Fortran 77 to dynamic allocatable arrays introduced in Fortran 90, which allow runtime dimensioning via the ALLOCATABLE attribute. This progression culminated in advanced parallel features in later revisions, such as assumed-rank arrays in Fortran 2018, enabling flexible handling of arrays of varying ranks without explicit rank specification. These developments reflect Fortran's adaptation to scientific computing needs, emphasizing efficiency in memory usage and parallelism for high-performance applications. Arrays in Fortran are declared using a type specifier followed by dimensions in parentheses, as in REAL :: A(10) for a one-dimensional array of ten real numbers, with indices starting at 1 by default and support for custom lower bounds like REAL :: B(-5:5). Whole-array operations permit concise element-wise computations without loops, such as A = B + C or assignment of constants like A = 0.0, leveraging the language's array-centric design for vectorizable code. further enhances manipulation, allowing sections like A(1:5) for the first five elements, A(1:10:2) for every other element, or multidimensional slices like Matrix(:, 1) for an entire column, all without data copying in many cases. Intrinsic functions underpin efficient and by compilers. The SUM function reduces an array to its scalar sum or along a , as in total = SUM(A), promoting reduction for multidimensional arrays. Similarly, MATMUL handles for compatible -1 or -2 arrays, treating vectors appropriately as rows or columns and supporting logical operations with .AND., which compilers optimize for SIMD instructions. Parallelism at the array level began with the FORALL construct in Fortran 90, a non-iterative generalization of masked array assignments that specifies independent element operations executable in any order, facilitating compiler-directed parallelism without explicit threading. This was introduced alongside the DO CONCURRENT construct in Fortran 2008, which structures loops for potential concurrent iteration execution across threads or devices, assuming no inter-iteration dependencies to enable safe parallelization, as in DO CONCURRENT (i=1:100) A(i) = B(i) + C(i). Fortran 2008 introduced coarrays for distributed-memory parallelism in a single-program multiple-data (SPMD) model, where arrays are declared with a codimension section like REAL :: X(100)[*] to replicate across images (processing units). Remote data access uses square-bracket notation, such as X = Y[2] to copy from image 2, with each image maintaining private memory copies. Synchronization ensures consistency via constructs like SYNC ALL for global barriers or SYNC IMAGES(img) for specific images, supporting scalable parallel algorithms with minimal code changes.

Applications

Scientific Computing

Fortran has been foundational in since its inception, enabling the implementation of complex mathematical models for atmospheric simulations. Developed in the mid-1950s to address the computational demands of scientific calculations, Fortran facilitated the first successful numerical forecasts by handling iterative solutions to partial differential equations that describe weather dynamics. Today, major operational models, such as those used by the (NOAA), continue to rely on Fortran for core numerical routines due to its proven reliability in processing vast meteorological datasets. In quantum chemistry, Fortran powers key software packages like Gaussian, which performs high-accuracy ab initio computations to predict molecular geometries, energies, and spectra. These tools leverage Fortran's robust support for intricate algorithms involving electron correlations and basis set expansions, essential for advancing chemical research. Similarly, early adoption in physics at involved Fortran-based codes for simulating nuclear processes and particle transport, where the language's efficiency supported critical national security applications during the era. A 2023 Los Alamos report highlights that many such legacy physics codes remain in active use, underscoring Fortran's enduring role in high-stakes simulations. Fortran's integration with libraries like BLAS (Basic Linear Algebra Subprograms) and (Linear Algebra Package) enhances its utility in scientific computing by providing optimized Fortran routines for and operations, which are ubiquitous in and modeling. These libraries enable efficient solving of linear systems and eigenvalue problems, forming the backbone of algorithms in fields ranging from physics to . In biological simulations, for example, Fortran programs such as BIOTURB model bioturbation effects on distributions, while others simulate protein dynamics and genetic evolution, demonstrating the language's versatility in handling stochastic processes and large-scale biomolecular data. A primary advantage of Fortran in scientific contexts is its precise control over numerical representations, supporting data types from single to quadruple precision to mitigate errors in extended computations involving floating-point operations. Complementing this, Fortran's native I/O facilities excel at managing large datasets through unformatted binary transfers, which minimize overhead and support direct access for terabyte-scale simulation outputs. As of 2025, Fortran dominates open-source scientific software ecosystems, with its popularity surging in numerical and data-intensive applications and ongoing adoption in peer-reviewed research tools.

Engineering and Simulation

Fortran has been instrumental in engineering simulations since the mid-20th century, particularly in finite element analysis (FEA) for structural integrity and (CFD) for aerodynamic and hydrodynamic modeling. Its robust numerical capabilities enable engineers to solve complex partial differential equations that govern physical phenomena in materials under stress or fluids in motion. Key software packages developed in Fortran exemplify this role; for instance, , originally created by in the late 1960s, remains a cornerstone for multidisciplinary , performing static, dynamic, and thermal simulations on components. In CFD, Fortran-based solvers like NASA's FUN3D and CFL3D facilitate high-fidelity simulations of viscous flows around aircraft and vehicles, leveraging the language's efficiency in handling large-scale matrix operations. Fortran's built-in support for complex data types is particularly valuable in simulations, where it models impedance and representations in circuit analysis and computations. For example, complex numbers allow direct manipulation of signals without decomposing into real and imaginary components manually, streamlining simulations of power systems and antennas. Additionally, Fortran's double arithmetic, which provides up to 15-16 decimal digits of accuracy, is essential for maintaining in iterative solvers common to engineering models, reducing rounding errors in stress-strain calculations or . In industry applications, Fortran powers critical simulations in , where continues to rely on legacy Fortran codes for mission-critical analyses like and re-entry dynamics. In the automotive sector, tools such as PAM-CRASH utilize Fortran for explicit finite element crash simulations, predicting vehicle deformation and occupant safety during high-speed impacts. These examples highlight Fortran's enduring impact on design validation, enabling virtual prototyping that minimizes physical testing costs. The evolution of Fortran in traces back to the , when it supported batch-processed simulations on mainframes for early FEA and CFD prototypes, often integrated with nascent systems. By the 1970s and 1980s, advancements in Fortran standards allowed seamless incorporation into (CAD) environments, facilitating interactive modeling of complex geometries. As of , Fortran persists in through legacy systems wrapped in modern interfaces, such as or C++ bindings, ensuring compatibility with contemporary workflows while preserving validated simulation accuracy.

High-Performance Computing

Fortran has maintained a prominent role in high-performance computing (HPC), particularly on supercomputers listed in the TOP500 rankings, where it powers many scientific simulations due to its optimized handling of numerical computations and array operations. For instance, the Frontier supercomputer at Oak Ridge National Laboratory, ranked second on the TOP500 list as of June 2025 with a performance of 1.353 exaFLOPS, extensively utilizes Fortran-based codes for applications such as climate modeling through the Energy Exascale Earth System Model (E3SM). In E3SM, Fortran components enable high-resolution simulations of atmospheric and oceanic processes, achieving record performance metrics like 1.26 simulated years per day on Frontier's cloud-resolving configurations. This dominance stems from Fortran's legacy in legacy codes and its efficiency in vectorized operations, making it a staple for workloads that constitute a significant portion of supercomputer runtime in fields like earth system modeling. Fortran integrates seamlessly with frameworks essential for distributed and shared-memory computing in HPC environments. The (MPI) and are widely adopted for Fortran applications, enabling scalable distributed-memory parallelism across clusters and node-level thread-based acceleration, respectively; hybrid MPI-OpenMP approaches have demonstrated performance gains in exascale prototypes by combining inter-node communication with intra-node vectorization. As a native alternative, Fortran's coarray feature, introduced in the 2008 standard, supports programming without external libraries, offering simpler syntax for parallel data sharing in multi-node setups. These integrations allow Fortran codes to exploit the heterogeneous architectures of modern supercomputers effectively. Compilers such as those from and provide advanced optimizations tailored for HPC, particularly in , which enhances performance on vector processors and SIMD units by transforming scalar loops into instructions. For example, Cray's options, including the -O vector n flag, can yield significant speedups in array-heavy computations with minimal changes, while 's Fortran uses directives like !DIR$ IVDEP to guide aggressive , achieving up to several-fold improvements in benchmarks on multi-core systems. Studies comparing these compilers on HPC mini-applications have shown and achieving high rates, often exceeding 80% efficiency on relevant workloads. In recent exascale developments, Fortran continues to adapt for systems like at , which entered production in early 2025 using Max and GPU Max processors and is ranked third on the list as of November 2025 with 1.012 exaFLOPS; preparation efforts emphasize Fortran compatibility via offloading for GPU acceleration. Tools like extend Fortran's parallelism to exascale GPUs, enabling codes to run efficiently on heterogeneous nodes without full rewrites. However, challenges persist in migrating or CPU-centric Fortran codes to heterogeneous GPU systems, including performance portability across architectures and the need for directives-based offloading, which can introduce overheads and require substantial refactoring to maintain at exascale.

Implementations and Portability

Compilers and Tools

The development of Fortran compilers began with the pioneering efforts at , where the first Fortran was released in 1957 for the computer, marking the advent of the first with an . This initial implementation, led by , translated mathematical formulas into efficient , significantly advancing scientific computing. Subsequent compilers, such as Fortran II in 1958, introduced features like subroutines and function subprograms, evolving the language while maintaining backward compatibility. Among contemporary Fortran compilers, gfortran, the GNU Fortran frontend integrated into the GNU Compiler Collection (), stands as a free, open-source option supporting Fortran standards up to 2018 and beyond, with the latest 15.2 release in August 2025 providing robust optimizations for general-purpose use. The Intel Fortran Compiler, now primarily the LLVM-based ifx in the oneAPI 2025 release, is optimized for x86 architectures and Intel hardware, offering advanced for Intel processors while discontinuing the legacy ifort edition. For (HPC), the HPE Compiling Environment (CCE) Fortran compiler targets supercomputing systems, supporting most features of the Fortran 2023 standard except for the .NIL. constant and leveraging / backends for vector processors and accelerators. Additionally, Flang, an open-source -based Fortran compiler initiated around 2018, has matured by 2025 into a production-ready tool, renamed from flang-new and integrated into the ecosystem for modular, extensible compilation. LFortran, another open-source LLVM-based Fortran compiler, is a modern, interactive tool currently in alpha quality (stable release 0.58.0 as of December 2025), supporting interactive development and under active maintenance. Supporting these compilers are essential development tools, including debuggers like (GDB), which integrates seamlessly with gfortran for breakpoint setting and variable inspection on systems. For HPC environments, specialized debuggers such as TotalView and Arm DDT provide multi-process debugging capabilities for parallel Fortran applications. Profilers, including VTune Profiler bundled with oneAPI, enable performance analysis by identifying bottlenecks in memory access and computation loops. Integrated development environments (IDEs) like Photran, an Eclipse-based plugin, offer , refactoring, and build integration specifically for Fortran, supporting cross-platform workflows. Modern Fortran compilers in 2025 incorporate advanced features such as and to exploit multicore processors and SIMD instructions without manual intervention. For instance, ifx enables auto-vectorization at optimization level -O2 and higher, transforming scalar into vectorized code for improved throughput on enabled hardware. Similarly, gfortran supports parallelization via the -ftree-parallelize-loops flag, distributing iterations across threads, while HPE CCE applies directive-based auto-parallelization for DO CONCURRENT constructs in HPC workloads. These features, refined through iterative releases, allow compilers to achieve near-peak on diverse architectures by analyzing dependencies and structures. Fortran compilers exhibit broad cross-platform availability, running on operating systems from Windows and to macOS, and scaling to supercomputers via distributions like and . gfortran, for example, compiles natively across these platforms through binaries, ensuring portability for scientific applications. oneAPI tools extend to Windows and , while Flang's foundation facilitates builds on embedded systems to large clusters. HPE environments, though HPC-centric, support x86 and architectures for deployment on diverse supercomputing infrastructures.

Standards Compliance

Fortran standards compliance has evolved significantly since the language's inception, ensuring portability across implementations. In the , early Fortran implementations were often loose and vendor-specific, with dialects proliferating due to minimal ; the first ANSI standard, Fortran 66, was published in to address this but permitted extensions that hindered full . By the and , the Fortran 77 standard (ANSI X3.9-1978) introduced stricter conformance requirements, though was gradual as compilers updated slowly, leading to a more reliable but still varied ecosystem. The marked a pivotal shift with Fortran 90 (ISO/IEC 1539:1991), which mandated compilers to diagnose non-standard syntax and errors, enforcing rigorous testing and reducing dialectal deviations for enhanced portability. Validation of standard conformance relies on test suites designed to verify adherence to ISO/IEC specifications. Historically, the National Institute of Standards and Technology (NIST) developed comprehensive test programs in the 1970s, such as the NBS FORTRAN Test Programs, to check compliance with Fortran 66 and early revisions by exercising language forms and interpretations. These suites, written in standard Fortran, remain influential for legacy validation, though modern efforts have shifted toward community-driven and vendor-specific tools; for instance, the J3 Fortran committee has proposed a thorough testsuite covering positive and negative cases for all standard features and constraints since 2019, aiding ongoing verification. Frameworks like the Berkeley Lab Fortran Compiler Test Suite further support testing by providing a modular set of cases to evaluate behavior against current standards. Compliance levels vary between full implementation and subsets, allowing developers to target core features for broader portability. For example, the (ISO/IEC 1539-1:2010) defines a baseline "core" subset excluding advanced parallel features like coarrays, which some compilers, such as early implementations, supported partially for while deferring full adoption. Major compilers report feature-by-feature support rather than binary full/partial status; XL Fortran, starting with version 14.1, achieved progressive compliance with Fortran 2008 elements like submodules and polymorphic entities, reaching near-full coverage by later releases. This tiered approach ensures essential syntax and semantics are portable, with subsets like the Fortran 2008 core enabling compatibility across diverse hardware without requiring every optional extension. Vendor-specific extensions often contrast with standard purity, introducing flags that enhance performance or compatibility but risk portability. For instance, the GNU Fortran compiler's -fdefault-real-8 option defaults real literals to double precision (kind 8), a non-standard mimicking older dialects for legacy code, while standard-compliant modes enforce single precision unless specified. Similarly, DEC compatibility modes in gfortran enable nonstandard features like abbreviated keywords to emulate historical compilers, but these must be disabled for ISO conformance to avoid vendor lock-in. compilers include extensions for vector programming and shared extensions with other vendors, which are flagged during compilation to distinguish them from pure standard features, promoting awareness of potential issues. As of 2025, Fortran 2018 (ISO/IEC 1539-1:2018) enjoys near-universal support among major compilers, facilitating widespread portability for modern applications. The Fortran Compiler (ifx) in its 2025 release fully implements all Fortran 2018 features, including enhanced IEEE arithmetic and assume directives. (gfortran) provides comprehensive Fortran 2018 coverage, with parallel features via OpenCoarrays integration, while Flang achieves full syntactic and semantic support under active development. HPC SDK and NAG compilers also offer significant Fortran 2018 compliance, including atomic operations and teams. For the emerging Fortran 2023 standard (ISO/IEC 1539-1:2023), support remains partial; ifx includes select features like updated SYSTEM_CLOCK semantics and BOZ literal handling in array constructors, HPE supports most elements except the .NIL. constant, and Flang implements a subset such as extended IEEE functions but lacks coarrays and enumerations. This progressive adoption underscores ongoing efforts to balance innovation with .

Interoperability

Fortran's interoperability features enable seamless integration with other programming languages, particularly C, allowing Fortran code to be called from or to call C routines in mixed-language environments. Prior to the Fortran 2003 standard, interoperability relied on compiler-specific conventions and manual adjustments, such as explicit pointer manipulations and name mangling to align Fortran's calling mechanisms with C's, which often led to portability issues across implementations. The introduction of standardized mechanisms in Fortran 2003 marked a significant evolution, providing portable bindings that eliminated much of the vendor-specific code required in the 1990s. The core of Fortran's C interoperability is the ISO C Binding, introduced in Fortran 2003 via the intrinsic module iso_c_binding. This module defines named constants for C-compatible kind parameters (e.g., C_INT for C's int type, C_FLOAT for float), derived types like C_PTR for opaque C pointers and C_FUNPTR for function pointers, and procedures such as C_LOC to obtain the address of a Fortran object and C_F_POINTER to associate a C pointer with a Fortran pointer. The BIND(C) attribute is applied to procedures, derived types, and global variables to declare them interoperable with C, ensuring they adhere to C's naming and linkage rules without Fortran's default name decoration. For procedures, BIND(C) requires an explicit interface and supports the VALUE attribute for scalar arguments to pass them by value, aligning with C's convention, while arrays and other arguments default to pass-by-reference. Derived types marked BIND(C) must consist of interoperable components, excluding pointers or allocatables, to map directly to C structs. Key differences in calling conventions necessitate adjustments for reliable interoperability. Fortran passes arguments by reference using descriptors or addresses, whereas C passes scalars by value and arrays as pointers to their first element. To reconcile this, Fortran developers use the VALUE attribute in BIND(C) procedures for by-value passing of simple scalars, preventing unintended modifications in C code. Additionally, Fortran arrays are column-major and 1-based, contrasting C's row-major, 0-based indexing; interoperability mappings reverse dimensions and adjust indices accordingly, often requiring explicit transpositions in mixed code. The iso_fortran_env module complements this by providing environment constants like ATOMIC_INT_KIND, aiding in type matching across languages, though it is not exclusively for C binding. Practical use cases abound in scientific computing, where Fortran's numerical strengths are leveraged alongside other languages. For instance, the F2PY tool, part of , generates Python extension modules from Fortran source, enabling scripts to call Fortran subroutines for performance-critical tasks like matrix operations while handling I/O and orchestration in . F2PY supports Fortran 77 through modern features, including iso_c_binding interfaces, and automatically manages array passing and COMMON blocks as variables. Similarly, calling Fortran from uses extern "C" wrappers around BIND(C) procedures, allowing to invoke Fortran kernels for simulations, as seen in high-performance libraries where Fortran handles compute-intensive loops. Recent advancements, aligned with the Fortran 2023 standard, enhance in accelerator environments through improved support for directive-based GPU offloading via OpenACC. OpenACC directives, such as !$acc kernels or !$acc [parallel](/page/The_Parallel), allow Fortran code to offload computations to GPUs portably across vendors, with compilers like NVIDIA's NVFORTRAN providing seamless integration with C/C++ host code. These extensions build on Fortran 2003 bindings by enabling mixed-language GPU workflows, where C++ manages data transfer and Fortran performs kernels, improving in heterogeneous systems without altering core mechanisms.

Variants and Extensions

Obsolete Variants

Before the establishment of the Fortran 66 standard, numerous vendor-specific extensions and dialects proliferated, leading to significant incompatibilities across systems. These obsolete variants often introduced proprietary features to optimize for particular hardware or user needs, but their lack of adherence to a common specification rendered them non-portable. As standardization efforts gained traction through the (ANSI), these dialects were gradually supplanted, with most fading by the late 1970s or early 1980s. One prominent example is WATFOR, developed in 1965 by undergraduate students at the for the 7040 computer. Designed as a student-oriented Fortran IV , it emphasized rapid compilation—achieving compile times under 0.5 seconds for typical programs—through an in-core, load-and-go approach that sacrificed some optimization for speed and simplicity. This made it ideal for educational environments where frequent recompilation was common, but it omitted advanced features like complex arithmetic and certain I/O capabilities found in full Fortran IV. WATFOR was succeeded by WATFIV in 1967, which incorporated additional extensions such as enhanced debugging and elements presented at SHARE conferences, further tailoring it for academic use. However, as standardized Fortran compilers became widely available, WATFOR and WATFIV were phased out by the , though they influenced early by democratizing access to high-level programming. Data General's Fortran 5, introduced in the early 1970s, represented another discontinued dialect optimized for their line, including the , , and later systems. Marketed until the early , it extended Fortran IV with vendor-specific enhancements like improved support and business-oriented features, but included quirks such as non-standard semantics and limited precision handling that deviated from emerging standards. For instance, its I/O routines supported proprietary disk formats incompatible with other systems, and math functions like logarithmic operations sometimes used machine-specific approximations no longer supported in modern compilers. This lack of portability doomed it as users migrated to ANSI-compliant versions, though it played a role in early -based scientific applications. Basic Fortran emerged as a minimal in the late 1960s and 1970s, targeted at resource-constrained microcomputers and small systems like the Intel 8080. It stripped down core Fortran features to essentials—such as basic arithmetic, loops, and simple I/O—excluding complex data types, subroutines, and advanced control structures to fit within limited memory (often under 64 KB). This made it suitable for early embedded and educational programming on devices like the , but its incomplete implementation led to issues like unsupported floating-point operations and non-standard array handling. By the 1980s, as full Fortran subsets aligned with standards like Fortran 77 became feasible on microcomputers, Basic Fortran was rendered obsolete, leaving a legacy in pioneering numerical computing on personal-scale . Vendor extensions, such as those in CDC's Fortran implementations (e.g., FTN for the 6000 series), further exemplified pre-standard diversity. These often added hardware-tuned features like optimized vector arithmetic or graphical output primitives for plotters, but quirks including unique statement numbering and recovery mechanisms caused portability nightmares. The dominance of ANSI standards ultimately marginalized these variants by the , as their non-standard I/O (e.g., direct tape control) and math libraries (e.g., extended precision functions) were deprecated in favor of uniform compliance. Despite their obsolescence, these dialects shaped early Fortran adoption in education and industry, fostering innovation before portability became paramount.

Derived Languages

Several languages and extensions have been derived from Fortran's syntax and semantics to address its limitations in structured programming, array handling, or , often serving specialized domains such as scientific numerics or . Ratfor, developed by in 1975, is a for Fortran 66 that introduces C-like control structures, including multi-statement * blocks, * and for loops, repeat-until constructs, and break statements, while translating the code into equivalent Fortran statements to leverage existing compilers. This allowed programmers to write more readable, modular code without the goto-heavy style typical of early Fortran, though it remained tied to Fortran's underlying model for efficiency in numerical tasks. The F language, introduced in 1996 by Michael Metcalf and John Reid in their , is a strict of Fortran 95 designed for -oriented programming and teaching modern computational concepts, omitting legacy features like computed gotos and equivalence statements to promote safer, more regular code while retaining Fortran's powerful operations and modules. F programs compile directly with any Fortran 95-compliant , emphasizing simplicity for numerical algorithms without sacrificing performance. Fortress, initiated by in 2001 with funding from the High Productivity Computing Systems program, aimed to modernize Fortran for parallel by incorporating mathematical notation, implicit parallelism, and traits for reusable components, positioning itself as a successor language with syntax closer to . Despite prototypes demonstrating multicore efficiency, the project was discontinued in 2012 following Oracle's acquisition of , marking it as a failed effort to replace Fortran in large-scale scientific applications. MATLAB originated in the late 1970s as an interactive matrix laboratory built directly in Fortran by , leveraging libraries like LINPACK and EISPACK for numerical computations, which provided the foundation for its array-centric syntax and domain-specific focus on linear algebra and simulation. Although MATLAB evolved into an independent language with its own interpreter by the 1980s, its core numeric model retains Fortran's influence in handling multidimensional arrays and vectorized operations. Fortran's array model has indirectly shaped modern tools like in , which adopts Fortran's column-major (Fortran-order) memory layout for compatibility and efficiency in numerical array manipulations, enabling seamless with Fortran-based libraries such as BLAS. Similarly, , developed since 2009, draws on Fortran's emphasis on high-performance array processing to achieve comparable speeds in scientific computing, while adding dynamic typing and for broader applicability. As of 2025, derived Fortran languages remain niche, with legacy extensions like Ratfor and F seeing limited use in educational or historical contexts, while broader influences persist in domain-specific tools rather than active, standalone languages.

Code Examples

Basic Program Structure

A Fortran program is structured as a main program unit that begins with a PROGRAM statement, followed by the executable statements forming the main block, and terminates with an END or END PROGRAM statement. This design allows execution to commence directly at the first executable statement after any specification statements, without requiring an explicit entry point function such as main() in languages like C. The PROGRAM statement optionally names the unit for identification and debugging purposes, while the ending statement ensures proper termination and return to the operating system. In historical Fortran 77, programs adhered to a fixed-form source layout, where statements occupied specific columns (typically 7 through 72), and comments began with a C or * in column 1. A simple "Hello, World!" example in this style demonstrates the core structure:
      PROGRAM HELLO
      PRINT *, 'Hello, World!'
      END
Here, the PROGRAM statement initiates the unit, the PRINT statement performs output to standard output using list-directed formatting, and END concludes the program. This fixed-form approach enforced rigid formatting to facilitate punched-card input during the era's hardware constraints. Modern Fortran, starting from the Fortran 90 standard, introduced free-form source layout, allowing more flexible indentation and line continuation without column restrictions, along with enhancements like explicit typing via IMPLICIT NONE. An equivalent uses the WRITE statement for output and follows this contemporary structure:
program hello
  implicit none
  write(*, *) 'Hello, World!'
end program hello
The program keyword (lowercase optional but conventional) starts the unit, implicit none prevents implicit variable declarations to promote safer coding, the write statement directs output similarly to PRINT but with explicit unit and format arguments, and end program hello explicitly names the ending for clarity. This evolution prioritizes readability and portability across compilers while preserving the fundamental program unit model.

Numerical Computation Example

A representative numerical computation in Fortran involves approximating the value of π using the Leibniz infinite series, where π/4 = ∑_{k=1}^∞ [(-1)^{k+1} / (2k - 1)]. This series summation demonstrates Fortran's strengths in handling iterative and operations efficiently. The following Fortran 95+ code snippet computes an approximation by allocating a real to store the series terms, summing them via the intrinsic function, and scaling the result by 4.
fortran
PROGRAM ComputePi
  IMPLICIT NONE
  INTEGER :: i, n
  REAL, ALLOCATABLE :: terms(:)
  REAL :: pi_approx
  
  n = 1000000  ! Number of terms for summation
  ALLOCATE(terms(n))
  
  DO i = 1, n
    terms(i) = (-1)**(i + 1) / (2 * i - 1)
  END DO
  
  pi_approx = 4.0 * SUM(terms)
  
  PRINT *, 'Approximation of pi:', pi_approx
  
  DEALLOCATE(terms)
END PROGRAM ComputePi
In this example, variables are declared explicitly with IMPLICIT NONE to enforce type safety: i and n as integers for loop control and array size, and terms as a allocatable real array for storing the alternating fractional terms. The DO loop iterates over the indices, computing each term using the exponentiation operator (**) and basic arithmetic, which leverages Fortran's optimized handling of floating-point operations. The SUM intrinsic then aggregates the array elements in a vectorized manner, often benefiting from compiler optimizations like those in gfortran or Intel Fortran, which can achieve near-peak performance on modern CPUs for such workloads. Finally, the result is output via a simple PRINT statement, and memory is explicitly deallocated to prevent leaks in larger programs. Fortran excels in this context due to its design for high-performance numerical tasks, where tight loops and array intrinsics enable efficient execution on hardware accelerators, contrasting with interpreted scripting languages like that require additional libraries (e.g., ) and often incur overhead in pure loop-based computations. For instance, benchmarks show Fortran codes for series summations running 10-100 times faster than equivalent unoptimized scripts on multicore systems, underscoring its role in scientific simulations.

Cultural Aspects

Humor and Anecdotes

Fortran has elicited a wealth of humor in programming circles, often centered on its rigid and legacy features. A classic one-liner declares, " is REAL (unless declared )," playing on the language's explicit requirements. Similarly, programmers jest that "Fortran: what 2 computers do before ," riffing on the language's early emphasis on mathematical expressions over modern concepts. Early development anecdotes highlight the intense, improvisational nature of Fortran's creation under at . Backus assembled a small team of recent graduates and mathematicians, many lacking formal programming experience, leading to late-night brainstorming sessions that transformed into executable code by 1957. mishaps added to the era's , as Fortran programs were typically submitted as physical decks that could scatter if dropped. Programmers witnessing students lose hours resorting hundreds of cards after an accidental spill, a disaster exacerbated by the lack of numbering on many decks. Such incidents fueled self-deprecating tales of Fortran's unforgiving input methods, contrasting sharply with its computational prowess. Fortran's cultural footprint includes nods in popular media and astronomy. In the 2016 film , mathematician self-teaches Fortran and instructs her team on it to transition from human computation to electronic programming for space missions. The language even earned a celestial tribute: asteroid (9548) Fortran, discovered in 1985 by the Spacewatch program at , orbits the main as a nod to its foundational role in scientific computing. As of 2025, Fortran continues to influence culture through discussions of its enduring relevance in scientific software.

Further reading

This section provides a curated list of recommended books on Fortran, drawn from suggestions in scientific computing communities and developer forums. The selection includes resources for learning the language, comprehensive references, and texts covering both classic and modern standards up to Fortran 2023.
  • Modern Fortran Explained: Incorporating Fortran 2023 by Michael Metcalf, John Reid, and Malcolm Cohen
    A definitive reference that elucidates the full Fortran language, including the latest standards up to 2023. It is particularly valuable for documentation and advanced users, featuring updates on modern elements such as enhanced parallelism.
  • Modern Fortran: Building Efficient Parallel Applications by Milan Curcic
    A practical guide emphasizing modern Fortran for high-performance computing, including parallelism. Suitable for beginners and experienced users in scientific applications.
  • Fortran 95/2003 for Scientists and Engineers by Stephen J. Chapman
    A textbook focused on scientific and engineering applications, covering fundamentals with examples. Widely used for learning and as a reference in technical fields.
  • Introduction to Programming with Fortran by Ian Chivers and Jane Sleightholme
    An introductory text progressing from basics to advanced topics, aligned with modern standards. Recommended for self-study and novices.
  • Guide to Fortran 2008 Programming by Walter S. Brainerd
    A clear guide on Fortran 2008 features, ideal for beginners adopting modern practices and as a syntax reference.
  • Fortran 90 Handbook: Complete ANSI/ISO Reference by Jeanne C. Adams et al.
    An exhaustive reference for Fortran 90 standards, foundational for understanding core language features and documentation.
  • Modern Fortran in Practice by Arjen Markus
    A book on practical techniques for real-world problems in science and engineering, suitable for intermediate users.
  • Structured FORTRAN 77 for Engineers and Scientists by D. M. Etter
    A classic text on structured programming, adopted in engineering education for foundational concepts.
  • Schaum's Outline of Programming with Fortran 77 by William E. Mayo and Martin Cwiakala
    A problem-oriented resource with solved examples, useful for practice and quick reference.
  • A First Course in Scientific Computing: Symbolic, Graphic, and Numeric Modeling Using Maple, Java, Mathematica, and Fortran90 by Rubin H. Landau
    An interdisciplinary introduction integrating Fortran 90 with computational science tools, common in academic curricula.

References

  1. [1]
    The Fortran Programming Language — Fortran Programming ...
    Fortran is a natively parallel programming language with intuitive array-like syntax to communicate data between CPUs. You can run almost the same code on a ...Fortran Package Manager · Learn · Compilers · RoadmapMissing: history | Show results with:history
  2. [2]
    Fortran - IBM
    From its creation in 1954 and its commercial release in 1957 as the progenitor of software, Fortran (short for formula translation) became the first computer ...Missing: sources | Show results with:sources
  3. [3]
    A look back: Robert Hughes and the development of FORTRAN
    Mar 3, 2023 · The first FORTRAN compiler was delivered in April 1957. FORTRAN became the first computer language standard, and it helped open the door to ...
  4. [4]
    [PDF] The new features of Fortran 2023
    Mar 13, 2023 · Fortran 2023 includes longer statement lines, automatic character variable length allocation, and specifiers like `typeof` and `classof`.Missing: 2003 2008
  5. [5]
    The history of FORTRAN I, II, and III | ACM SIGPLAN Notices
    Before 1954 almost all programming was done in machine language or assembly language. Programmers rightly regarded their work as a complex, creative art ...
  6. [6]
    John Backus & Team Develop FORTRAN, the First Widely Used ...
    In 1957 John Backus Offsite Link and his team at IBM shipped FORTRAN Offsite Link for the IBM 704. This software, proprietary to IBM, became the first ...
  7. [7]
    The history of Fortran I, II, and III - ACM Digital Library
    The FORTRAN project was proposed in late 1953 due to economic needs, as before, programming was complex and computers had limitations.
  8. [8]
    None
    Summary of each segment:
  9. [9]
    [PDF] FORTRAN II Y IV DEL PROGRAMADOR: Una Referencia Completa
    TRAN fueron los de la UNIVAC Solid-State 80 y de la CDC 1604 en 1961. Para 1965, entre 60 y 100 procesadores FORTRAN habian sido implanta- dos ...
  10. [10]
  11. [11]
    The History of FORTRAN
    FORTRAN 66 marked a significant milestone in computer science. It was the first programming language to be defined by a formal standard. FORTRAN 77. Within only ...
  12. [12]
    J3 Fortran - Home
    Welcome to the home of INCITS/Fortran, the US Fortran Programming Language Standards Technical Committee, formerly known as INCITS PL22.3 and ANSI X3J3; ...Missing: 66 IV
  13. [13]
    FORTRAN 66 in Fortran Wiki
    ### Summary of FORTRAN 66 Features and Role
  14. [14]
    [PDF] An Overview of The Fortran Standard: Fortran 2023 and Beyond
    • FORTRAN 66. – The first standardized version by American Standard Association (now. ANSI) known as “USA Standard FORTRAN. ... • FORTRAN 77. – Added ...
  15. [15]
    [PDF] programming language FORTRAN
    FORTRAN is a programming language that specifies the form and interpretation of programs, promoting portability across data processing systems.Missing: ASA | Show results with:ASA
  16. [16]
    [PDF] The Seven Ages of Fortran
    Apr 1, 2011 · It was thus only in the mid-1980s that FORTRAN 77 finally took over from FORTRAN 66 as the most used version. Ultimately, it became a hugely.<|control11|><|separator|>
  17. [17]
    [PDF] X3J3 / S8.114 - January 1990 - J3 Fortran
    Oct 13, 2020 · Subcommittee X3J3 on Fortran, with the guidance of the international Fortran Working Group. ISO/IEC JTC1/SC22/WG5, developed this standard.
  18. [18]
    Introduction - NSC
    Mar 9, 1998 · In April 1978 the American Standardization Committee ANSI approved a new standard for Fortran, it is well known with the name Fortran 77 in ...
  19. [19]
    [PDF] An Introduction to Fortran 90
    recursion. 7. MODULEs. 2 procedure interfaces. 2 enhanced control structures. 2 user de ned generic procedures. 2 enhanced I/O. 5. Page 7. Source Form. Free ...
  20. [20]
    Summary of the new features in Fortran 90 - NSC
    Apr 17, 1995 · Introduction · 1. Source code form · 2. Alternative representations · 3. Specifications · 4. Conditional statement · 5. DO-loop · 6. Program units · 7.
  21. [21]
    9. Modules - Fortran 90 Tutorial
    Fortran 90 provides a special program unit known as a MODULE that conveniently packages collections of declarations and subprograms so that they may be imported ...Missing: introduction free recursive
  22. [22]
    [PDF] An Introduction to FORTRAN 90 Dr. David J. Ennis Ohio ...
    Fortran on-line or paper, the official standard, ISO/IEC 1539:1991 or ANSI x3.198-1992. Fortran 90 Handbook. Complete ANSI/ISO Reference. J C Adams et. al ...
  23. [23]
    Obsolescent features - IBM
    Fortran 95 has removed features that were part of both the Fortran 90 and FORTRAN 77 language standards. However, functionality has not been removed from ...
  24. [24]
    17. Status of Fortran 95 - NSC
    Dec 9, 2004 · Some of the new features are from HPF. Fortran 95 was published as ISO/IEC 1539-1:1997 on December 15, 1997. The preliminary revision has been ...
  25. [25]
  26. [26]
    [PDF] Programming languages – Fortran Part 3: Conditional compilation in ...
    This part of ISO/IEC 1539 defines facilities for conditional compilation in Fortran. This part of ISO/IEC 1539 provides an auxiliary standard for the version ...
  27. [27]
    Fortran 90 and Scientific Computing
    Fortran 90 is a superset of Fortran77, and so allows an upward compatible development path for a large body of Fortran programs and programmers.
  28. [28]
    The Rise and Fall of High Performance Fortran
    Nov 1, 2011 · However, two sets of problems arose with these architectures: First, the inability to hide latency with conventional processors at large scale ...Missing: vacuum tubes transistors
  29. [29]
    [PDF] The New Features of Fortran 2003
    Beside the two TR items, the major changes concern object orientation and interfacing with C. Allocatable arrays are very important for optimization – after all ...
  30. [30]
    [PDF] The new features of Fortran 2008
    May 6, 2010 · The aim of this paper is to summarize the new features of the draft Fortran 2008 standard. (ISO/IEC 2010). We take as our starting point ...
  31. [31]
    [PDF] The new features of Fortran 2018
    Aug 2, 2018 · The aim of this paper is to summarize the new features of the Fortran standard that is expected to be published in 2018.
  32. [32]
    WG5 Fortran Standards Home
    WG5 is the Working Group responsible for the development and maintenance of Fortran language standards.Missing: J3 | Show results with:J3
  33. [33]
    [PDF] DRAFT INTERNATIONAL STANDARD ISO/IEC FDIS 1539-1
    Jul 14, 2018 · This ISO document is a Draft International Standard and is copyright-protected by ISO. Except as permitted under the applicable laws of the ...
  34. [34]
    [PDF] Using GNU Fortran
    This manual documents the use of gfortran, the GNU Fortran compiler. You can find in this manual how to invoke gfortran, as well as its features and ...
  35. [35]
    Types and kinds — Fortran Programming Language
    Fortran provides five basic intrinsic data types. These “types” can be of many “kinds”. Often different numeric kinds take up different storage sizes.
  36. [36]
    Intrinsic Data Types - Intel
    Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference. Download PDF. ID 767251.
  37. [37]
    IMPLICIT - IBM
    The IMPLICIT statement changes or confirms the default implicit typing or the default storage class for local entities or, with the form IMPLICIT NONE specified ...
  38. [38]
    Variables — Fortran Programming Language
    Always use the implicit none statement at the beginning of each program and procedure. Implicit typing is considered bad practice in modern programming since it ...Missing: pointer | Show results with:pointer
  39. [39]
    PARAMETER - IBM
    The PARAMETER attribute allows you to specify names for constants. Syntax. Read syntax diagram Skip visual syntax diagram ...
  40. [40]
    Derived Types — Fortran Programming Language
    A derived type is a special form of data type that can encapsulate other built-in types as well as other derived types.
  41. [41]
    ALLOCATABLE (Fortran 2003) - IBM
    The ALLOCATABLE attribute allows you to declare an allocatable object. You can dynamically allocate the storage space of these objects by executing an ALLOCATE ...Missing: documentation | Show results with:documentation
  42. [42]
    Allocatable Arrays — Fortran Programming Language
    The allocatable attribute provides a safe way for memory handling. In comparison to variables with pointer attribute the memory is managed automatically.
  43. [43]
    POINTER (Fortran 90) - IBM
    Purpose. The POINTER attribute designates objects as pointer variables. The term pointer refers to objects with the Fortran 90 POINTER attribute.
  44. [44]
    Type-bound procedures (Fortran 2003) - IBM
    The procedure portion of a derived type definition allows you to bind specific procedures, generic interfaces, and final subroutines to a type.Missing: OOP | Show results with:OOP
  45. [45]
    The historical development of Fortran - NSC
    May 24, 2007 · The conditional statement is the arithmetical one, with jumps to three different positions depending on whether the arithmetic expression is ...
  46. [46]
    IF Block (FORTRAN 77 Language Reference)
    IF Block. An IF block consists of all the executable statements following the block IF statement, up to, but not including, the next ELSE , ELSE IF , or END ...Missing: introduction | Show results with:introduction
  47. [47]
    Operators and flow control — Fortran Programming Language
    Fortran provides two executable statements to deal with such cases. exit is used to quit the loop prematurely. It is usually enclosed inside an if .Missing: evolution standards
  48. [48]
    SELECT CASE and END SELECT - Intel
    Statement: Transfers program control to a selected block of statements according to the value of a controlling expression.Missing: evolution | Show results with:evolution<|control11|><|separator|>
  49. [49]
    Organising code structure — Fortran Programming Language
    Fortran has two forms of procedure: Both subroutines and functions have access to variables in the parent scope by argument association.
  50. [50]
    INTENT - IBM
    INTENT(INOUT) specifies that the dummy argument can both receive and return data to the invoking subprogram. If you specify a pointer dummy argument, the INTENT ...
  51. [51]
    A Little Privacy - PUBLIC/PRIVATE
    All entities listed in PRIVATE will not be accessible from outside of the module and all entities listed in PUBLIC can be accessed from outside of the module.
  52. [52]
    RECURSIVE and NON_RECURSIVE - Intel
    Keywords: RECURSIVE specifies that a subroutine or function can call itself directly or indirectly. NON_RECURSIVE specifies that a subroutine or function ...Missing: ISO | Show results with:ISO
  53. [53]
    Generic interface blocks - IBM
    In an INTERFACE statement, a generic interface block must specify one of the following: a generic name; defined operator; defined assignment ...Missing: overloading | Show results with:overloading
  54. [54]
    Submodules (Fortran 2008) - IBM
    A submodule is a program unit that extends a module or another submodule. It might provide definitions for procedures whose interfaces are declared in the ...
  55. [55]
    Arrays — Fortran Programming Language
    Arrays are a central object in Fortran. The creation of dynamic sized arrays is discussed in the allocatable arrays section.
  56. [56]
    Arrays and strings — Fortran Programming Language
    There are two common notations for declaring array variables: using the dimension attribute or by appending the array dimensions in parentheses to the variable ...
  57. [57]
    Matrix multiplication, dot product, and array shifts - Fortran-lang.org
    The `cshift` function performs a circular shift on array elements along a specified dimension, or all elements if the array has rank one.
  58. [58]
    FORALL - Intel
    Statement and Construct: The FORALL statement and construct is an element-by-element generalization of the masked array assignment in the WHERE statement ...Missing: 95 | Show results with:95
  59. [59]
    [PDF] Technical Report ISO/IEC 24772-8:202X(E) - J3 Fortran
    4.10.10 Do concurrent. Another concurrency mechanism provided by Fortran is the do concurrent construct. It permits concurrent execution of the iterations of ...
  60. [60]
    [PDF] Coarrays in the next Fortran Standard
    Apr 21, 2010 · Since October 2008, the g951 compiler has supported coarrays as an extension of Fortran 95. This extension is as defined by the First Committee.
  61. [61]
    The History of Numerical Weather Prediction - NOAA
    Oct 31, 2023 · The first one-day, nonlinear weather prediction was made in April, 1950. Its completion required the round-the-clock services of the modelers, ...
  62. [62]
    Joining to the developers team of gaussian quantum chemistry ...
    Apr 13, 2019 · As far as I know, Gaussian is written purely or mostly on Fortran so I assume proficient command of this language is required. Best,. Nikita.
  63. [63]
    [PDF] LA-UR-23-23992 - OSTI.GOV
    Apr 18, 2023 · This document examines risks associated with relying on Fortran for codes critical to nuclear security into the late 2030s. The study was ...
  64. [64]
    LAPACK — Linear Algebra PACKage - The Netlib
    a set of specifications for Fortran subprograms that do various types of matrix multiplication ...Lapack · LAPACK Users' Guide -- Third... · Lapack 3.5.0 · LAPACK95 -- Fortran95...
  65. [65]
    BIOTURB: A FORTRAN program to simulate the effects of ...
    The program BIOTURB provides a tool to compare and evaluate different models of bioturbation and their effects on sediment distribution.
  66. [66]
    A FORTRAN program to simulate the evolution of getetic variability ...
    This paper presents a FORTRAN-77 program that performs Monte Carlo simulation of the evolution of genetic structure in a small population under selection.
  67. [67]
    What makes Fortran fast? - Computational Science Stack Exchange
    Dec 3, 2011 · Fortran fares better in the domain of array-based numerical codes than other languages for two basic reasons: its array model and its explicitness.Missing: precision | Show results with:precision
  68. [68]
    Fortran unformatted I/O optimization - Stack Overflow
    Mar 4, 2015 · I/O can then be done much more efficiently, in your case taking advantage of the fact that the data is contiguous.Optimal I/O practice in numerical FortranWhy is fortran used for scientific computing? [closed]More results from stackoverflow.com
  69. [69]
    Fortran popularity rises with numerical and scientific computing
    May 6, 2024 · Fortran returned to the top 10 in the index for April 2024 and retains the 10th place in the index for May 2024. The rating for Fortran did slip ...
  70. [70]
    Assessing and improving the quality of Fortran code in scientific ...
    We present FortranAnalyser, a multi-platform, static analysis tool designed to enhance Fortran code quality. This paper outlines its development, features, and ...
  71. [71]
    NASA STRuctrual ANalysis (NASTRAN)(LAR-16804-GS)
    NASTRAN is a finite element analysis program that was originally developed for NASA in the late 1960s under US government funding for the aerospace industry.
  72. [72]
    CFD codes for HPC - ARC4CFD
    Description: Xcompact3d is a Fortran-based framework of high-order finite-difference flow solvers dedicated to the study of turbulent flows. Dedicated to Direct ...
  73. [73]
    COMPLEX (The GNU Fortran Compiler)
    COMPLEX(X, Y) returns a complex number where X is converted to the real component and Y is converted to the imaginary component. Class: Elemental function.
  74. [74]
    Real vs. double precision in Fortran 90? - Physics Forums
    Aug 1, 2011 · Double precision is generally recommended for most applications, especially when dealing with complex values, as it tends to yield more accurate ...<|control11|><|separator|>
  75. [75]
    Modernizing Old Fortran Systems | Hire Fortran Developers
    Sep 22, 2025 · Updating legacy Fortran applications leads to cost savings, improved performance, stronger security, and better integration capabilities— ...
  76. [76]
    History of FORTRAN and FORTRAN II - Software Preservation Group
    FORTRAN was the first high-level programming language and the first high-quality optimizing compiler, with a formal proposal in 1954.
  77. [77]
  78. [78]
    GCC, the GNU Compiler Collection - GNU Project
    GCC 15.2 released [2025-08-08]: GNU Tools Cauldron 2025 [2025-08-01]: Porto, Portugal, September 26-28 2025; GCC 12.5 released [2025-07-11]: GCC 13.4 released ...Installing GCC: Binaries · GCC Releases · Installing GCC · FortranMissing: gfortran | Show results with:gfortran
  79. [79]
    Intel® Fortran Compiler for oneAPI Release Notes 2025
    The Intel® Fortran Compiler (ifx) is based on the Intel Fortran frontend and runtime libraries but uses modern LLVM-based backend compiler technology.
  80. [80]
    Cray Compiler Environment
    HPE Cray Compiling Environment (CCE) consists of compilers, libraries, and utilities that perform code analysis during compilation and automatically generate ...
  81. [81]
    LLVM Fortran Levels Up: Goodbye flang-new, Hello flang! - LLVM Blog
    Mar 11, 2025 · There are many Fortran compilers. Some are vendor specific such as the Intel Fortran Compiler or NVIDIA's HPC compilers. Then there are open ...
  82. [82]
    Welcome to Flang's documentation — The Flang Compiler - LLVM
    Flang is LLVM's Fortran frontend that can be found here. It is often referred to as “LLVM Flang” to differentiate itself from “Classic Flang”.A first take on Fortran 202X... · Getting Started · Fortran Tests in the LLVM Test...
  83. [83]
    Top (The GNU Fortran Compiler)
    This manual documents the use of gfortran , the GNU Fortran compiler. You can find in this manual how to invoke gfortran , as well as its features and ...Missing: 2025 | Show results with:2025
  84. [84]
    Top Debugging Tools for Fortran in 2025 - Slashdot
    Find and compare the best Debugging tools for Fortran in 2025 · TotalView · Arm DDT · Arm Forge · SwapCode AI.
  85. [85]
    Intel® oneAPI HPC Toolkit Release Notes
    Intel® Fortran Compiler Classic (ifort) is now discontinued in oneAPI 2025 release. Installation Instructions. Please see the Installation Guide for oneAPI ...
  86. [86]
    IDEs — Fortran Programming Language
    Eclipse-Photran Photran is an IDE and refactoring tool for Fortran based on Eclipse and the C/C++ Development Tools. A free product, cross-platform and supports ...Missing: debuggers 2025
  87. [87]
    Use Automatic Vectorization - Intel
    Oct 31, 2024 · The compiler looks for vectorization opportunities whenever you compile at default optimization (O2) or higher. NOTE: This option enables ...
  88. [88]
    Cray Compiler Fortran Reference
    The HPE Cray Compiling Environment (CCE) Fortran compiler supports HPE Cray system and supports the Fortran 2023 standard (ISO/IEC 1539:2023) with some ...
  89. [89]
    Get Started on Windows* - Intel
    Oct 31, 2024 · Download the Intel® Fortran Compiler onto your system through one of these ways: To build applications with full IDE functionality, including debugging and ...<|separator|>
  90. [90]
    Getting Started - The Flang Compiler - LLVM
    There are two ways to build flang. The first method is to build it at the same time that you build all of the projects on which it depends. This is called ...
  91. [91]
    HPE Cray Supercomputing Programming Environment Software ...
    The Fortran, C, and C++ compilers are designed to help extract maximum performance from the systems regardless of the underlying architecture—supporting x86 ...<|separator|>
  92. [92]
    [PDF] NBS FORTRAN Test Programs - NIST Technical Series Publications
    which can validate whether a FORTRAN compiler is in compliance with the FORTRAN specification as described in the American Standard FORTRAN document X3.Missing: harness | Show results with:harness
  93. [93]
    Create a testsuite for the standard · Issue #57 · j3-fortran ... - GitHub
    Oct 27, 2019 · A thorough suite of positive and negative tests for every feature, requirement, and constraint in the standard would be incredibly valuable to ...
  94. [94]
    A framework and suite of cases for testing a Fortran compiler - GitHub
    This repository contains a framework and suite of cases for testing a Fortran compiler with the primary goals ofMissing: conformance | Show results with:conformance
  95. [95]
    [PDF] Fortran 2008: what's in it for high-performance computing - ECMWF
    Nov 3, 2010 · A subset has been implemented by Cray for some ten years. Coarrays have been added to the g95 compiler, are being added to gfort, and for Intel.Missing: core compliance
  96. [96]
    Fortran 2008 Compliance Status for XL Fortran - IBM
    Feb 24, 2022 · XL Fortran started adding support for the Fortran 2008 standard in version 14.1 of the compiler. This document lists the Fortran 2008 features currently ...Missing: F2008 core
  97. [97]
    Fortran Dialect Options (The GNU Fortran Compiler)
    This option causes all intrinsic procedures (including the GNU-specific extensions) to be accepted. This can be useful with -std= to force standard compliance ...Missing: 2025 | Show results with:2025
  98. [98]
    Language standard compliance - IBM
    This topic describes the Fortran programming language specifications that IBM XL Fortran for Linux, V16.1 supports.Missing: core | Show results with:core
  99. [99]
    Compilers — Fortran Programming Language
    The latest NAG Fortran Compiler release (7.0) has extensive support for legacy and modern Fortran features including parallel programming with coarrays, as well ...
  100. [100]
    Cray Compiler Overview - HPE Cray Programming Environment
    HPE Cray Fortran fully supports the Fortran 2018 standard. The C and C++ compilers are based on Clang and LLVM 20.0.0. C fully supports c89 with partial ...
  101. [101]
    Flang Fortran Standards Support
    The following table summarizes the status of all important Fortran 2023 features. The table entries are based on the document The new features in Fortran 2023.
  102. [102]
    [PDF] Interoperability between Modern Fortran LibPFASST and C
    Jul 15, 2020 · Fortran standards prior to 2003 did not offer standardized support for interoperabil- ity with C. However, the two languages are linked for ...Missing: Evolution | Show results with:Evolution
  103. [103]
    [PDF] Evolution of Fortran standards over the few decades - prace
    – Interoperability with C (and other) languages. – OS interfacing ... – Before Fortran 2003 the standard did not specify the calling convention in ...
  104. [104]
    ISO_C_BINDING (The GNU Fortran Compiler)
    The ISO_C_BINDING module provides the following named constants of type default integer, which can be used as KIND type parameters.
  105. [105]
    Interoperability with C (The GNU Fortran Compiler)
    The BIND(C) attribute has been added to inform the compiler that a symbol shall be interoperable with C; also, some constraints are added. Note, however, that ...
  106. [106]
    BIND(C) - Intel
    Standard Fortran and C Interoperability Use Standard Fortran Interoperability ... ATTRIBUTES REFERENCE and VALUE ATTRIBUTES VARYING ATTRIBUTES VECTOR · C to ...
  107. [107]
    Passing Data Arguments by Reference (Fortran Programming Guide)
    In Fortran, data is passed by reference to C routines, using pointers for simple types. For example, a Fortran integer is passed as a pointer in C.
  108. [108]
    Passing arguments by reference or by value - IBM
    C routines, including those in system libraries, such as libc.a, require you to pass arguments by value instead of by reference. (Although C passes individual ...
  109. [109]
    ISO_FORTRAN_ENV (The GNU Fortran Compiler)
    The ISO_FORTRAN_ENV module provides the following scalar default-integer named constants: ATOMIC_INT_KIND : Default-kind integer constant to be used as kind ...
  110. [110]
    F2PY user guide and reference manual — NumPy v2.3 Manual
    ### Summary of F2PY for Fortran-Python Integration
  111. [111]
    Interoperable Subroutines and Functions (The GNU Fortran Compiler)
    Subroutines and functions have to have the BIND(C) attribute to be compatible with C. The dummy argument declaration is relatively straightforward.
  112. [112]
    Examples of Fortran 2003 C / C++ interfacing with Fortran - GitHub
    Fortran subroutines and functions are easily called from C and C++. Use the standard C binding to define variable and bind functions/subroutines.
  113. [113]
    NVIDIA HPC Fortran, C++ and C Compilers with OpenACC
    The NVIDIA Fortran, C++ and C compilers enable cross-platform HPC programming for NVIDIA GPUs and multicore CPUs. They are fully interoperable with NVIDIA ...
  114. [114]
    [PDF] arXiv:2303.03398v2 [cs.MS] 8 Mar 2023 - OpenACC
    Mar 8, 2023 · Here, we focus exclusively on Fortran and its do concurrent (DC) construct for GPU acceleration. DC is an alternative construct to the standard ...
  115. [115]
    A brief history of FORTRAN/Fortran - Ibiblio
    This wonderful first FORTRAN compiler was designed and written from scratch in 1954-57 by an IBM team lead by John W. Backus and staffed with super-programmers.<|separator|>
  116. [116]
    WATFOR—The University of Waterloo FORTRAN IV compiler
    WATFOR is an in-core, load-and-go compiler which has been implemented within the IBM 7040/44 operating system. FORTRAN IV was selected as the source language.
  117. [117]
    1967 - A Chronology of Computing at The University of Waterloo
    It was first known as WATFOR and later as WATFIV when FORTRAN language extensions presented at a SHARE conference were added to the program. The acronym WATFIV ...
  118. [118]
    [PDF] software - Bitsavers.org
    Data General's BASIC is an easy-to-learn, scientific language which was originally developed at Dartmouth College for use by students.
  119. [119]
    Data General Eclipse / OpenSIMH / FORTRAN IV type 'real ...
    Aug 3, 2024 · I would describe FORTRAN 5 as retrograde progress from where I was with FORTRAN IV. Integer divisions are not working at all. Reals look "single ...
  120. [120]
    The Intel Fortran-80 compiler for the 8080 and 8085 microprocessors
    9-1978 defines a Subset (more useful than the old Basic Fortran) which excludes certain features that were unnecessary (and even undesirable in some cases) for.
  121. [121]
    Writing portable fortran programs for microcomputers
    SUMMARY. This paper is concerned with choosing a subset of FORTRAN which will make it possible to write portable programs on medium-sized microcomputers.
  122. [122]
    [PDF] CONTROL DATA® 6000 COMPUTER SYSTEMS
    Jan 15, 1971 · This publication describes the features of the FORTRAN Extended language. (version 3. 0) for the CONTROL DATA® 6400/6500/6600/6700 Computers. It ...
  123. [123]
    [PDF] lfp user's manual (lincoln fortran preprocessor) - DTIC
    May 14, 1981 · IBM FORTRAN G and H compilers number every statement except comment and continuation lines while CDC and MODCOMP compilers number every ...
  124. [124]
    RATFOR—a preprocessor for a rational fortran - Wiley Online Library
    This paper discusses design criteria for a Fortran preprocessor, the RATFOR language and its implementation, and user experience.<|separator|>
  125. [125]
    FORTRAN FUTURES: Papers The F Programming Language
    Enter F. This new language is a stripped down version of Fortran 90. The parts stripped away are old fea- tures that conflict with modern programming practice, ...
  126. [126]
    [PDF] Fortress: A New Programming Language for Scientific Computing
    Apr 28, 2005 · Fortress. ○ Factoring and parameterization of project components. ○ Management of unit testing. Page 9. Fortress: A New Programming Language ...Missing: DOE | Show results with:DOE
  127. [127]
    Oracle lowers the flag on Fortress language project - The Register
    Jul 23, 2012 · Its early research was funded in part by the same DARPA high-performance computing project that produced the Chapel and X10 languages.Missing: DOE | Show results with:DOE
  128. [128]
    The Origins of MATLAB - MathWorks
    In the late 1970s, following Wirth's methodology, I used Fortran and portions of LINPACK and EISPACK to develop the first version of MATLAB. The only data type ...
  129. [129]
    numpy.asfortranarray — NumPy v2.4.dev0 Manual
    In this case, it ensures the creation of an array object compatible with that passed in via this argument.Missing: influence | Show results with:influence
  130. [130]
    The unreasonable effectiveness of the Julia programming language
    Oct 9, 2020 · Fortran has ruled scientific computing, but Julia emerged for large-scale numerical work.
  131. [131]
    3. Fortran 77 Basics - Stanford University
    Most lines in a Fortran 77 program starts with 6 blanks and ends before column 72, i.e. only the statement field is used.
  132. [132]
    Order of statements and execution sequence - IBM
    The program resumes with the first executable statement following the ENTRY, FUNCTION or SUBROUTINE statement that defines the procedure. When you return from ...
  133. [133]
    Professional Programmer's Guide to Fortran77
    Dec 21, 2001 · As you can probably guess, all this program does is to send a rather trite message ``Hello, world" to your terminal. Even so its layout and ...
  134. [134]
    Hello world — Fortran Programming Language
    f90 is the standard file extension for modern Fortran source files. The 90 refers to the first modern Fortran standard in 1990. To run your compiled program: $> ...
  135. [135]
    Humor in Fortran Wiki
    Short Jokes and One-Liners · GOD is REAL (unless declared INTEGER). · Q: What does a Fortran77 programmer call a pointer? A: A dummy argument. · Fortran: what 2 ...
  136. [136]
    Backus, John oral history - 102657954 - CHM
    John Backus led a team at IBM in 1957 that created the first successful high-level programming language, FORTRAN. It was designed to solve problems in science ...
  137. [137]
    Request Rejected
    - **Status**: Insufficient relevant content.
  138. [138]
    The Surprisingly Long Life of the Punch Card - IEEE Spectrum
    Jun 26, 2015 · “I never dropped a compiler or subroutine deck”—which could take up several hundred cards—“but I saw a fellow student do it,” he recalls.
  139. [139]
    Hidden Figures | National Air and Space Museum
    She taught herself to code in the programming language FORTRAN. As one of the earliest woman experts in the language, she taught it to her human computer ...<|control11|><|separator|>
  140. [140]
    Asteroid Fortran | Space Reference
    Fortran's orbit is 0.85 AU from Earth's orbit at its closest point. This means that there is a very wide berth between this asteroid and Earth at all times.
  141. [141]
    LFortran Official Website
    Official site for LFortran, an open-source, interactive, LLVM-based Fortran compiler in alpha quality.