79 lines
1.8 KiB
Fortran
79 lines
1.8 KiB
Fortran
!-*- mode: compilation; default-directory: "/tmp/" -*-
|
|
!Compilation started at Tue May 21 20:22:56
|
|
!
|
|
!a=./f && make $a && OMP_NUM_THREADS=2 $a < unixdict.txt
|
|
!gfortran -std=f2008 -Wall -ffree-form -fall-intrinsics f.f08 -o f
|
|
! n odd even
|
|
!-6 F T
|
|
!-5 T F
|
|
!-4 F T
|
|
!-3 T F
|
|
!-2 F T
|
|
!-1 T F
|
|
! 0 F T
|
|
! 1 T F
|
|
! 2 F T
|
|
! 3 T F
|
|
! 4 F T
|
|
! 5 T F
|
|
! 6 F T
|
|
! -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 n
|
|
! F T F T F T F T F T F T F odd
|
|
! T F T F T F T F T F T F T even
|
|
!
|
|
!Compilation finished at Tue May 21 20:22:56
|
|
|
|
|
|
module bit0parity
|
|
|
|
interface odd
|
|
module procedure odd_scalar, odd_list
|
|
end interface
|
|
|
|
interface even
|
|
module procedure even_scalar, even_list
|
|
end interface
|
|
|
|
contains
|
|
|
|
logical function odd_scalar(a)
|
|
implicit none
|
|
integer, intent(in) :: a
|
|
odd_scalar = btest(a, 0)
|
|
end function odd_scalar
|
|
|
|
logical function even_scalar(a)
|
|
implicit none
|
|
integer, intent(in) :: a
|
|
even_scalar = .not. odd_scalar(a)
|
|
end function even_scalar
|
|
|
|
function odd_list(a) result(rv)
|
|
implicit none
|
|
integer, dimension(:), intent(in) :: a
|
|
logical, dimension(size(a)) :: rv
|
|
rv = btest(a, 0)
|
|
end function odd_list
|
|
|
|
function even_list(a) result(rv)
|
|
implicit none
|
|
integer, dimension(:), intent(in) :: a
|
|
logical, dimension(size(a)) :: rv
|
|
rv = .not. odd_list(a)
|
|
end function even_list
|
|
|
|
end module bit0parity
|
|
|
|
program oe
|
|
use bit0parity
|
|
implicit none
|
|
integer :: i
|
|
integer, dimension(13) :: j
|
|
write(6,'(a2,2a8)') 'n', 'odd', 'even'
|
|
write(6, '(i2,2l5)') (i, odd_scalar(i), even_scalar(i), i=-6,6)
|
|
do i=-6, 6
|
|
j(i+7) = i
|
|
end do
|
|
write(6, '((13i3),a8/(13l3),a8/(13l3),a8)') j, 'n', odd(j), 'odd', even(j), 'even'
|
|
end program oe
|