Metcalf, M., J. Reid, and M. Cohen (2018). Modern Fortran Explained: Incorporating Fortran 2018. Oxford University Press.
Curcic, M. (2019). Modern Fortran: Building Efficient Parallel Applications. Manning Publications.
Brainerd, Walter S. (2015). Guide to Fortran 2008 Programming. Springer.
Chivers, Ian D. and Jane Sleightholme (2015) Introduction to Programming with Fortran (3rd Edition). Springer.
Chapman, Stephen J. (2018). Fortran for Scientists and Engineers (Fourth Edition). McGraw-Hill Education.
Hanson, R. J. and Hopkins, T. (2013). Numerical Computing With Modern Fortran. SIAM.
Metcalf, M., J. Reid, and M. Cohen (2011). Modern Fortran Explained. Oxford University Press.
Numrich, Robert W. (2018). Parallel Programming with Co-Arrays. Chapman & Hall/CRC.
Adams, J. C., W. S. Brainerd, R. A. Hendrickson, R. E. Maine, J. T. Martin, and B. T. Smith (2008). The Fortran 2003 Handbook. Springer.
Brainerd, Walter S. (2009) Guide to Fortran 2003 Programming. Springer.
Metcalf, M., J. Reid, and M. Cohen (2004). Fortran 95/2003 Explained. Oxford University Press.
Chapman, S. J. (2007). Fortran 95 and 2003 for Scientists and Engineers. McGraw-Hill Education.
Adams, Brainerd, Martin, Smith and Wagener (1997). Fortran 95 Handbook. MIT.
Akin, E. (2003). Object-Oriented Programming Via Fortran 90 and 95. Cambridge University Press. (pdf)
Chapman, S. J. (1997). Introduction To Fortran 90 and 95. McGraw-Hill College.
Chapman, S. J. (2004). Fortran 90 and 95 for Scientists and Engineers. 2nd ed. McGraw Hill. (Publisher’s site)
Lemmon, D. R. and J. L. Schafer. (2005). Developing Statistical Software in Fortran 95. Springer.
McCormack, D. (2009). Scientific Software Development with Fortran. Lulu.
Landau, Rubin (2005) A First Course in Scientific Computing: Symbolic, Graphic, and Numeric Modeling Using Maple, Java, Mathematica, and Fortran90. Princeton University Press
Anagnostopoulos, Konstantinos (2016). Computational Physics freely available in Fortran and C++ versions
Antia, H.M. (2012) Numerical methods for scientists and engineers, 3rd ed. Hindustan Book Agency.
Berg, Bernd A (2004). Markov Chain Monte Carlo Simulations and Their Statistical Analysis – With Web-Based Fortran Code World Scientific
Bestehorn, Michael (2018). Computational Physics With Worked Out Examples in FORTRAN and MATLAB De Gruyter
Boor, Carl de (1978) A Practical Guide to Splines Springer. PPPACK Fortran 90 code here
Brandt, Siegmund (1999) Data Analysis: Statistical and Computational Methods for Scientists and Engineers Springer
Bose, Sujit Kumar (2019). Numerical Methods of Mathematics Implemented in Fortran Springer. reviewed here
Brent, Richard (1973). Algorithms for Minimization without Derivatives Prentice-Hall
Burden, Richard, L., J. Douglas Faires and Annette M. Burden (2016). Numerical Analysis, 10th ed. Cengage. FORTRAN 77 code here
Clerman, Norman S. and Spector, Walter (2011). Modern Fortran - Style and Usage. Cambridge University Press. reviewed in the Journal of Statistical Software
Chandra, Rohit, Ramesh Menon, Leo Dagum, David Kohr, Dror Maydan, and Jeff McDonald (2000). Parallel Programming in OpenMP Morgan Kaufmann
Chapman, Barbara et al. (2007). Using OpenMP - Portable Shared Memory Parallel Programming. The MIT Press.
Dagpunar, John (1988). Principles of Random Variate Generation Oxford University Press. Related Fortran 90 code from Alan Miller.
Davis, Mark E. (1984). Numerical Methods & Modeling for Chemical Engineers Wiley
Dennis, Jr., J.E., and Robert B. Schnabel (1996). Numerical Methods for Unconstrained Optimization and Nonlinear Equations SIAM. Fortran 90 code for UNCMIN at Alan Miller’s site
DeVries, Paul L. (1994) A First Course in Computational Physics Wiley. reviewed here
Dierckx, Paul (1993). Curve and Surface Fitting with Splines Oxford. code here
Engeln-Müllges, Gisela and Uhlig, Frank (2013). Numerical Algorithms with Fortran. Springer.
Fehr, Hans and Kindermann, Fabian (2018). Introduction to Computational Economics Using Fortran. Oxford University Press.
Finlayson, Bruce A. (1980). Nonlinear Analysis in Chemical Engineering McGraw-Hill.
Fletcher, R. (2000). Practical Methods of Optimization, 2nd Edition Wiley
Fuller, W. R. (1977). FORTRAN Programming: A Supplement for Calculus Courses Springer
Giordano, Nicholas J., and Hisao Nakanishi (2005). Computational Physics Prentice-Hall
Gropp W., Lusk, E. and Skjellum, A. (1999). Using MPI - Portable Parallel Programming with the Message Passing Interface. The MIT Press.
Gu, Chong (2013) Smoothing Spline ANOVA Models, 2nd ed.
Hairer, Ernst, Syvert P. Nørsett, and Gerhard Wanner (1993). Solving Ordinary Differential Equations I: Nonstiff Problems Springer. code at Hairer’s site
Hairer, Ernst, and Gerhard Wanner (1996). Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems Springer. code at Hairer’s site
Hjorth-Jensen, Morton (2008). Computational Physics
Izaac, Joshua, and Jingbo Wang (2018) Computational Quantum Mechanics Springer
Kahaner, David, Cleve Moler, and Stephen Nash (1998) Numerical Methods and Software Prentice Hall. Fortran 90 code here
Kampf, Jochen (2010). Advanced Ocean Modelling: Using Open-Source Software Springer
Kernighan, Brian W. and Pike, Rob (1999). The Practice of Programming. Addison-Wesley.
Klein, Andi, and Alexander Godunov (2006). Introductory Computational Physics Cambridge University Press. codes in Fortran and C++
Koonin, Steven E., and Dawn C. Meredith (1990). Computational Physics: Fortran Version Westview Press
LeVeque, Randall J. (2012). Finite Volume Methods for Hyperbolic Problems Cambridge University Press
Lee, H.J., and W.E. Schiesser (2003). Ordinary and Partial Differential Equation Routines in C, C++, Fortran, Java, Maple, and MATLAB Chapman and Hall/CRC
Marazzi, Alfio (1993). Algorithms, Routines, and S-Functions for Robust Statistics Chapman and Hall/CRC. FORTRAN 77 code available in robeth R package
Markus, Arjen (2012). Modern Fortran in Practice Cambridge University Press.
Mattson, Timothy G., Yun (Helen) He, and Alice E. Koniges (2019). The OpenMP Common Core: Making OpenMP Simple Again MIT Press
Mielke, Jr., Paul W., and Kenneth J. Berry (2007). Permutation Methods: A Distance Function Approach Springer. code at Mielke’s site
Miller, Alan (2002). Subset Selection in Regression, 2nd ed. Chapman and Hall/CRC. code at Miller’s site
Neculai, Andrei (2020). Nonlinear Conjugate Gradient Methods for Unconstrained Optimization Springer. Fortran codes at author’s site
Newton, H. Joseph (1988). Timeslab: A Time Series Analysis Laboratory Wadsworth & Brook/Cole. Timeslab code at author’s site
Oliveira, Suely and Stewart, David (2006). Writing Scientific Software - A Guide to Good Style. Cambridge University Press.
Pang, Tao (2006) An Introduction to Computational Physics, 2nd Edition Cambridge University Press
Pao, Yen-Ching (1998) Engineering Analysis: Interactive Methods and Programs with FORTRAN, QuickBASIC, MATLAB, and Mathematica CRC Press
Press, Flannery, Teukolsky, and Vetterling (1992). Numerical Recipes in Fortran 77. Cambridge University Press.
Press, Teukolsky, Vetterling and Flannery (1996). Numerical Recipes in Fortran 90 - The Art of Parallel Scientific Computing. Cambridge University Press
Rouson, D., J. Xia, and X. Xu (2011). Scientific Software Design - The Object-Oriented Way. Cambridge University Press.
Ramos, Juan Antonio Hernandez, and Lopez, Javier Escoto (2020) How to learn Applied Mathematics through modern FORTRAN. Independently published code and text
Ruetsch, Gregory and Fatica, Massimiliano (2013). CUDA Fortran for Scientists and Engineers. Morgan Kaufmann.
Saad, Yousef (2003). Iterative Methods for Sparse Linear Systems, 2nd Edition SIAM
Saad, Yousef (2011). Numerical Methods for Large Eigenvalue Problems - 2nd Edition SIAM
Schmidt, Bernd (1987). Model Construction with GPSS-FORTRAN Version 3 Springer.
Scott, L. Ridgway, Terry Clark, and Babak Bagheri (2005) Scientific Parallel Computing Princeton University Press
Smith, I.M., D. V. Griffiths, and L. Margetts (2013) Programming the Finite Element Method, 5th Edition Wiley.
Snir, Marc and Gropp, William (1998). MPI - The Complete Reference. The MIT Press.
Spath, Helmuth (1980). Cluster Analysis Algorithms Halsted Press. Fortran 90 code at John Burkardt’s site
Stearns, Samuel D., and Ruth A. David (1992). Signal Processing Algorithms in Fortran and C Prentice-Hall
Tanizaki, Hisashi (2004) Computational Methods in Statistics and Econometrics CRC Press
Thompson, William J. (1997). Atlas for Computing Mathematical Functions: An Illustrated Guide for Practitioners with Programs in FORTRAN 90 and Mathematica Wiley
Willé, David R. (1995). Advanced Scientific Fortran. Wiley
Zhang, Shanjie and Jianming Jin (1997). Computation of Special Functions Wiley. Reviewed here. Fortran 90 code here.
Alam, Shahid (2014). Is Fortran Still Relevant? Comparing Fortran with Java and C++ International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014.
Chin, L. S., D. J. Worth and C. Greenough (2006). Thoughts on using the Features of Fortran 95. Software Engineering Group Notes no. SEG-N-003.
Cohen, M. (1999). Object orientation and Fortran 2002: part II. ACM SIGPLAN Fortran Forum 18, 14–21.
Decyk, V. K., C. D. Norton, and B. K. Szymanski. (1997). Expressing Object-Oriented Concepts in Fortran 90. ACM SIGPLAN Fortran Forum 16, 13–18.
Diaz, Javier, Marco Pinna, Andrei V. Zvelindovsky, and Ignacio Pagonabarraga (2021). Parallel Hybrid Simulations of Block Copolymer Nanocomposites using Coarray Fortran. Macromolecular Theory and Simulations.
Erwig, Martin, et al. Parametric Fortran (3 papers)
Gray, M. G. and R. M. Roberts (1997). Object-based programming in Fortran 90. Computers in Physics 11, 355–361.
Haveraaen, M., et al. (2015) High-Performance Design Patterns for Modern Fortran Scientific Programming
Johnson, Seth R., Andrey Prokopenko, and Katherine J. Evans (2020). Automated Fortran–C++ Bindings for Large-Scale Scientific Applications Computing in Science & Engineering Sept.-Oct. 2020, pp. 84-94, vol. 22.
Markus, A. (2001). Generic programming in Fortran 90. ACM SIGPLAN Fortran Forum 20(3), 20-23.
Markus, A. (2006). Design patterns and Fortran 90/95. ACM SIGPLAN Fortran Forum, 25(1), 13-29.
McCalpin, J. D. (1996). A Case Study of Some Issues in the Optimization of Fortran 90 Array Notation Scientific Programming.
McCormack, D. (2005). Generic programming in Fortran with Forpedo. ACM SIGPLAN Fortran Forum 24(2), 18-29.
McGavin, P. and R. Young (2001). A generic list implementation. ACM SIGPLAN Fortran Forum 20(1), 16-20.
Morris, K. (2015) Emulating Multiple Inheritance in Fortran 2003/2008 Scientific Programming.
Nanthaamornphong, A., and A. Leatongkam (2019) Extended ForUML for Automatic Generation of UML Sequence Diagrams from Object-Oriented Fortran Scientific Programming.
Ott, Jordan, et al. (2020). A Fortran-Keras Deep Learning Bridge for Scientific Computing Scientific Programming.
Padua, D. (2000). The Fortran I Compiler Computing in Science $ Engineering.
Poppe, K., R. Cools, and B. Vandewoestyne (2012). Error handling in Fortran 2003. Fortran Forum 31(2), 7-19.
Pietzer, A., et al. (2008). Exposing Fortran Derived Types to C and Other Languages IEEE Explore.
Reid, J. (2003). The future of Fortran. Computing in Science & Engineering 5, 59–67.
Schonfelder, J.L. (2003) Variable Precision Arithmetic: A Fortran 95 Module Scientific Programming.
Singleterry, Robert C. (2018) Single Thread to Fortran Coarray Transition Process for the Control Algorithm in the Space Radiation Code HZETRN NASA-TP-2018-219811.
Sharma, A., and I. Moulitsas (2017) MPI to Coarray Fortran: Experiences with a CFD Solver for Unstructured Meshes Scientific Programming.
Shterenlikht, A. and L. Cebamanos (2018). Cellular automata beyond 100k cores: MPI vs Fortran coarrays Proceedings of the 25th European MPI Users’ Group Meeting.
Worth, D. J. (2008). State of the art in object oriented programming with fortran. Technical Report RAL-TR-2008-002.
Yue, S., and J. Gray (2014) SPOT: A DSL for Extending Fortran Programs with Metaprogramming Scientific Programming.
Computer Language Benchmarks Game - Which programming language is fastest?
This old programming language is suddenly getting more popular again(2021) by Liam Tung, ZDNet
Resurrecting Fortran(2021) by Ondrej Certik
Network Dynamics Benchmarks(2021) by Michael Lindner et al.
Performance comparison R, Julia, Fortran for Bayesian binary probit(2021) by Dries Benoit
The Quest for Speed - An Indicative Survey in Improving Performance(2021) by Bryn Noel Ubald
Basic Comparison of Various Computing Languages: Python, Julia, Matlab, IDL, R, Java, Scala, C, Fortran(2020) by Jules Kouatchou and Alexander Medema
The Linear Algebra Mapping Problem(2019) by Christos Psarras, et al
Programming languages and particle physics(2019) by Jim Pivarski
Why I chose C for backtesting: Lessons from a journey to build an intraday backtesting engine(2019) by M. Emmanuel
A Comparison of Programming Languages in Economics: An Update(2018) by S. Boragan Aruoba and Jesus Fernandez-Villaverde. original paper code at GitHub
The Need for Speed Part 2: C++ vs. Fortran vs. C(2018) by Avi. Part 1
Energy efficiency across programming languages: how do energy, time, and memory relate?(2017) by Rui Pereira et al.
Comparison of performance: Python NumPy and Numba, MATLAB, and Fortran(2017) by Charles Jekel
Why physicists still use Fortran(2015) by Daniel C. Elton
Formula translation in Blitz++, NumPy and modern Fortran: A case study of the language choice tradeoffs(2014) by Sylwester Arabas, Dorota Jarecka, Anna Jaruga, and Maciej Fijałkowski, Scientific Programming 22 (2014) 201–222
Scientific computing’s future: Can any coding language top a 1950s behemoth? (2014) by Lee Phillips
Debunking the Myths About Fortran(2011) by Craig T. Dedo
C vs Fortran for scientific computing by Jannis Teunissen
Should Fortran be taught to Undergraduates? (2009) by Mike Croucher of NAG
Why Fortran? (2007) by Viktor K. Decyk, Charles D. Norton, and Henry J. Gardner, Computing in Science and Engineering
Scientific Programming in Fortran(2007) by W. Van Snyder, Scientific Programming 15 pp3–8
Fortran: A Modern Standard Programming Language For Parallel Scalable High Performance Technical Computing(2006) by David B. Loveman
On the Numerical Eciency of C++ in Scientic Computing(1999) by Erlend Arge et al.
Fortran 90 subsets offer simplified environment for first-time users(1998) by Donald L. Shirer, Computers in Physics 12, 166; doi: 10.1063/1.168632
Portability and Power with the F Programming Language(1997) by Walt Brainerd, Linux Journal.
Fortran 90 for Science Students(1995) by John Prentice
Should C Replace FORTRAN as the Language of Scientific Programming?(1995) by Linda Wharton
Fortran is alive! from VORtech
Computing in Science: Fortran outlasts them all - While hardware technology proceeds apace, scientists still battle away with Fortran programming(1989) by Don Monro, New Scientist.
This two day practical hands-on workshop is aimed at Fortran programmers who want to write modern code, or to modernize existing codes, to make it more maintainable by encouraging good software engineering practices. Tools, scientific libraries and techniques for Fortran are covered to help you develop sustainable software for your academic research in a collaborative environment, with an emphasis on writing performance portable Fortran. There will be an section on parallel computing and the latest Fortran 2018 standard. Click here for further information
Fortran is a course introduced by Prof. Paul Tackley in earth science teaches modern Fortran 95 and review briefly Fortran 2003/2008 at ETH.
Description From the web page
FORTRAN 95 is a modern programming language that is specifically designed for scientific and engineering applications. This course gives an introduction to programming in this language, and is suitable for students who have only minimal programming experience, for example with MATLAB scripts. The focus will be on Fortran 95, but Fortran 77 will also be covered for those working with already-existing codes. A hands-on approach will be emphasized rather than abstract concepts, using example scientific problems relevant to Earth science.
Scientific Programing and Numerical Computation taught by Wu-ting Tsai
Fortran by David Apsley. Originally based on an undergraduate course. Subsequently extended to more advanced Fortran.
1.Modern Programming Languages: Fortran90/95/2003/2008
This course provides an introduction to some of the most widely used methods of computational physics, including numerical solutions of differential equations (initial and boundary value prob- lems) in classical and quantum mechanics, Monte Carlo simulations, and numerical diagonalization of quantum many-body Hamiltonians. In addition to giving the students a basic working knowledge of these particular techniques, the goal is to make them comfortable with scientific computing in general, so that they will be prepared to tackle also other computational problem that they may encounter in the future. The Fortran 90 programming language will be used.
Cleanscape FortranLint - Fortran static source code analysis tool that reduces your organizational exposure to risks from latent software problems by automatically identifying problems at their source – in the Fortran code prior to compiling or executing programs.
Forcheck – Fortran Analysis - performs a static analysis of a Fortran program or separate Fortran program units.
fpt - Tools for Fortran Engineering - Error Checking, Measurement and Assessment, Structural Engineering, Software Migration, Run-time Testing, and more
plusFORT - multi-purpose suite of tools for analyzing and improving Fortran programs.
This page is for linking to available Fortran libraries and source code repositories. See Software repositories for collections of libraries and see Library distribution for methods for packaging and distributing Fortran libraries. Awesome Fortran is another list of libraries.
Libraries linked here are classified as follows:
When available, the above tags should link to the license page for a particular library.
Fortran Standard Library - Utilities (containers, strings, files, OS/environment integration, unit testing & assertions, logging, …) Algorithms (searching and sorting, merging, …) Mathematics (linear algebra, sparse matrices, special functions, fast Fourier transform, random numbers, statistics, ordinary differential equations, numerical integration, optimization, …)(OS: MIT)
libGPF - General Purpose Fortran Collection. Updated at GitHub.(OS: MIT)
fortranlib - Collection of personal scientific routines in Fortran. (OS: BSD-2-Clause License)
Fortran-Library - Code for geometry transformations, nonlinear optimization, Fourier transforms, clustering, statistics, mathematics, linear algebra, strings, and chemistry. (OS: GPL-3.0 License)
FGSL - Fortran interface to the GNU Scientific Library. (OS: GPL)
flib - standard library, function library, a tridiagonal matrix solver, and code for a doubly linked list, optimization, and interpolation. (OS: GPL-3.0 License)
FLIBS - collection of Fortran modules by Arjen Markus and Michael Baudin. (OS: BSD)
flink - Flexible Fortran Modules and Subroutines for Scientific Computing. (OS: GPL-3.0 License)
Fortran Template Library (FTL) - generic containers, versatile algorithms, easy string manipulation, and more. (OS: GPL-3)
fycollections - generic collection templates for Fortran
JAMS - collection of general Fortran modules offering miscellaneous functions in the categories Computational, Date and Time, Input / Output, Math / Numerics, Screening, Sensitivity Analysis and Optimising / Fitting, and Miscellaneous. Written by Matthias Cuntz, Juliane Mai and Stephan Thober. (OS: MIT)
json-fortran - Fortran 2003/2008 JSON API. (OS: BSD)
jsonff - Fortran library for dealing with JSON data (OS: MIT)
S-EXPTRAN - Fortran library for reading and writing S-expressions. (OS: MIT)
FIAT - Fortran Implementation of Abstract Types
Focal - modern Fortran module library which wraps calls to the OpenCL runtime API with a higher abstraction level appropriate to the Fortran language. (OS: MIT)
FortranCL - Fortran interface for OpenCL, allows to execute code on GPUs and accelerators directly from Fortran. (OS: LGPL)
FortCUDA - Fortran interface to the CUDA GPU library. Contains a Python pre-processor to parse the CUDA C headers and creates ISO_C_BINDING interfaces for the method calls. Comes with a fairly complex example. (OS: GPL)
PENF - Fortran (standard 2003) module useful to achieve portable codes. The module makes available portable kind-parameters and some useful procedures to deal with them. (OS: GPL)
BeFoR64 - Base64 encoding/decoding library for FoRtran poor men, is a pure Fortran (KISS) library for base64 encoding/decoding for modern (2003+) Fortran projects. (OS: GPL)
fdict - native Fortran 90 dictionary with hash tables for retaining any data-type in a Python-like dictionary. (OS: MPL-2)
functional-fortran - library for functional programming in modern Fortran. (OS: BSD)
qContainers - container library for Fortran language. It enables to store any internal Fortran data type and any derived data type to the container. It implements containers for key/value pairs: tree table and hash table, and containers for objects: list and vector. (OS: BSD)
NPY-for-Fortran allows the developer to save Fortran arrays in Numpy’s .npy format. (OS:MIT)
forpy - use Python in Fortran and vice versa. (OS:LGPL)[object Object]
coretran - easy-to-follow library to make Fortran easier in general with wrapped interfaces, sorting routines, kD-Trees, and other algorithms to handle scientific data and concepts.
erloff - make error-handling in Fortran a bit more flexible (OS: MIT)
parff - (almost) functional style parser combinator library for Fortran (OS: MIT)
ferror - library to assist with error handling in Fortran projects.
petaca - collection of modern Fortran modules that provide broadly useful capabilities – things that the author has found himself using repeatedly across many projects. A unifying feature of the modules is their object-oriented interfaces and implementation. (OS:MIT)
kdtree2 - kd-tree implementation in C++ (and Fortran) by Matthew B. Kennel
ForUtils - Fortran 2008 utility functions and reusable classes
Fortran Character String Utilities - library of string manipulation routines by George Benthien
strff - library of convenient string functions (OS: MIT)
iso_varying_string - implementation of the ISO standard for varying strings (OS: MIT)
M_strings - modules for processing strings. Routines for parsing, tokenizing, changing case, substituting new strings for substrings, locating strings with simple wildcard expressions, removing tabs and line terminators and other string manipulations are included. (OS)
fortran_pcre - Fortran wrapper around the C PCRE regular expression library. (OS:MIT)
SLATEC - Common Mathematical Library: a comprehensive software library containing over 1400 general purpose mathematical and statistical routines written in Fortran 77. (PD)
SLATEC - Fortran 90 version by John Burkardt. (?)
TOMS - code from the journal Transactions on Mathematical Software. Many programs were translated to Fortran 90 by Alan Miller and John Burkardt
CERNLIB - collection of FORTRAN 77 libraries and modules maintained by CERN. (OS: GPL)
ARPREC - C++/Fortran 90 library for arbitrary precision math. Includes a complete interactive high-precision arithmetic computing interpreter (“toolkit”) written in Fortran, that will integrate symbolic expressions etc. (OS: BSD)
FMLIB - David M. Smith’s libraries for multiple precision computation. The package performs multiple-precision real, complex, and integer arithmetic, providing the intrinsic Fortran numerical functions, as well as many special functions. An existing Fortran program can be checked by converting it from double precision to FM arithmetic. (NC)
HSL Mathematical Software Library - free for academic use.
MP - Fortran multiple-precision arithmetic package by Richard Brent.
MPFUN90, a pure Fortran 90 library for arbitrary precision math. Includes a complete interactive high-precision arithmetic computing interpreter (“toolkit”) written in Fortran, that will integrate symbolic expressions etc. (OS: BSD)
Numerical methods in Fortran - solving linear, nonlinear equations, integral, ordinary differential equations, … using numerical methods in Fortran, by Carlos Planelles Alemany
Numerical Methods for Scientists and Engineers, code in Fortran 77 and C from book by H. M. Antia (OS: GPL-2.0 License)
Numerical Methods of Statitics, Fortran 95 code from book by John Monahan.
starpac, Standards Time Series and Regressions Package in Fortran 77(PD), translated to Fortran 90 here.
datapac, A Fortran 77 statistical library written by James Filliben (at NIST) (PD)
Emmix Fits a mixture model of multivariate normal or t-distributions to a user supplied data set via the EM algorithm. With gfortran, must be compiled with -std=legacy option.
stspac, A Fortran 77 statistical library written by Charlie Reeves (at NIST) (PD)
SLICOT - The Control and Systems Library (GPL)
Muesli - A free numerical and graphical Fortran 95 library written by Edouard Canot at Univ of Rennes (?)
National Wind Technology Center Subroutine Library - A library of general-use Fortran 2003 routines used in many NWTC computer-aided engineering tools (OS: GPL)
lookup_table_fortran A module for linear lookup tables. Supports multiple columns and various ways to read values from the table.
NumDiff - A modern Fortran numerical differentiation library by Jacob Williams (OS: BSD).
NumericalHUB - Set of modern Fortran numerical libraries covering: zeroes of Systems of Equations, Lagrange Interpolation, Finite Differences, Cauchy Problems, Boundary Value Problems, and Initial Boundary Value Problems, associated with book How to learn Applied Mathematics through modern FORTRAN
faiNumber-Fortran - A fast, flexible, and secure numerical library for Fortran with fast number parsing as one of its features. (OS: MIT)
quaff - A library for making math with units a lot easier and more convenient (OS: MIT)
SciFortran - A library of fortran modules and routines for scientific calculations (in a way just like scipy for python). (OS: LGPL-3.0 License)
Simfit - package for simulation, statistical analysis, curve fitting and graph plotting, using models from a compiled library or from ASCII text files supplied by the user. Source code for over two hundred NAG library subroutines called by the Academic version of the Simfit package is available.
Tensor Toolbox for Modern Fortran (ttb)(OS: MIT License)
forSISL - Modern Fortran interfaces to the SINTEF Spline Library (SISL)
Freely Available Software for Linear Algebra (September 2018)
arpack-ng is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.
BLAS: Basic Linear Algebra Subprograms that provide standard building blocks for performing basic vector and matrix operations (PD). Also OpenBLAS
DBCSR - Distributed Block Compressed Sparse Row matrix library (OS: GPL-2.0 License)
ELPA - Eigenvalue Solvers for Petaflop Applications (OS: LGPL-3.0)
LAPACK is the standard package for numerical linear algebra. (OS: BSD)
BLAP95 (broken link) - a Fortran 95 interface to the Level 3 BLAS routines and key LAPACK computational and driver routines. (?)
Fortran_Davidson - Modern Fortran implementation of the Davidson diagonalization algorithms. (OS:Apache-2.0 License)
fortran_lsp - Fortran routines from “Solving Least Squares Problems” by C. Lawson and R. Hanson, with improved interfaces.
NTPoly - massively parallel library for computing the functions of sparse matrices.(OS: MIT License)
PSBLAS3 - Parallel Sparse Basic Linear Algebra Subroutines (OS: BSD)
linalg - linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines. (OS:GPL-3.0 License)
qrupdate - library for fast updates of QR and Cholesky decompositions.
UMFPACK Fortran interface - mUMFPACK module provides a Fortran-2003 implementation of the full UMFPACK interface closely corresponding to that defined in the UMFPACK User Guide.
LIBXSMM - library for specialized dense and sparse matrix operations as well as for deep learning primitives such as small convolutions.
MUMPS - parallel sparse direct solver
qr_mumps - package for the solution of sparse, linear systems on multicore computers
Sparskit - basic tool-kit for sparse matrix computations (Version 2)
JADAMILU - computes eigenvectors of large sparse symmetric matrices. Provided as a precompiled library
PROPACK - set of functions for computing the singular value decomposition of large and sparse or structured matrices. GitHub
Alan Miller’s Fortran Software for subset selection in regression, random number generation, logistic regression, linear least squares, and other topics.
Climate time series analysis by Manfred Mudelsee.
datapac, A Fortran 77 statistical library written by James Filliben (at NIST) (PD)
Fast Statistical Methods, by Rybicki and Press.
stspac, A Fortran 77 statistical library written by Charlie Reeves (at NIST) (PD)
Multiple stream Mersenne Twister pseudorandom number generator (OS: BSD)
rng_fortran, Fast pseudorandom number generator based on Xoroshiro128+. Supports OpenMP.
MISCLIB, a library of statistical and support routines, written by Barry Brown (M.D.Anderson Cancer Institute) - open source
Modifed Burg Algorithms in Multivariate Subset Autoregressive Modeling by A. Alexandre Trindade
ParaMonte - Plain Powerful Parallel Monte Carlo and MCMC Library for Python, MATLAB, Fortran, C++, C (OS: MIT License)
SLICE, efficient N-Dimensional Monte Carlo inversion algorithm.
STATPACK - Fortran 95/2003 library for solving the most commonly occurring mathematical and statistical problems in the processing of (huge) climate model outputs and datasets, and more generally in data analysis
TIMSAC package for analysis, prediction and control of time series.
apstat, a collection of subroutines (AS1 - AS319) published in the journal Applied Statistics 1968-1994. Most are Fortran. Personal favourites include AS319 and AS164. Many have been translated to Fortran 90 by John Burkardt and Alan Miller
Fortran Programs for Global Optimization, etc programs for econometric analysis such as Non-linear Least Squares, Robust Regression, Robust Two-Stage Least Squares, Ordinal Canonical Correlation, Ordinal Principal Component Analysis, Hybridization of canonical correlation and principal component analysis, fitting origin-displaced logarithmic spiral to data, solving the nearest correlation matrix problem, completing the correlation matrix, construction of composite indices by linear aggregation, etc. some of which are based on global optimization.
MCMC f90 library - do Markov chain Monte Carlo simulation from a posterior distribution of unknown model parameters defined by a likelihood function and prior
Multivariate Data Analysis Software in Fortran (and C) by Fionn Murtagh
Oak Leaf - robust statistical estimates by Filip Hroch
Least squares approximations in Fortran 90 by J-P Moreau. Also statistical programs in Fortran
Random by Richard Brent. ranut is a uniform pseudo-random number generator which uses recurrences based on primitive trinomials, or in some cases trinomials which have large primitive factors (over the field GF(2)). rannw is a Fortran 77 pseudo-random number generator which uses a variant of Chris Wallace’s method to generate normally distributed (i.e. Gaussian) numbers.
RANDLIB - routines for nonuniform random number generation
CONFINT - sample size calculation for confidence intervals
SEQBIN - Bayesian/Frequentist Designs for Sequential/Group-Sequential Trials of a Single Binomial Parameter
STPLAN - performs power, sample size, and related calculations needed to plan frequentist studies
GALAHAD is a library of modern Fortran modules for nonlinear optimization. (OS: lgpl-3.0)
MINPACK contains routines for solving nonlinear equations and nonlinear least squares problems. (OS: BSD)
PowellOpt is a collection of derivative-free optimization algorithms by M.J.D. Powell.
Applied Statistics algorithm 298 Hybrid minimization routine using simulated annealing and a user-supplied local minimizer.
Applied Statistics algorithm 319 Variable metric unconstrained function minimization without derivatives.
TOMS algorithm 778 solves bound-constrained optimization problems by using the compact formula of the limited memory BFGS updates.
TENSOLVE contains both TOMS 739 (UNCMIN) for unconstrained minimization, and TOMS 768 (TENSOLVE) for the solution of sets of non-linear equations.
TOMS algorithm 813 is for local minimization, with or without convex constraints. It requires the user to supply first derivatives. This version is in standard Fortran. It uses the so-called spectral projected gradient (SPG) method.
cobyla.f90 Mike Powell’s routine for minimization of non-linear functions with smooth non-linear constraints, using local linear approximations to the constraints.
tron.zip Newton’s method for large bound-constrained optimization problems by Chih-Jen Lin & Jorge More’, a MINPACK-2 project.
lm.zip Levenberg-Marquardt algorithm for non-linear least squares (unconstrained). This is a translation of the MINPACK routines, LMDER & LMDIF. Us
conmin.zip The classic CONMIN package for constrained minimization updated to Fortran 90.
minim.f90 The Nelder-Mead simplex algorithm for unconstrained minimization. It does NOT require or use derivatives.
uobyqa.f90 Mike Powell’s package for unconstrained minimization when derivatives are not available.
tn.zip Stephen Nash’s truncated-Newton code for the minimization of continuous functions. It can use differences instead of derivatives, and bounds may be imposed on the parameters.
global.f90 At Arnold Neumaier’s site, this is recommended as the most successful of the global optimization packages.
simulated-annealing - Simulated Annealing with Modern Fortran
tapenade - tool for automatic differentiation (forward/reverse) of Fortran and C programs
Roots of a real function in Fortran 90 by J-P Moreau
CUTEst - Constrained and Unconstrained Testing Environment with safe threads for optimization software
Optimization codes by Andrei Neculai THREECG: A simple three-term conjugate gradient algorithm which satisfies both the descent and the conjugacy conditions. DESCON: Conjugate Gradient Algorithm with guaranteed descent and conjugacy conditions for large-scale Unconstrained Optimization. ASCALCG: Accelerated Scaled Conjugate Gradient Algorithms for Unconstrained Optimization. AHYBRIDM: Accelerated Hybrid Conjugate Gradient Algorithm with Modified Secant Condition for Unconstrained Optimization. CONMIN: Shanno Conjugate Gradient with Beale restart memoryless variable metric algorithm for Unconstrained Optimization. ASA: Anticipative Scalar Approximation of Hessian for Unconstrained Optimization. RELAXED: Relaxed Gradient Descent Method with Backtracking for Unconstrained Optimization. UNO Fortran subroutines library for unconstrained optimization using searching methods.SPENBAR Sparse PENalty BARrier package for solving general nonlinear programming problems with equality and inequality constraints and simple bounds on variables. All the constrained are penalized. Minimization of the penalty function is given by TN package of S. Nash. FIBO Fibonacci method for function minimization. MAXFUN Powell direct search method for function maximization. ZERO Simple algorithms for computing zeros of a nonlinear function of a variable in a given interval.
FortLearner - linear regression, logistic regression, stochastic gradient descent, decision trees, ensemble trees, boosting trees, and dimension reduction.
neural-fortran is a parallel neural net microframework. (OS: MIT)
NN_MOD - Fortran 2008 Module/Class for training neural network regressors
autofit is a Fortran code for fitting permutationally invariant polynomials (PIPs). (OS: Apache-2.0 License)
ogpf is an object based Fortran 2003 / Fortran 2008 code for 2D, 3D plotting and animation, implements an interface to gnuplot. (PD)
gtk-fortran is a cross-platform library to build Graphical User Interfaces (GUI). It is a GTK / Fortran 2003 binding based on the ISO_C_BINDING module. (OS: GPL)
GnuplotFortran is a Fortran Interface to Gnuplot. (OS: LGPL)
GNUFOR2 is a Fortran 90 interface to Gnuplot which helps to plot graphs, surfaces, histograms and images. (?)
DISLIN is a high-level scientific data plotting library. (NC)
F90GL - Fortran 90 bindings for OpenGL and the GL Utility Toolkit (GLUT) (PD)
F03GL - Fortran 2003 bindings for OpenGL, GLU and GLUT (?)
g2 is an easy to use, portable and powerful 2D graphics library. Currently supported devices: PostScript, X11, PNG and JPEG (using gd) and Win32 (xfig in development). g2 is written in C (ANSI) and has a Fortran interface. (OS: LGPL)
g95gl - Alternate Fortran 95 (interop) bindings for OpenGL and the GL Utility Toolkit (GLUT)
MathGL is a library for making high-quality scientific graphics under Linux and Windows via Qt, FLTK or OpenGL. (OS: GPL)
plotterf90 is a graphics subroutine library producing Postscript written by Masao Kodama. (?)
PLplot is a free, cross-platform plotting library. (OS: LGPL)
Pyplot-Fortran is a simple module for generating plots from Fortran using Python’s matplotlib.pyplot.
libvogle a basic vector-based graphics library in C, but Fortran-callable
grapheps is a port of a very compact Postscript library
EGGX/ProCALL is an X11 graphics library for C and FORTRAN created to achieve extreme simplicity. Uses only (OS: GPL)
GrWin is a Windows graphics library for FORTRAN and C.
Lib_VTK_IO a pure Fortran library to write and read data conforming the VTK standard. This library is not a porting or a wrapper of the VTK code, but it is only an exporter/importer of VTK data format written in pure Fortran language (standard Fortran 2003). (OS: GPL)
text_viz - Text-mode 2D-Graphics for Fortran. (?)
fortran-xlib is an interface to (a subset) of Xlib. (OS: ISC)
fortran-sdl2 is a Fortran interface to Simple DirectMedia Layer 2.0 (SDL 2.0). It uses the ISO_C_BINDING module. (OS: ISC)
Fortran and Matlab Codes for differential equations - from Ernst Hairer
FOODIE - Fortran Object-Oriented Differential-equations Integration Environment.
ODEPACK is a systematized collection of ODE solvers. (PD)
PETSc The Portable, Extensible Toolkit for Scientific Computation (PETSc, pronounced PET-see; the S is silent), is a suite of data structures and routines developed by Argonne National Laboratory for the scalable (parallel) solution of scientific applications modeled by partial differential equations.
PoisFFT - Free parallel fast Poisson solver.
numerical-anal boundary value problems and heat transfer.
Differential equations in Fortran by J-P Moreau
bspline-fortran - multidimensional B-spline interpolation of data on a regular grid
finterp - multidimensional linear interpolation with modern Fortran
WenOOF - WENO interpolation Object Oriented Fortran library
Special functions in Fortran 90 and Bessel programs in Fortran 90 by J-P Moreau
Special_Functions translated code from book “Computation of Special Functions” by Shanjie Zhang and Jian-Ming Jin to Fortran 90 by John Burkardt
M_CLI2 - Fortran commandline-interface using a simple prototype command (OS)
KRACKEN - library for parsing Unix-like command-line arguments. (OS)
FLAP - Fortran command Line Arguments Parser for poor people. A KISS pure Fortran Library for building powerful, easy-to-use, elegant command line interfaces. (OS: GPL)(OS: BSD)
fortran-csv-module - read and write CSV Files using Modern Fortran.
csvio-f90, the CSVIO F90 module, is a Fortran 90 module for easily reading and writing CSV files. (OS: BSD)
WKML is based on FoX, and writes KML (Keyhole Markup Language). (OS: BSD)
xml (?)
xml-fortran (OS: BSD)
fortranposix - An implementation of some POSIX functions in Fortran 90/95. (OS: LGPL)
fortyxima/filesys - Modern Fortran wrappers around the file system interface of libc as part of the Fortyxima library: rename and remove files, recursively create and remove directories, obtain filenames in a directory, check whether a given file exists and if a directory or a symbolic link, obtain the current working directory and change to a directory, create hard links and symbolic links, resolve the target of symbolic links, canonize path names. Fortyxima/filesys replaces the old modfilesys library. (OS: BSD)
Posix90 - The Fortran 90 Posix interface project. (OS: GPLv2+)
Compiler support for Fortran 2008 and 2018 - PDF file. This is updated regularly and also appears in ACM Fortran Forum.
fortran-compiler-tests collection of Fortran compiler bug examples and tests.
Initializes the state of the pseudorandom number generator used by random_number
.
Subroutine
call random_init(repeatable, image_distinct)
repeatable
- Shall be a scalar with a logical
type, and it is intent(in)
. If it is .true.
, the seed is set to a processor-dependent value that is the same each time random_init
is called from the same image. The term “same image” means a single instance of program execution. The sequence of random numbers is different for repeated execution of the program. If it is .false.
, the seed is set to a processor-dependent value.image_distinct
- Shall be a scalar with a logical
type, and it is intent(in)
. If it is .true.
, the seed is set to a processor-dependent value that is distinct from the seed set by a call to random_init
in another image. If it is .false.
, the seed is set value that does depend which image called random_init
.program test_random_seed
implicit none
real x(3), y(3)
call random_init(.true., .true.)
call random_number(x)
call random_init(.true., .true.)
call random_number(y)
! x and y are the same sequence
if (any(x /= y)) stop "x(:) and y(:) not all equal"
end program test_random_seed
By Hans Fehr and Fabian Kindermann (2018)
Oxford University Press
Introduction to Computational Economics Using Fortran is the essential guide to conducting economic research on a computer. Aimed at students of all levels of education as well as advanced economic researchers, it facilitates the first steps into writing programs using Fortran.
Introduction to Computational Economics Using Fortran assumes no prior experience as it introduces the reader to this programming language. It shows the reader how to apply the most important numerical methods conducted by computational economists using the toolbox that accompanies this text. It offers various examples from economics and finance organized in self-contained chapters that speak to a diverse range of levels and academic backgrounds. Each topic is supported by an explanation of the theoretical background, a demonstration of how to implement the problem on the computer, and a discussion of simulation results. Readers can work through various exercises that promote practical experience and deepen their economic and technical insights.
This textbook is accompanied by a website from which readers can download all program codes as well as a numerical toolbox, and receive technical information on how to install Fortran on their computer.
Part I: An Introduction to Fortran 90 and Numerical Methods
Part II: Computational Economics for Beginners
Part III: Advanced Computational Economics
MathCode F90 1.2 - Generates Optimized Fortran 90 Code from Mathematica Programs
Fortran Code Generation Using Sympy by Ivan Pribec
F is a subset of Fortran 95.
F homepage: https://pages.swcp.com/~walt/F/
The F syntax is available at http://pages.swcp.com/~walt/F/F_bnf.html
Since F is a subset of Fortran 95, any Fortran 95 compiler will compile an F program. However, to impose strict F syntax, a compile with explicit support for F can be used.
The G95 compiler supports the F standard and will enforce the standard when -std=F
is used:
g95 -std=F my_program.f95
The Fortran Wiki is an open venue for discussing all aspects of the Fortran programming language and scientific computing. See the mission statement for more details.
You can edit this website using the Edit Page link at the bottom of each page. Feel free to use the Sandbox to experiment. The HowTo contains more information on getting started. For questions, see Fortran Wiki discussion.
El Fortran Wiki es un lugar abierto para discutir todos los aspectos del lenguaje de programación Fortran y la computación científica. Vea la declaración de la misión para más detalles.
Puede editar este sitio web utilizando el enlace Editar página en la parte inferior de cada página. Siéntase libre de usar el Sandbox para experimentar. El HowTo contiene más información sobre cómo empezar. Para preguntas, vea Fortran Wiki discusión.
Noticias - noticias y actualizaciones sobre el wiki y la Comunidad Fortran. HowTo - cómo puede contribuir al Fortran Wiki Código - cargar y descargar el código Fortran Preguntas más frecuentes sobre Fortran