renaming the "flang-new" compiler just to "flang".
Those interested in all of the fine details around this new "Flang" compiler in LLVM 20+ can read all about it on the LLVM.org blog.
このブログ記事は長いですが、Fortran 処理系が LLVM にもたらした進歩や意義にも触れられていて、いいまとめです。
Why Fortran? や Why Would You Make Another Fortran Compiler? などの素朴な疑問にもきっちり答えています。
WSL2 ubuntu 24.04 にインストール
chatGPT 先生の御託宣により、以下のとおりでバイナリをインストールできました version は flang 20.1.1 で、flang-new-20 で起動されます。上記記事とは異なり、昔の名前で出ていました。
1. LLVMのAPTリポジトリを追加する:
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc sudo add-apt-repository -y "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main" sudo apt update
2. Flangのインストール:
sudo apt install -y flang-20
3. インストールの確認:
flang-new-20 --version
test
program sine implicit none real, parameter :: pi = 4 * atan(1.0) real, parameter :: val(*) = [0.0, 1.0, sqrt(3.0)/2.0, 1.0/sqrt(2.0), sqrt((5.0-sqrt(5.0))/8.0), 1.0/2.0] ! sin(pi ) = 0 ! sin(pi/2) = 1 ! sin(pi/3) = sqrt(3)/2 ! sin(pi/4) = 1/sqrt(2) ! sin(pi/5) = sqrt((5-sqrt(5))/8) ! sin(pi/6) = 1/2 real :: x, y integer :: i do i = 1, 6 x = pi / i ! y = sin(x) y = sind(180.0/i) print '(a, i1, 2f10.7, es15.7)', 'pi/', i, y, val(i), y - val(i) end do end program sine
$ flang-new-20 --version Ubuntu flang version 20.1.1 (++20250311083225+dcc378e862de-1~exp1~20250311203242.72) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/lib/llvm-20/bin $ flang-new-20 sine.f90 $ ./a.out pi/1-0.0000001 0.0000000 -8.7422777E-08 pi/2 1.0000000 1.0000000 0.0000000E+00 pi/3 0.8660254 0.8660254 5.9604645E-08 pi/4 0.7071068 0.7071068 0.0000000E+00 pi/5 0.5877852 0.5877852 0.0000000E+00 pi/6 0.5000000 0.5000000 0.0000000E+00 $
この誤差の出方は、ラジアン計算の時と同じなので、せっかく degree 引数の sind(x) 関数を導入したのに、実装が旧来のままで degree で誤差の出ないそれ用の級数展開になっていないと思われる。まだやっつけ感漂うw


