Do not print parentheses if not needed
Currently the formatter puts parentheses around expressions even if they are not needed:
$ lfortran fmt integration_tests/program_01.f90
program program_01
integer, parameter :: dp=kind(0.d0)
real :: a
integer :: i
print *, "Normal random numbers:"
do i = 1, 10
call rand(a)
print *, a
end do
contains
subroutine rand(x)
real, intent(out) :: x
logical, save :: first=.true.
real, save :: u(2)
real :: r2
if (first) then
do
call random_number(u)
u = ((2)*(u)) - (1)
r2 = sum((u)**(2))
if (((r2)<(1)).and.((r2)>(0))) then
exit
end if
end do
u = (u)*(sqrt(((-(2))*(log(r2)))/(r2)))
x = u(1)
else
x = u(2)
end if
first = .not.(first)
end subroutine rand
end program program_01
We should use Fortran semantics to only put parentheses when they are needed.