Fortran Coder

标题: fortran中向量可以和数字比较大小吗 [打印本页]

作者: little620    时间: 2019-4-12 09:33
标题: fortran中向量可以和数字比较大小吗
新手求助各位大佬,a = MERGE(0.0_8,a,abs(a)<1.0e-20_8)
这个命令里面a是一个向量(REAL(8), DIMENSION(n)         :: a),1.请问向量可以和具体的数字比较大小吗?即abs(a)<1.0e-20_8
2.如果这个命令是可以运行的,那是不是针对a向量里面的每一个元素进行上述merge的操作呢?

作者: 胡文刚    时间: 2019-4-12 09:43
如果 a 是数组,那么 abs(a) < 1.0e-20_8 结果就是 逻辑型数组,类似于 logical z(n)

merge( x , y , z ) 允许通过数组进行判定。
如果 z 是逻辑型数组,那么merge的结果也是数组。

作者: little620    时间: 2019-4-12 10:02
胡文刚 发表于 2019-4-12 09:43
如果 a 是数组,那么 abs(a) < 1.0e-20_8 结果就是 逻辑型数组,类似于 logical z(n)

merge( x , y , z ) ...

谢谢~ fortran竟然是这样操作的hhh,好有意思,学习了学习了,多谢大佬
作者: fcode    时间: 2019-4-12 22:51
数组片段和整体操作,是fortran的强项,也是区别于其他语言很独特(方便)的重要一点。
作者: lookbook    时间: 2019-6-26 22:56
又复习了一遍,果然是要不停得使用才行啊
作者: little620    时间: 2019-6-27 11:28
胡文刚 发表于 2019-4-12 09:43
如果 a 是数组,那么 abs(a) < 1.0e-20_8 结果就是 逻辑型数组,类似于 logical z(n)

merge( x , y , z ) ...

您好,感谢您的回复,还有一个问题
MERGE(SUM(gmat(:,1)*avec*bvec), 0.0_8, af==1 .and. bf==12)
其中gmat是n1×n2维矩阵,avec, bvec, af, bf 都是n1维的向量,我想请问一下这个结果是输出什么呢
因为我一直以为merge(x,y,z)里面x,y,z应该有相同维度,但是上式中的第一个位置用了sum函数,我以为sum输出的是一个数,所以我不知道怎么理解这个式子~






欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2