我知道这本身并不完全与编程相关,但程序员是最有可能认识到这一点的人.
我有以下(X和Y是数组,都有3个元素),我无法识别(虽然它让我想起了一些事情,但没有完全!)这里做了什么.它会为其他人敲响任何铃声吗?
我认为你可以忽视下半部分; 鞋帮应该放弃......但我仍然看不到它.
起初它让我想起了3d空间中的线性插值......
SUBROUTINE TRII(X,Y,XR,YR)
DIMENSION X(3),Y(3)
D=X(1)*(X(2)**2-X(3)**2)+
> X(2)*(X(3)**2-X(1)**2)+
> X(3)*(X(1)**2-X(2)**2)
D1=Y(1)*(X(2)*X(3)**2-X(3)*X(2)**2)+
> Y(2)*(X(3)*X(1)**2-X(1)*X(3)**2)+
> Y(3)*(X(1)*X(2)**2-X(2)*X(1)**2)
D2=Y(1)*(X(2)**2-X(3)**2)+
> Y(2)*(X(3)**2-X(1)**2)+
> Y(3)*(X(1)**2-X(2)**2)
D3=X(2)*(Y(3)-Y(1))+
> X(1)*(Y(2)-Y(3))+
> X(3)*(Y(1)-Y(2))
A=D1/D
B=D2/D
C=D3/D
YR=A+B*XR+C*XR**2
RETURN
END
SUBROUTINE TRIM(X,Y,XR,YR,XM,YM)
DIMENSION X(3),Y(3)
D=X(1)*(X(2)**2-X(3)**2)+
> X(2)*(X(3)**2-X(1)**2)+
> X(3)*(X(1)**2-X(2)**2)
D1=Y(1)*(X(2)*X(3)**2-X(3)*X(2)**2)+
> Y(2)*(X(3)*X(1)**2-X(1)*X(3)**2)+
> Y(3)*(X(1)*X(2)**2-X(2)*X(1)**2)
D2=Y(1)*(X(2)**2-X(3)**2)+
> Y(2)*(X(3)**2-X(1)**2)+
> Y(3)*(X(1)**2-X(2)**2)
D3=X(2)*(Y(3)-Y(1))+
> X(1)*(Y(2)-Y(3))+
> X(3)*(Y(1)-Y(2))
A=D1/D
B=D2/D
C=D3/D
XR=-B/(2.*C)
YR=A+B*XR+C*XR**2
XM=XR
IF(XR.GT.X(1).OR.XR.LT.X(3))XM=X(1)
YM=A+B*XM+C*XM**2
IF(YM.LT.Y(1))XM=X(1)
IF(YM.LT.Y(1))YM=Y(1)
RETURN
END
Run Code Online (Sandbox Code Playgroud)
">"是一个延续的标志.
我在Fortran 90中调用具有假定形状数组的连续子例程时遇到了问题.更具体地说,我调用两个级别的子例程,将假定形状的数组作为参数传递,但最后数组丢失了.为了演示它,可以遵循以下代码.
program main
INTERFACE
subroutine sub1(x)
real, dimension(:):: x
real C
end subroutine sub1
subroutine sub2(x)
real, dimension(:):: x
real C
end subroutine sub2
END INTERFACE
real, dimension(:), allocatable:: x
allocate(x(1:10)) ! First executable command in main
x(1) = 5.
call sub1(x)
write(*,*) 'result = ',x(1)
deallocate(x)
end program main
subroutine sub1(x) ! The first subroutine
real, dimension(:):: x
real C
call sub2(x)
end subroutine sub1
subroutine sub2(x) ! The second subroutine
real, dimension(:):: x
real C
C2=x(1)
end …Run Code Online (Sandbox Code Playgroud) 假设,如果我的科学工作导致功能/模块/子程序(在桌面上)的开发,我需要知道将其纳入大型模拟中以在超级计算机上运行(可能模拟分子) ,液体,反应等)?
我的印象是,它可能与利用某些库(例如,BLAS,LAPLACK)尽可能,修改算法(减少迭代),分析,并行化,考虑内存 - 硬盘处理器使用/访问...我是意识到这句格言,"想要优化你的代码?不要这样做",但如果有人想学习编写有效的代码,那么可以提供哪些参考?
我认为这个问题与语言无关,但由于生物分子模拟,气候建模等许多数字运算包都是在某些版本的Fortran中编写的,因此这种语言可能是我感兴趣的目标(我在Fortran中进行了相当广泛的编程) 77).
是的,我看着在Java中实现GOTO的各种方式,但这里是真正的世界:我需要转换为Java的最新FORTRAN LAPACK程序的一个,看到 http://www.netlib.org/lapack/timing/eig/ eigsrc/dlasq3.f 例如:
10 CONTINUE
IF( N0.LT.I0 )
$ RETURN
IF( N0.EQ.I0 )
$ GO TO 20
NN = 4*N0 + PP
IF( N0.EQ.( I0+1 ) )
$ GO TO 40
OPS = OPS + DBLE( 3 )
IF( Z( NN-5 ).GT.TOL2*( SIGMA+Z( NN-3 ) ) .AND.
$ Z( NN-2*PP-4 ).GT.TOL2*Z( NN-7 ) )
$ GO TO 30
20 CONTINUE
fortran code ...
GO TO 10
30 CONTINUE
OPS = OPS + DBLE( 2 )
IF( Z( NN-9 …Run Code Online (Sandbox Code Playgroud) 我有一个乳胶文件(.tex)我在vim编辑.通常,我只是进入cmd并键入pdflatex my-file.tex,希望最好,并且.pdf弹出:)
我需要在Vim中更改什么才能使用Vim的"make选项".所以,我可以做:make,让Vim为我构建我的.tex文件.另外,我希望它在右侧的新缓冲区中显示输出?
任何人都可以给我一些指示吗?我刚开始使用该功能(:在Vim中制作).
编辑:奖励点:)以处理塞巴斯蒂安提到的问题的技巧.
我这里有一个测试程序:
program test
implicit none
integer(4) :: indp
integer(4) :: t1(80)
indp = -3
t1(indp) = 1
write(*,*) t1(indp)
end program test
Run Code Online (Sandbox Code Playgroud)
第8行是错误的,因为indp是负数.但是当我编译它时使用'ifort'或'gfortran'它们都找不到这个错误.甚至使用valgrind来调试这个程序它也找不到这个错误.你有什么想法找到这种问题吗?
现在,这可能是显而易见的事情,并且已经为所有人解决,但我只是想到了,所以请仁慈...
是否有一个Vim插件(用于编写降价文本时),使您能够以某种方式插入链接Ctrl- L在这里(StackOverflow)即可。或类似的东西。
例如,我写了一个链接http://www.google.com,按Ctrl- 键L,它将链接移动到页面底部,用[description] [28]代替,其中28是当前的(增加倒数第二个)标识符。
任何人?有什么相似之处吗?
我不经常重新格式化文本,除了平原之外gq所以这可能是简单的事情,但似乎没有在帮助中找到它的运气.
无论如何,我的文字看起来像这样
Funnily enough, that was exciting.
"I've just about had enough of this," said a voice beside him.
He looked up. A girl had come down the other path. Her face was red with exertion under the pale make-up, her hair hung over her eyes in ridiculous ringlets, and she wore a dress which, while clearly made for her size, was designed for someone who was ten years younger and keen on lace edging.
She was quite …Run Code Online (Sandbox Code Playgroud) 我经常发现自己在文件中执行重复文件和替换操作.大多数情况下归结为固定查找和替换操作; 删除一些行,更改一些始终相同的字符串等等.
在Vim中,这是一个不用脑子的事,
function! Modify_Strength_Files()
execute':%s/?/-/'
execute':%s/Ä/-/'
"--------------------------------------------------------
execute':%s/Ä/-/'
execute':%s///g'
"--------------------------------------------------------
execute':g/Version\ of\ Light\ Ship/d'
execute':g/Version\ of\ Data\ for\ Specific\ Regulations/d'
"--------------------------------------------------------
" execute':g/LOADING\ CONDITION/d'
" execute':g/REGULATION:\ A\.562\ IMO\ Resolution/d'
" This is to reduce multiple blank lines into one.
execute ':%s/\s\+$//e'
execute ':%s/\n\{3,}/\r\r/e'
" ---------------------
endfunction
Run Code Online (Sandbox Code Playgroud)
逐字复制.
如何在Sublime Text编辑器中定义这样的函数,如果它可以完成,然后调用以对当前打开的文件进行操作?
fortran ×3
vim ×3
arrays ×1
fortran90 ×1
fortran95 ×1
goto ×1
hpc ×1
java ×1
latex ×1
markdown ×1
math ×1
matlab ×1
memory ×1
optimization ×1
performance ×1
sublimetext2 ×1
windows-xp ×1