Fortran Coder

查看: 26061|回复: 28
打印 上一主题 下一主题

[讨论] 一个数组运算的问题

[复制链接]

47

帖子

3

主题

0

精华

大师

F 币
1634 元
贡献
119 点

规矩勋章

楼主
发表于 2017-8-5 15:52:06 | 显示全部楼层
本帖最后由 维尼猴 于 2017-8-5 15:58 编辑

哇塞,竟然能这样操作,但感觉可能和缓存的处理有关系吧

我试了一下,比如加个 中间变量  temp

[Fortran] 纯文本查看 复制代码
temp = ia_index(1,:)
ra_val3(temp ) = ra_val3(temp ) + ra_add


这样处理之后是可以累加的,可能是你数组声明成  2,9 的问题,内存不够连续??
来我试试  9,2 的

诶………………我试了一下,失败了,把  ia_index 交换了维数也没有得到对应效果

47

帖子

3

主题

0

精华

大师

F 币
1634 元
贡献
119 点

规矩勋章

沙发
发表于 2017-8-5 16:00:59 | 显示全部楼层
我补充测试了一下,似乎下标数组不能取切片

[Fortran] 纯文本查看 复制代码
program main
implicit none
  integer :: ia(5),ib(9)
  ia = [1,5,5,5,2]
  ib = 0
  ib(ia) = ib(    ia  (:)   ) + [1,1,1,1,1]
  write(*,*) ib
  stop
end program


只是在你原来例子上给ia加了个切片操作,就不能累加了

47

帖子

3

主题

0

精华

大师

F 币
1634 元
贡献
119 点

规矩勋章

板凳
发表于 2017-8-6 16:07:59 | 显示全部楼层
andy8496 发表于 2017-8-5 21:29
唉,我都忘了我哪些地方用了这种写法,但是肯定不止目前发现的这个位置。真是郁闷了!
要是能通过什么编译 ...

我感觉这种有些“讨巧”的语法,还是少用心里更安一些呢

47

帖子

3

主题

0

精华

大师

F 币
1634 元
贡献
119 点

规矩勋章

地板
发表于 2017-8-7 19:57:52 | 显示全部楼层
chiangtp 发表于 2017-8-7 16:16
你ˋ可能還需要考慮另一個問題:

哇,学到好多~~



能问一下这个资料从哪里可以找到么?我可能找法不对,没有搜到

47

帖子

3

主题

0

精华

大师

F 币
1634 元
贡献
119 点

规矩勋章

5#
发表于 2017-8-8 16:50:25 | 显示全部楼层
chiangtp 发表于 2017-8-8 00:02
http://pan.baidu.com/s/1i5l8Ypf

O(∩_∩)O谢谢!!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-5 10:44

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表