Fortran 中的布尔函数
Boolean Function In Fortran
我们如何在 Fortran 90 中编写布尔函数。就像我正在制作一个堆栈并想制作一个布尔函数 isEmpty 它将 return 一个 true/false.
我试图寻找这方面的示例,但实际上找不到。谁能告诉我如何做到这一点的例子。
以下是使用不同语法返回逻辑值的函数的三个示例。您可以选择是否定义与函数名称不同的 RESULT 变量。我在我的代码中使用第一种语法。
module foo
implicit none
contains
!
function even(i) result(tf)
integer, intent(in) :: i
logical :: tf
tf = modulo(i,2) == 0
end function even
!
logical function odd(i) result(tf)
integer, intent(in) :: i
tf = modulo(i,2) == 1
end function odd
!
logical function triplet(i)
integer, intent(in) :: i
triplet = modulo(i,3) == 0
end function triplet
!
end module foo
!
program main
use foo, only: even,odd,triplet
implicit none
print*,even(2),even(3),even(5),even(0) ! output: T F F T
print*,odd(2),odd(3),odd(5),odd(0) ! output: F T T F
print*,triplet(2),triplet(3),triplet(5),triplet(0) ! output: F T F T
end program main
我们如何在 Fortran 90 中编写布尔函数。就像我正在制作一个堆栈并想制作一个布尔函数 isEmpty 它将 return 一个 true/false.
我试图寻找这方面的示例,但实际上找不到。谁能告诉我如何做到这一点的例子。
以下是使用不同语法返回逻辑值的函数的三个示例。您可以选择是否定义与函数名称不同的 RESULT 变量。我在我的代码中使用第一种语法。
module foo
implicit none
contains
!
function even(i) result(tf)
integer, intent(in) :: i
logical :: tf
tf = modulo(i,2) == 0
end function even
!
logical function odd(i) result(tf)
integer, intent(in) :: i
tf = modulo(i,2) == 1
end function odd
!
logical function triplet(i)
integer, intent(in) :: i
triplet = modulo(i,3) == 0
end function triplet
!
end module foo
!
program main
use foo, only: even,odd,triplet
implicit none
print*,even(2),even(3),even(5),even(0) ! output: T F F T
print*,odd(2),odd(3),odd(5),odd(0) ! output: F T T F
print*,triplet(2),triplet(3),triplet(5),triplet(0) ! output: F T F T
end program main