⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcerror.f90

📁 数值计算和数值分析在Fortran下的特殊函数库,是数值计算的必备
💻 F90
字号:
MODULE cerror_func
 
! From the book "Computation of Special Functions"
!      by Shanjie Zhang and Jianming Jin
!   Copyright 1996 by John Wiley & Sons, Inc.
! The authors state:
!   "However, we give permission to the reader who purchases this book
!    to incorporate any of these programs into his or her programs
!    provided that the copyright is acknowledged."
 
IMPLICIT NONE
INTEGER, PARAMETER  :: dp = SELECTED_REAL_KIND(12, 60)
 
CONTAINS
 

SUBROUTINE cerror(z, cer)

!    ====================================================
!    Purpose: Compute error function erf(z) for a complex
!             argument (z=x+iy)
!    Input :  z   --- Complex argument
!    Output:  CER --- erf(z)
!    ====================================================

COMPLEX (dp), INTENT(IN)   :: z
COMPLEX (dp), INTENT(OUT)  :: cer

REAL (dp)     :: a0
COMPLEX (dp)  :: c0, cl, cr, cs, z1
INTEGER       :: k
REAL (dp), PARAMETER  :: pi = 3.141592653589793_dp

a0 = ABS(z)
c0 = EXP(-z*z)
z1 = z
IF (REAL(z, KIND=dp) < 0.0_dp) z1 = -z
IF (a0 <= 5.8_dp) THEN
  cs = z1
  cr = z1
  DO  k = 1, 120
    cr = cr * z1 * z1 / (k + 0.5_dp)
    cs = cs + cr
    IF (ABS(cr/cs) < 1.0D-15) EXIT
  END DO
  cer = 2.0_dp * c0 * cs / SQRT(pi)
ELSE
  cl = 1.0_dp / z1
  cr = cl
  DO  k = 1, 13
    cr = -cr * (k - 0.5_dp) / (z1*z1)
    cl = cl + cr
    IF (ABS(cr/cl) < 1.0D-15) EXIT
  END DO
  cer = 1.0_dp - c0 * cl / SQRT(pi)
END IF
IF (REAL(z, KIND=dp) < 0.0_dp) cer = -cer
RETURN
END SUBROUTINE cerror

END MODULE cerror_func
 
 
 
PROGRAM mcerror
USE cerror_func
IMPLICIT NONE

! Code converted using TO_F90 by Alan Miller
! Date: 2001-12-25  Time: 11:55:34

!    ============================================================
!    Purpose: This program computes the error function erf(z)
!             for a complex argument using subroutine CERROR
!    Input :  x   --- Real part of z
!             y   --- Imaginary part of z  ( y 

⌨️ 快捷键说明

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