fortran和其他编程语言一样包含了各种内置的函数接口供使用者调用
我在使用过程中遇到各种内置函数,会在此记录和简单介绍
2018.10.24
1.trim(string)
函数功能:舍去字符串尾部的空格,并返回剩余部分。
character(len=10) ::str
str = "leo "
write(*,"(a,a)") str,"***"
write(*,"(a,a)") trim(str), "***"
输出结果
leo ***
leo***
2.nint(x[,kind])
函数功能:将x转换为整数(四舍五入),即取最接近的整数。中括号内表示可选参数
3.nullify(p)
函数功能:将指针p置空,相当于c/c++里的 "p = NULL"
real,target::a
real,pointer::p1,p2
p1=>a,p2=>a !p1,p2都指向a
nullify(p1) !p1为空,p2仍指向a
p2=>p1 !p1与p2都为空指针
注:这里容易和释放p的内存混淆,释放内存是deallocate(p),和分配内存allocate相对应
4.present(param)
函数功能:判断某些可忽略的参数是否指定了
比如一个子程序 subroutine sub(a,b,c)
其中,c是可选参数:real , optional :: c
那么调用时,可以 call sub(a,b,c) 也可以 call sub(a,b)
前一种情况,present(c) 就是真,对于后一种情况,present(c) 就是假,因为没有传入c
2018.10.29
5.size(array[,dim])
函数功能:返回数组在指定维上的长度
如有一个10个元素的一维数组a,size(a) 得到的就是10
如果是二维数组b(i,j)
size(b,1) = i
size(b,2) = j
size(b) = i * j
6.mod(A1,A2)
函数功能:求A1对A2的取余的余数
如:
if(mod(a,2) .eq. 0 )
print*,a,"是偶数"
如果a是偶数则会打印
7.index(string,substring[,back])
函数功能:返回substring在string中出现的位置
STRING:必须是字符型
SUBSTRING:必须是字符型
BACK:可选的,逻辑型
如果没有出现BACK选项或者BACK的值是.FALSE.,结果是I的最小值,其中I满足下式STRING (I : I + LEN (SUBSTRING) - 1) = SUBSTRING 如果I不存在则返回零值。如果LEN (STRING) < LEN (SUBSTRING)也返回零值。如果LEN (SUBSTRING) = 0.返回1
如果BACK的值为 .TRUE., 结果是I的最大值,其中I满足STRING (I : I + LEN (SUBSTRING) - 1) = SUBSTRING ,I不存在时返回0。如果LEN (STRING) < LEN (SUBSTRING)返回0 ,如果 LEN (SUBSTRING) = 0返回LEN (STRING) + 1
示例:
INDEX ('FORTRAN', 'R', BACK = .TRUE.) 返回 5
INDEX ('FORTRAN', 'R') 返回 3
2018.10.29
8.abs(x)
函数功能:求x的绝对值
示例:
integer :: a = -4,b = 0
b = abs(a) ! b此时等于4
9.max,min(x1,x2,x3···)
函数功能:求x1,x2,x3,···中最大(小)值,x为任意类型,结果类型同x
示例:
integer res
res = min(1,2,5,12,7) ! 结果是1
10.BTEST(n,p) | ITEST(n,p)
函数功能:btest--判定整数n的二进制表示右起第p位是否为1;
itest--将整数n二进制表示右起第p位置1
2018.11.01
11.precision(x) ★
函数功能:查询x类型有效数字位数
12.range(x) ★
函数功能:查询x类型的指数范围