如何在MATLAB代码中保持无关联性

时间:2015-03-13 11:27:01

标签: matlab fortran

我有一个简单的问题,但在将Fortran-90代码转录到MATLAB时,我无法重现正确的答案。

使用整数i0 = 842739021913初始化以下MATLAB代码。这是Fortran-90代码的一部分,由更通用的整数随机数生成器例程组成。

i0 = 842739021913 ; 
function x_tdrand = tdrand
    ia = int32(513) ; ib = int32(29741096258473) ; it = int32(140737488355328) ; 
    t = 1.40737488355328e14 ; 
    i0 = ia*i0+ib ; 
    i0 = i0-(i0/it)*it ; 
    x_tdrand = i0/t ;     
end

i0的第二次计算(即i0=i0-(i0/it)*it)应该在Fortran-90中给出i0=39853749433858(见下文),但是使用MATLAB我显然得到零。 感谢您对如何正确复制Fortran代码的任何建议。

SUBROUTINE TDRAND(X)
  USE module_GENERAL, ONLY: I0
  IMPLICIT NONE

  INTEGER(8) :: IA, IB, IT
  DOUBLE PRECISION :: X, T

  DATA IA, IB, IT /513, 29741096258473, 140737488355328/
  DATA T /1.40737488355328D14/

  I0=IA*I0+IB
  I0=I0-(I0/IT)*IT
  X=DBLE(I0)/T

  RETURN
  END SUBROUTINE TDRAND 

0 个答案:

没有答案