🧮 Fortran
Язык численных расчётов: типы, массивы, циклы, подпрограммы.
Шпаргалки · Программирование · #fortran #scientific
IDE и сборка
VS Code + Modern Fortran, Visual Studio + Intel oneAPI, Code::Blocks. Компиляторы: gfortran, ifx. gfortran -O2 main.f90 -o app. Менеджер пакетов: fpm (fpm run).
Типы данных
program demo
implicit none ! всегда: запрет неявных типов
integer :: n = 5
real :: x = 1.5
double precision :: d = 1.0d0
complex :: z = (1.0, 2.0)
logical :: ok = .true.
character(len=10) :: s = "text"
real :: a(3) = [1.0, 2.0, 3.0]
real :: m(2, 2)
end program demo
Индексы массивов по умолчанию с 1.
Операторы
+ - * / **, сравнение == /= < > <= >=, логика .and. .or. .not., склейка строк //.
Циклы и условия
do i = 1, 10
print *, i
end do
do while (x < 10.0)
x = x + 1
end do
if (n > 0) then
print *, "положительное"
else if (n == 0) then
print *, "ноль"
else
print *, "отрицательное"
end if
Подпрограммы
function add(a, b) result(r)
integer, intent(in) :: a, b
integer :: r
r = a + b
end function
subroutine swap(a, b)
integer, intent(inout) :: a, b
integer :: t
t = a; a = b; b = t
end subroutine
Встроенные
sum, product, maxval, minval, size, shape, matmul, transpose, dot_product, abs, sqrt, sin, mod, reshape, print *, read *.
Массивы целиком
b = a * 2.0 ! поэлементно
c = sum(a(1:2)) ! срез
where (a > 1.0) a = 0.0 ! по маске
Параллелизм
OpenMP (!$omp parallel do), MPI, do concurrent, coarrays (integer :: x[*]).
Библиотеки по задачам
BLAS / LAPACK (линейная алгебра), FFTW (преобразование Фурье), PETSc (решатели), NetCDF (научные данные), stdlib (fortran-lang).