orionsnow 发表于 2014-3-6 15:51

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

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

同事写了一段代码

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

然后使用fortran77 的函数

F77_NAME(dgemm)
       
进行计算

结果出现了

2.072302e-3169.881313e-3242.641320e-3166.904706e-3101.259867e-321
-5.486124e+3034.940656e-324   0.000000e+00   1.000000e+011.213625e+132

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

计数错位造成的么?

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


gonk 发表于 2014-3-6 20:52

没调过fortran,我猜可能你调用的时候type不匹配,你定义的dgemm是short long int float?调用的F77_NAME函数指定哪个type?

orionsnow 发表于 2014-3-7 10:14

gonk 发表于 2014-3-6 19:52
没调过fortran,我猜可能你调用的时候type不匹配,你定义的dgemm是short long int float?调用的F77_NAME函 ...

我也觉得是这个问题,可能c 和 fortran 里头对0 和最大数的约定不一置。 我奇怪的是,为什么有的数正确,有的不正确。

gonk 发表于 2014-3-7 22:24

回熊猫羊,小家伙挺好。闺女也不错吧?

gonk 发表于 2014-3-7 22:24

orionsnow 发表于 2014-3-7 09:14
我也觉得是这个问题,可能c 和 fortran 里头对0 和最大数的约定不一置。 我奇怪的是,为什么有的数正确, ...

有的数据正确可能没溢出吧
页: [1]
查看完整版本: C 里头呼叫了F77 里头的函数做矩阵相乘,出现了一个很大的数是怎么回事?