萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1349|回复: 5

[求助] C 里头呼叫了F77 里头的函数做矩阵相乘,出现了一个很大的数是怎么回事?

[复制链接]
发表于 2014-3-6 15:51 | 显示全部楼层 |阅读模式
其他(信息)
联系人: -
QQ: -
邮箱:
电话: 隐藏内容
所在城市:

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
本帖最后由 orionsnow 于 2014-3-6 15:56 编辑

同事写了一段代码

两个矩阵都设置的是1 或者 0

然后使用fortran77 的函数

F77_NAME(dgemm)
       
进行计算

结果出现了

2.072302e-316  9.881313e-324  2.641320e-316  6.904706e-310  1.259867e-321
[6] -5.486124e+303  4.940656e-324   0.000000e+00   1.000000e+01  1.213625e+132

第6个是很大的一个负数, 还有第10个也是。

计数错位造成的么?

看看谁有在C 里头调用fortran 函数的经验,来指点下。


Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2014-3-6 20:52 | 显示全部楼层
没调过fortran,我猜可能你调用的时候type不匹配,你定义的dgemm是short long int float?调用的F77_NAME函数指定哪个type?

点评

好久不见,小家伙可好  发表于 2014-3-7 14:12
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2014-3-7 10:14 | 显示全部楼层
gonk 发表于 2014-3-6 19:52
没调过fortran,我猜可能你调用的时候type不匹配,你定义的dgemm是short long int float?调用的F77_NAME函 ...

我也觉得是这个问题,可能c 和 fortran 里头对0 和最大数的约定不一置。 我奇怪的是,为什么有的数正确,有的不正确。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2014-3-7 22:24 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2014-3-7 22:24 | 显示全部楼层
orionsnow 发表于 2014-3-7 09:14
我也觉得是这个问题,可能c 和 fortran 里头对0 和最大数的约定不一置。 我奇怪的是,为什么有的数正确, ...

有的数据正确可能没溢出吧
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-5-3 08:58 , Processed in 0.057264 second(s), 21 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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