specifics_1.f90

来自「用于进行gcc测试」· F90 代码 · 共 319 行

F90
319
字号
! Program to test intrinsic functions as actual arguments!! Copied from gfortran.fortran-torture/execute/specifics.f90! Please keep them in sync!! It is run here with -ff2c option!! { dg-do run }! { dg-options "-ff2c" }! Program to test intrinsic functions as actual argumentssubroutine test_c(fn, val, res)  complex fn  complex val, res  if (diff(fn(val),res)) call abortcontainsfunction diff(a,b)  complex a,b  logical diff  diff = (abs(a - b) .gt. 0.00001)end functionend subroutine subroutine test_z(fn, val, res)  double complex fn  double complex val, res  if (diff(fn(val),res)) call abortcontainsfunction diff(a,b)  double complex a,b  logical diff  diff = (abs(a - b) .gt. 0.00001)end functionend subroutine subroutine test_cabs(fn, val, res)  real fn, res  complex val  if (diff(fn(val),res)) call abortcontainsfunction diff(a,b)  real a,b  logical diff  diff = (abs(a - b) .gt. 0.00001)end functionend subroutine subroutine test_cdabs(fn, val, res)  double precision fn, res  double complex val  if (diff(fn(val),res)) call abortcontainsfunction diff(a,b)  double precision a,b  logical diff  diff = (abs(a - b) .gt. 0.00001)end functionend subroutine subroutine test_r(fn, val, res)  real fn  real val, res  if (diff(fn(val), res)) call abortcontainsfunction diff(a, b)  real a, b  logical diff  diff = (abs(a - b) .gt. 0.00001)end functionend subroutinesubroutine test_d(fn, val, res)  double precision fn  double precision val, res  if (diff(fn(val), res)) call abortcontainsfunction diff(a, b)  double precision a, b  logical diff  diff = (abs(a - b) .gt. 0.00001d0)end functionend subroutinesubroutine test_r2(fn, val1, val2, res)  real fn  real val1, val2, res  if (diff(fn(val1, val2), res)) call abortcontainsfunction diff(a, b)  real a, b  logical diff  diff = (abs(a - b) .gt. 0.00001)end functionend subroutinesubroutine test_d2(fn, val1, val2, res)  double precision fn  double precision val1, val2, res  if (diff(fn(val1, val2), res)) call abortcontainsfunction diff(a, b)  double precision a, b  logical diff  diff = (abs(a - b) .gt. 0.00001d0)end functionend subroutinesubroutine test_dprod(fn)  double precision fn  if (abs (fn (2.0, 3.0) - 6d0) .gt. 0.00001) call abortend subroutinesubroutine test_nint(fn,val,res)  integer fn, res  real val  if (res .ne. fn(val)) call abortend subroutinesubroutine test_idnint(fn,val,res)  integer fn, res  double precision val  if (res .ne. fn(val)) call abortend subroutinesubroutine test_idim(fn,val1,val2,res)  integer fn, res, val1, val2  if (res .ne. fn(val1,val2)) call abortend subroutinesubroutine test_iabs(fn,val,res)  integer fn, res, val  if (res .ne. fn(val)) call abortend subroutinesubroutine test_len(fn,val,res)  integer fn, res  character(len=*) val  if (res .ne. fn(val)) call abortend subroutinesubroutine test_index(fn,val1,val2,res)  integer fn, res  character(len=*) val1, val2  if (fn(val1,val2) .ne. res) call abortend subroutineprogram specifics  intrinsic abs  intrinsic aint  intrinsic anint  intrinsic acos  intrinsic acosh  intrinsic asin  intrinsic asinh  intrinsic atan  intrinsic atanh  intrinsic cos  intrinsic sin  intrinsic tan  intrinsic cosh  intrinsic sinh  intrinsic tanh  intrinsic alog  intrinsic alog10  intrinsic exp  intrinsic sign  intrinsic isign  intrinsic amod  intrinsic dabs  intrinsic dint  intrinsic dnint  intrinsic dacos  intrinsic dacosh  intrinsic dasin  intrinsic dasinh  intrinsic datan  intrinsic datanh  intrinsic dcos  intrinsic dsin  intrinsic dtan  intrinsic dcosh  intrinsic dsinh  intrinsic dtanh  intrinsic dlog  intrinsic dlog10  intrinsic dexp  intrinsic dsign  intrinsic dmod  intrinsic conjg  intrinsic ccos  intrinsic cexp  intrinsic clog  intrinsic csin  intrinsic csqrt  intrinsic dconjg  intrinsic cdcos  intrinsic cdexp  intrinsic cdlog  intrinsic cdsin  intrinsic cdsqrt  intrinsic zcos  intrinsic zexp  intrinsic zlog  intrinsic zsin  intrinsic zsqrt  intrinsic cabs  intrinsic cdabs  intrinsic zabs  intrinsic dprod  intrinsic nint  intrinsic idnint  intrinsic dim  intrinsic ddim  intrinsic idim  intrinsic iabs  intrinsic mod  intrinsic len  intrinsic index  intrinsic aimag  intrinsic dimag  call test_r (abs, -1.0, abs(-1.0))  call test_r (aint, 1.7, aint(1.7))  call test_r (anint, 1.7, anint(1.7))  call test_r (acos, 0.5, acos(0.5))  call test_r (acosh, 1.5, acosh(1.5))  call test_r (asin, 0.5, asin(0.5))  call test_r (asinh, 0.5, asinh(0.5))  call test_r (atan, 0.5, atan(0.5))  call test_r (atanh, 0.5, atanh(0.5))  call test_r (cos, 1.0, cos(1.0))  call test_r (sin, 1.0, sin(1.0))  call test_r (tan, 1.0, tan(1.0))  call test_r (cosh, 1.0, cosh(1.0))  call test_r (sinh, 1.0, sinh(1.0))  call test_r (tanh, 1.0, tanh(1.0))  call test_r (alog, 2.0, alog(2.0))  call test_r (alog10, 2.0, alog10(2.0))  call test_r (exp, 1.0, exp(1.0))  call test_r2 (sign, 1.0, -2.0, sign(1.0, -2.0))  call test_r2 (amod, 3.5, 2.0, amod(3.5, 2.0))    call test_d (dabs, -1d0, abs(-1d0))  call test_d (dint, 1.7d0, 1d0)  call test_d (dnint, 1.7d0, 2d0)  call test_d (dacos, 0.5d0, dacos(0.5d0))  call test_d (dacosh, 1.5d0, dacosh(1.5d0))  call test_d (dasin, 0.5d0, dasin(0.5d0))  call test_d (dasinh, 0.5d0, dasinh(0.5d0))  call test_d (datan, 0.5d0, datan(0.5d0))  call test_d (datanh, 0.5d0, datanh(0.5d0))  call test_d (dcos, 1d0, dcos(1d0))  call test_d (dsin, 1d0, dsin(1d0))  call test_d (dtan, 1d0, dtan(1d0))  call test_d (dcosh, 1d0, dcosh(1d0))  call test_d (dsinh, 1d0, dsinh(1d0))  call test_d (dtanh, 1d0, dtanh(1d0))  call test_d (dlog, 2d0, dlog(2d0))  call test_d (dlog10, 2d0, dlog10(2d0))  call test_d (dexp, 1d0, dexp(1d0))  call test_d2 (dsign, 1d0, -2d0, sign(1d0, -2d0))  call test_d2 (dmod, 3.5d0, 2d0, dmod(3.5d0, 2d0))  call test_dprod (dprod)  call test_c (conjg, (1.2,-4.), conjg((1.2,-4.)))  call test_c (ccos, (1.2,-4.), ccos((1.2,-4.)))  call test_c (cexp, (1.2,-4.), cexp((1.2,-4.)))  call test_c (clog, (1.2,-4.), clog((1.2,-4.)))  call test_c (csin, (1.2,-4.), csin((1.2,-4.)))  call test_c (csqrt, (1.2,-4.), csqrt((1.2,-4.)))  call test_z (dconjg, (1.2d0,-4.d0), dconjg((1.2d0,-4.d0)))  call test_z (cdcos, (1.2d0,-4.d0), cdcos((1.2d0,-4.d0)))  call test_z (zcos, (1.2d0,-4.d0), zcos((1.2d0,-4.d0)))  call test_z (cdexp, (1.2d0,-4.d0), cdexp((1.2d0,-4.d0)))  call test_z (zexp, (1.2d0,-4.d0), zexp((1.2d0,-4.d0)))  call test_z (cdlog, (1.2d0,-4.d0), cdlog((1.2d0,-4.d0)))  call test_z (zlog, (1.2d0,-4.d0), zlog((1.2d0,-4.d0)))  call test_z (cdsin, (1.2d0,-4.d0), cdsin((1.2d0,-4.d0)))  call test_z (zsin, (1.2d0,-4.d0), zsin((1.2d0,-4.d0)))  call test_z (cdsqrt, (1.2d0,-4.d0), cdsqrt((1.2d0,-4.d0)))  call test_z (zsqrt, (1.2d0,-4.d0), zsqrt((1.2d0,-4.d0)))  call test_cabs (cabs, (1.2,-4.), cabs((1.2,-4.)))  call test_cdabs (cdabs, (1.2d0,-4.d0), cdabs((1.2d0,-4.d0)))  call test_cdabs (zabs, (1.2d0,-4.d0), zabs((1.2d0,-4.d0)))  call test_cabs (aimag, (1.2,-4.), aimag((1.2,-4.)))  call test_cdabs (dimag, (1.2d0,-4.d0), dimag((1.2d0,-4.d0)))  call test_nint (nint, -1.2, nint(-1.2))  call test_idnint (idnint, -1.2d0, idnint(-1.2d0))  call test_idim (isign, -42, 17, isign(-42, 17))  call test_idim (idim, -42, 17, idim(-42,17))  call test_idim (idim, 42, 17, idim(42,17))  call test_r2 (dim, 1.2, -4., dim(1.2, -4.))  call test_d2 (ddim, 1.2d0, -4.d0, ddim(1.2d0, -4.d0))  call test_iabs (iabs, -7, iabs(-7))  call test_idim (mod, 5, 2, mod(5,2))  call test_len (len, "foobar", len("foobar"))  call test_index (index, "foobarfoobar", "bar", index("foobarfoobar","bar"))end program

⌨️ 快捷键说明

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