Fortran Coder

查看: 25131|回复: 2
打印 上一主题 下一主题

[求助] simly Fortran中sign()函数的问题

[复制链接]

16

帖子

5

主题

0

精华

入门

F 币
85 元
贡献
52 点

规矩勋章

跳转到指定楼层
楼主
发表于 2016-3-19 19:32:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
          具体的代码是这样的:
       do n2=1,number
                                          if (n1 .ne. n2) then


                                                NN1=n1-number0-1
                                                NN2=n2-number0-1
                                                S(n1,n2)=sign(1.0,kz+NN1*K)*sign(1.0,kz+NN2*K)
       .......
                                         end if
                                        end do
其中红色的那句代码出现报错,Error: 'b' argument of 'sign' intrinsic at (1) must be the same type and kind as 'a'
求大神帮忙解决一下,该怎么改

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2016-3-19 20:05:26 | 只看该作者
本帖最后由 vvt 于 2016-3-19 20:07 编辑

sign(1.0,kz+NN1*K)
这里第一个参数是 1.0 ,是 real 类型
第二个参数是 kz+NN1*k,是 integer 类型(我猜是,毕竟你没给出定义)

sign 要求两个参数的类型要一致。这是 fortran 语法要求的,每一个编译器都应该如此。不是 simply fortran 特殊要求的。
此外,你应该知道,simply fortran 内核是 Gfortran

16

帖子

5

主题

0

精华

入门

F 币
85 元
贡献
52 点

规矩勋章

板凳
 楼主| 发表于 2016-3-19 20:36:42 | 只看该作者
vvt 发表于 2016-3-19 20:05
sign(1.0,kz+NN1*K)
这里第一个参数是 1.0 ,是 real 类型
第二个参数是 kz+NN1*k,是 integer 类型(我猜 ...

是参数类型不一样导致的,刚转化了报错消失了,多谢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-20 23:41

Powered by Tencent X3.4

© 2013-2024 Tencent

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