bessy0.f90

来自「FORTRANvisualfortran常用数值算法集及源码」· F90 代码 · 共 32 行

F90
32
字号
FUNCTION bessy0(x)
REAL bessy0,x
!USES bessj0
REAL xx,z,bessj0
DOUBLE PRECISION p1,p2,p3,p4,p5,q1,q2,q3,q4,q5,&
       r1,r2,r3,r4,r5,r6,s1,s2,s3,s4,s5,s6,y
SAVE p1,p2,p3,p4,p5,q1,q2,q3,q4,q5,r1,r2,r3,r4,r5,r6,&
     s1,s2,s3,s4,s5,s6
DATA p1,p2,p3,p4,p5/1.d0,-.1098628627d-2,.2734510407d-4,&
     -.2073370639d-5,.2093887211d-6/, q1,q2,q3,q4,q5/&
	 -.1562499995d-1,.1430488765d-3,-.6911147651d-5,&
	 .7621095161d-6,-.934945152d-7/
DATA r1,r2,r3,r4,r5,r6/-2957821389.d0,7062834065.d0,&
     -512359803.6d0,10879881.29d0,-86327.92757d0,&
	 228.4622733d0/,s1,s2,s3,s4,s5,s6/40076544269.d0,&
	 745249964.8d0,7189466.438d0,47447.26470d0,&
	 226.1030244d0,1.d0/
if(x<8.)then
  y=x**2
  bessy0=(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))))/&
         (s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))+&
		 .636619772*bessj0(x)*log(x)
else
  z=8./x
  y=z**2
  xx=x-.785398164
  bessy0=sqrt(.636619772/x)*(sin(xx)*(p1+y*(p2+y*&
         (p3+y*(p4+y*p5))))+z*cos(xx)*(q1+y*(q2+y*&
		 (q3+y*(q4+y*q5)))))
endif
END FUNCTION bessy0

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?