Skip to content

Instantly share code, notes, and snippets.

View certik's full-sized avatar

Ondřej Čertík certik

View GitHub Profile

NAME

LFortran - modern interactive LLVM-based Fortran compiler

SYNOPSIS

lfortran [OPTIONS] [files...] [SUBCOMMAND]

DESCRIPTION

@certik
certik / a.f90
Created December 1, 2023 15:12
PROGRAM Calibration
IMPLICIT NONE
INTEGER :: total_sum, first_digit, last_digit, calibration_value
CHARACTER(100), DIMENSION(:), ALLOCATABLE :: calibration_document
INTEGER :: i, len_line, char_value, status
! Initialize total sum
total_sum = 0
@certik
certik / a.f90
Created November 11, 2023 00:31
program XX
requirement is_binary_op(T, op)
type, deferred :: T
function op(lhs, rhs) result(res)
type(T), intent(in) :: lhs, rhs
type(T) :: res
end function
end requirement
program expr2
implicit none
integer :: y, z
z = f(y)
print *, z, y
contains
print *, "OK 5"
end
program mandelbrot
integer, parameter :: Nx = 600, Ny = 450, n_max = 255, dp=kind(0.d0)
real(dp), parameter :: xcenter = -0.5_dp, ycenter = 0.0_dp, &
width = 4, height = 3, dx_di = width/Nx, dy_dj = -height/Ny, &
x_offset = xcenter - (Nx+1)*dx_di/2, y_offset = ycenter - (Ny+1)*dy_dj/2
integer :: image(Nx,Ny), image_color(4,Nx,Ny), palette(3,4), i, j, n, idx
real(dp) :: x, y, x_0, y_0, x_sqr, y_sqr
interface
subroutine show_img(w, h, A) bind(c)
integer, intent(in) :: w, h
program mandelbrot
integer, parameter :: Nx = 600, Ny = 450, n_max = 255, dp=kind(0.d0)
real(dp), parameter :: xcenter = -0.5_dp, ycenter = 0.0_dp, &
width = 4, height = 3, dx_di = width/Nx, dy_dj = -height/Ny, &
x_offset = xcenter - (Nx+1)*dx_di/2, y_offset = ycenter - (Ny+1)*dy_dj/2
integer :: image(Nx,Ny), image_color(4,Nx,Ny), palette(3,4), i, j, n, idx
real(dp) :: x, y, x_0, y_0, x_sqr, y_sqr
interface
subroutine show_img_color(w, h, A) bind(c)
integer, intent(in) :: w, h
subroutine surfdisp96(thkm, vpm, vsm, rhom, nlayer, iflsph, iwave, mode, igr, kmax, t, cg, err)
parameter(ler = 0, lin = 5, lot = 6)
integer :: nl, nl2, nlay
parameter(nl = 100, nlay = 100, nl2 = nl + nl)
integer :: np
parameter(np = 60)
real(4) :: thkm(nlay), vpm(nlay), vsm(nlay), rhom(nlay)
integer :: nlayer, iflsph, iwave, mode, igr, kmax, err
double precision :: twopi, one, onea
double precision :: cc, c1, clow, cm, dc, t1
@certik
certik / test_rsqrt.f90
Last active October 13, 2021 19:09
Testing 1/sqrt(x) implementations
program test_rsqrt
! Prints:
! $ gfortran test_rsqrt.f90 && ./a.out
! 0.81649658092772603
! 0.81649658092772626
! 0.81649658092772603
! 0.81649658092772603
implicit none
program bench3
implicit none
integer :: c
c = 0
call g1(c)
call g2(c)
call g3(c)
call g4(c)
call g5(c)
call g6(c)