📄 pfuimap.f
字号:
subroutine pfuimap(ntab, atumin, atumax, datui, tu, ipow, oner, $ ntab2,atumin2,atumax2,datui2,tu2,icode) implicit none* ARGUMENTS integer ntab,ntab2,ipow,icode logical oner double precision atumin,atumax,datui,atumin2,atumax2,datui2 double precision tu(ntab),tu2(ntab2)* PARAMETERS double precision zero,one parameter (zero=0.d0,one=1.d0)* LOCAL integer itab2,mmm double precision powi,datu2,arg2,arg,xxx,ddd,value if (ipow.lt.1) then icode = 1 return endif powi = one/ipow atumin2 = atumin**ipow atumax2 = atumax**ipow datu2 = (atumax2-atumin2) / (ntab2-1) datui2 = one/datu2 do itab2=1,ntab2 arg2 = atumin2 + datu2*(itab2-1) if (arg2.lt.zero) then icode = 2 return endif if (ipow.eq.2) then* most cases arg = sqrt(arg2) else arg = arg2**powi endif xxx = (arg - atumin)*datui + one mmm = xxx if (mmm.lt.1) mmm = 1 if (mmm.gt.ntab-1) mmm = ntab - 1 ddd = xxx - mmm value = tu(mmm+1)*ddd + tu(mmm)*(one-ddd) if (oner) then if (arg.eq.zero) then* just a protection. this value is supposed to be* very unlikely to be used. tu2(itab2) = zero else tu2(itab2) = - value/arg endif else tu2(itab2) = value endif enddo icode = 0 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -