我编写基于现代Fortran的代码。出于某种原因,我想以一种与旧版本兼容的方式对其进行修改。这里需要从最新版本转换到版本95。我有两个内部函数的问题。"Mov_alloc“和"Norm2”是这些函数的一部分。我想知道:在Fortran 95中有没有针对它们的内部函数?或者,是否有任何外部函数可以精确地完成相同的工作?
发布于 2021-03-07 20:08:09
根据该定义,您可以很容易地自己实现norm2()。如果您的数字太大,溢出是一个问题,那么一定要小心。但最简单的版本也很简单
norm2 = sum(A**2)在Fortran95中没有move_alloc()的等价物。您可能需要使用指针而不是可分配变量。你可以用C实现你自己的版本,但是这需要Fortran 2003-2018的很多特性,所以对你来说意义不大。
您可以考虑自己重新分配阵列并复制数据,而不是执行move_alloc()
if (allocated(B)) deallocate(B)
allocate(B(lbound(A,1):ubound(A,1)))
B(:) = A
deallocate(A)但是,它与move_alloc()不同。
https://stackoverflow.com/questions/66516244
复制相似问题