fortran库参考

合集下载

fortran指令大全

fortran指令大全

附录C SCILAB 部分函数指令表(c)LIAMA. All rights reserved.(注解:本指令表只收集了部分常用指令, 有关全部指令请参照文档文件)+ 加- 减* 矩阵乘数组乘*.1. 通用指令^ 矩阵乘方数组乘方^.\ 反斜杠或左除help 在线帮助/ 斜杠或右除apropos 文档中关键词搜寻或.\ 数组除/.ans 缺省变量名以及最新表达式的运算结果== 等号~= 不等号clear 从内存中清除变量和函数< 小于exit 关闭SCILAB> 大于quit 退出SCILAB<= 小于或等于save 把内存变量存入磁盘>= 大于或等于exec 运行脚本文件&,and 逻辑与mode 文件运行中的显示格式|,or 逻辑或getversion 显示SCILAB 版本~,not 逻辑非ieee 浮点运算溢出显示模式选择: 冒号who 列出工作内存中的变量名( ) 园括号edit 文件编辑器[ ] 方括号type 变量类型{ } 花括号what 列出SCILAB 基本命令小数点.format 设置数据输出格式, 逗号chdir 改变当前工作目录; 分号getenv 给出环境值// 注释号mkdir 创建目录= 赋值符号pwd 显示当前工作目录' 引号evstr 执行表达式' 复数转置号转置号'.ans 最新表达式的运算结果2.运算符和特殊算符%eps 浮点误差容限, =2-52≈2.22×10-16%i 虚数单位= √(-1)%inf 正无穷大%pi 圆周率,π=3.1415926535897....3. 编程语言结构abort 中止计算或循环break 终止最内循环case 同select 一起使用continue 将控制转交给外层的for或while循环else 同if一起使用elseif 同if一起使用end 结束for,while,if 语句for 按规定次数重复执行语句if 条件执行语句otherwise 可同switch 一起使用pause 暂停模式return 返回select 多个条件分支then 同if一起使用while 不确定次数重复执行语句eval 特定值计算feval 函数特定值计算或多变量计算function 函数文件头global 定义全局变量isglobal 检测变量是否为全局变量error 显示错误信息lasterror 显示最近的错误信息sprintf 按格式把数字转换为串warning 显示警告信息4.基本数学函数acos 反余弦acosh 反双曲余弦acot 反余切acoth 反双曲余切acsc 反余割acsch 反双曲余割asin 反正弦asinh 反双曲正弦atan 反正切atanh 反双曲正切cos 余弦cosh 双曲余弦cotg 余切coth 双曲余切sin 正弦sinh 双曲正弦tan 正切tanh 双曲正切exp 指数log 自然对数log10 常用对数log2 以2为底的对数sqrt 平方根abs 绝对值conj 复数共轭imag 复数虚部real 复数实部ceil 向上(正无穷大方向)取整fix 向零方向取整floor 向下(负无穷大方向)取整round 四舍五入取整sign 符号函数gsort 降次排序erf 误差函数erfc 补误差函数gamma gamma 函数interp 插值函数interpln 线性插值函数intsplin 样条插值函数smooth 样条平滑函数spline 样条函数quarewave 方波函数sign 符号函数double 将整数转换为双精度浮点数5.基本矩阵函数和操作eye 单位阵zeros 全零矩阵ones 全1 矩阵rand 均匀分布随机阵genmarkov 生成随机Markov 矩阵linspace 线性等分向量logspace 对数等分向量logm 矩阵对数运算cumprod 矩阵元素累计乘cumsum 矩阵元素累计和toeplitz Toeplitz 矩阵disp 显示矩阵和文字内容length 确定向量的长度size 确定矩阵的维数diag 创建对角阵或抽取对角向量find 找出非零元素1的下标matrix 矩阵变维rot90 矩阵逆时针旋转90度sub2ind 据全下标换算出单下标tril 抽取下三角阵triu 抽取上三角阵conj 共轭矩阵companion 伴随矩阵det 行列式的值norm 矩阵或向量范数nnz 矩阵中非零元素个数null 清空向量或矩阵中的某个元素orth 正交基rank 矩阵秩trace 矩阵迹cond 矩阵条件数rcond 逆矩阵条件数inv 矩阵的逆lu LU分解或高斯消元法pinv 伪逆qr QR分解givens Givens 变换linsolve 求解线性方程lyap Lyapunov 方程hess Hessenberg 矩阵poly 特征多项式schur Schur 分解expm 矩阵指数expm1 矩阵指数的Pade逼近expm2 用泰勒级数求矩阵指数expm3 通过特征值和特征向量求矩阵指数funm 计算一般矩阵函数logm 矩阵对数sqrtm 矩阵平方根6. 特性值与奇异值spec 矩阵特征值gspec 矩阵束特征值bdiag 块矩阵, 广义特征向量eigenmarkov 正则化Markov 特征向量pbig 特征空间投影svd 奇异值分解sva 奇异值分解近似7. 矩阵元素运算cumprod 元素累计积cumsum 元素累计和hist 统计频数直方图max 最大值mean 平均值median 中值min 最小值prod 元素积sort 由大到小排序std 标准差sum 元素和trapz 梯形数值积分corr 求相关系数或方差8. 稀疏矩阵运算sparse 稀疏矩阵(只存储非零元素)adj2sp 邻接矩阵转换为稀疏矩阵full 稀疏矩阵转换为全矩阵mtlb_sparse 将SCILAB 稀疏矩阵转换为MA TLAB稀疏矩阵格式sp2adj 稀疏矩阵转换为邻接矩阵speye 稀疏矩阵方式单位阵sprand 稀疏矩阵方式随机矩阵spzeros 稀疏矩阵方式全零阵lufact 稀疏矩阵LU分解lusolve 稀疏矩阵方程求解spchol 稀疏矩阵Cholesky分解9. 输入输出函数diary 生成屏幕文本记录disp 变量显示file 文件管理input 用户键盘输入load 读已存的变量mclose 关闭文件mget 读二进制文件mgetl 按行读ASCII码文件mgetstr 读字符串中单个字mopen 打开文件mput 写二进制文件mfscanf 读ASCII 码文件print 将变量记录为文件read 读矩阵变量save 存变量为二进制文件strartup 启动文件write 按格式存文件xgetfile 对话方式获取文件路径x_dialog 建立Xwindow参数输入对话框Tk_Getvar 得到Tk文件变量Tk_EvalFile 执行Tk 文件10. 函数与函数库操作deff 在线定义函数edit 函数编辑器function 打开函数定义functions SCILAB 函数或对象genlib 在给定目录下建立所有文件的函数库get_function_path 读函数库的文件存储目录路径getd 读函数库中的全部文件getf 在文件中定义一个函数lib 函数库定义macro SCILAB函数或对象macrovar 输入变量个数newfun 输出变量个数11. 字符串操作code2str 将SCILAB数码转换为字符串convstr 字母大小转换emptystr 清空字符串grep 搜寻相同字符串part 字符提取str2code 将字符串转换为SCILAB数码string 字符串转换strings SCILAB 对象, 字符串strcat 连接字符strindex 字符串的字符位置搜寻strsubst 字符串中的字符替换12. 日期与时间date 日期getdate 读日期与时间timer CPU时间计时13. 二维图形函数plot2d 直角坐标下线性刻度曲线champ 2 维向量场champ1 由颜色箭头表示的2维向量场contour2d 等高线图errbar 曲线上增加误差范围框线条grayplot 应用颜色表示的表面xgrid 画坐标网格线histplot 统计频数直方图Matplot 散点图阵列14. 三维图形函数plot3d 三维表面plot3d1 用颜色或灰度表示的三维表面param3d 三维中单曲线param3d1 三维中多曲线contour 三维表面上的等高线图hist3d 三维表示的统计频数直方图geom3d 三维向二维上的投影15. 线条类图形xpoly 单线条或单多边形xpolys 多线条或多各多边形xrpoly 正多边形xsegs 非连接线段xfpoly 单个多边形内填充xfpolys 多个多边形内填充xrect 矩形xfrect 单个矩形内填充xrects 多个矩形内填充xarc 单个弧线段或弧园xarcs 多个弧线段或弧园xfarc 单个弧线段或弧园填充xfarcs 多个弧线段或弧园填充xarrows 多箭头16. 图形注释, 变换xstring 图形中字符xstringb 框内字符xtitle 图形标题xaxis 轴名标注plotframe 图形加框并画坐标网格线isoview 等尺寸比例显示(原图形窗口不改变)square 等尺寸比例显示(原图形窗口改变)xsetech 设置小窗口xchange 转换实数为图形象素坐标值subplot 设置多个子窗口17. 图形颜色及图形文字colormap 应用颜色图getcolor 交互式选择颜色图addcolor 增加新色于颜色图graycolormap 线性灰度图hotcolormap 热色(红到黄色)颜色图xset 图形显示方式设定xget 读当前图形显示方式设定getsymbol 交互式选择符号和尺寸18. 图形文件及图形文字xsave 将图形存储为文件xload 从磁盘中读出图形文件xbasimp 将图形按PS文件打印或存储为文件xs2fig 将图形生成Xfig 格式文件xbasc 取消图形窗及其相关内容xclear 清空图形窗driver 选择图形驱动器xinit 图形驱动器初始化xend 关闭图形xbasr 图形刷新replot 更改显示范围后的图形刷新xdel 关闭图形xname 改变当前图形窗名称19. 控制分析用图形bode 伯德图坐标gainplot 幅值图坐标(伯德图中的幅值图) nyquist 奈奎斯特图m_circle M-圆图chart 尼库拉斯图black Black-图evans 根轨迹图sgrid s 平面图plzr 零-极点图zgrid z 平面图20. 图形应用中的其它指令graphics 图形库指令表xclick 等待鼠标在图形上的点击输入locate 由鼠标点击读入图形中的多点位置坐标xgetmouse 由鼠标点击读入图形中的当前点位置坐标21. 系统与控制abcd 状态空间矩阵cont_mat 可控矩阵csim 线性系统时域响应dsimul 状态空间的离散时域响应feedback 反馈操作符flts 时域响应(离散、采样系统〕frep2tf 基于传递函数的频域响应freq 频域响应g_margin 幅值裕量imrep2ss 基于状态空间的脉冲响应lin 线性化操作lqe Kalman 滤波器lqg LQG补偿器lqr LQ补偿器ltitr 基于状态空间的离散时域响应obscont 基于观测器的控制器observer 观测器obsv_mat 观测矩阵p_margin 相位裕量phasemag 相位与幅值计算ppol 极点配置repfreq 频域响应ricc Riccati 方程rtitr 基于传递函数的离散时域响应sm2ss 系统矩阵到状态空间变换ss2ss 反馈连接的状态空间到状态空间变换ss2tf 状态空间到传递函数变换stabil 稳定性计算tf2ss 传递函数到状态空间变换time_id SISO系统最小方差辨识22. 鲁棒控制augment 被控对象增广操作bstap Hankel 矩阵近似ccontrg H∞控制器dhnorm 离散H∞范数h2norm H2 范数h_cl 闭环矩阵h_inf H∞控制器h_norm H∞范数hankelsv Hankel 矩阵奇异值leqr H∞控制器的LQ增益linf 无穷范数riccati Riccati 矩阵sensi 敏感函数23. 动态系统arma ARMA模型arma2p 基于AR模型中获得多项式矩阵armac ARMAX 辨识arsimul ARMAX系统仿真noisegen 噪声信号发生器odedi 常微分方程仿真检测prbs_a 伪随机二进制序列发生器reglin 线性拟合24. 系统与控制实例artest Arnold 动态系统bifish 鱼群人口发展的离散时域模型boucle 具有观测器的动态系统相位图chaintest 生物链模型gpech 渔业模型fusee 登陆火箭问题lotest Lorennz 吸引子mine 采矿问题obscontl可控可观系统portr3d 三维相位图portrait 二维相位图recur 双线性回归方程systems 动态系统tangent 动态系统的线性化tadinit 动态系统的交互初始化25. 非线性工具(优化与仿真〕bvode 边界值问题的常微分方程dasrt 隐式微分方程过零解dassl 代数微分方程datafit 基于测量数据的参数辨识derivative 导数计算fsolve 非线性函数过零解impl 线性微分方程int2d 二维定积分int3d 三维定积分intg 不定积分leastsq 非线性最小二乘法linpro 线性规划lmisolver 线性不等矩阵ode 常微分方程ode_discrete 离散常微分方程ode_root 常微分方程根解odedc 连续/离散常微分方程optim 非线性优化quapro 线性二次型规划semidef 半正定规划26. 多项式计算coeff 多项式系数coffg 多项式矩阵逆degree 多项式阶数denom 分母项derivat 有理矩阵求导determ 矩阵行列式值factors 因式分解hermit Hermit 型horner 多项式计算invr 有理矩阵逆lcm 最小公倍数ldiv 多项式矩阵长除numer 分子项pdiv 多项式矩阵除pol2des 多项式矩阵到表达式变换pol2str 多项式到字符串变换polfact 最小因式residu 余量roots 多项式根simp 多项式化简systmat 系统矩阵27. 信号处理%asn 椭圆积分%k Jacobi完全椭圆积分%sn Jacobi 椭圆函数analpf 模拟量低通滤波器buttmag Butterworth 滤波器响应cepstrum 倒谱计算cheb1mag Chebyshev 一型响应cheb2mag Chebyshev 二型响应chepol Chebyshev 多项式convol 卷积corr 相关, 协方差cspect 谱估计(应用相关法)dft 离散富立叶变换fft 快速富立叶变换filter 滤波器建模fsfirlin FIR滤波器设计hank 协方差矩阵到Hankel矩阵变换hilb Hilbert 变换iir IIR数字滤波器intdec 信号采样率更改kalm Kalman 滤波器更新mese 最大熵谱估计mfft 多维快速富立叶变换mrfit 频率响应拟合phc Markov 过程srkf Kalman 滤波器平方根sskf 稳态Kalman 滤波器system 观测更新wfir 线性相位FIR滤波器weiener Weiener(维纳)滤波器window 对称窗函数yulewalk 最小二乘滤波器zpbutt Buthererworth 模拟滤波器zpch1 Chebyshev 模拟滤波器28. 音频信号analyze 音频信号频域图auread 读*.au 音频文件auwrite 写*.au 音频文件lin2mu 将线性信号转换为µ率码信号loadwave 取*.wav 音频文件mapsound 音频信号图示mu2lin 将µ率码信号转换为线性信号playsnd 音频信号播放savewave 存*.wav 音频文件wavread 读*.wav 音频文件wavwrite 写*.wav 音频文件29. 语言与数据转换工具ascii 字符串的ASCII码excel2sci 读ASCII 格式的Excel 文件fun2string 将SCILAB 函数生成ASCII 码mfile2sci 将MA TLAB 的M 格式文件转换为SCI格式文件mtlb_load 取MA TLAB第4版本文件中变量matlb_save 按MA TLAB 第 4 版本文件格式存变量pol2tex 将多项式转换为TeX格式sci2for 将SCILAB 函数转换为FORTRAN格式文件texprint 按TeX 格式输出SCILAB 对象translatepaths 将子目录下的所有MA TLAB 文件转换为SCI文件格式一个公式写成Fortran语言代码program baiduinteger::I,J,Nreal*8::Cr,Treal*8,dimension(:),allocatable ::P,XN=3!变量X的个数Cr=5.0d0!常量Cr,自己设定T=4.0d0!常量T,自己设定allocate(P(N),X(N))! =======读入变量X的值do I=1,Nwrite(*,*)"请输入第",I," 个变量的值:"read(*,*)X(I)enddo! =======读入变量X的值do I=1,NP(I)=(-4.2d0/Cr**2*X(I)+2.9/Cr)*Twrite(*,*)“第”,I," 个变量X对应结果:",P(I)enddoend。

Fortran软件安装大全

Fortran软件安装大全

为大家介绍fortran编译软件,和imsl库的使用,有些地址已失效,有些软件在群共享里VS破解用百度的序列号,ivf用crack文件里的许可文件(.lic)。

一.跟上时代的脚步:Visual studio2012+intel visual fortran2013, (兼容win7 64位32 位)目前是最新的组合,配合强大的vs2012编译器,全新的VS界面感触以及操作。

仅这个可以跑在win8系统上。

/d/iMuvAwLMJAC8l1tR9cd二.推荐使用IVF2011+MVS2008(兼容win7 64位32 位)下载方案地址:/p/1536274172mvs2008:/topics/2743184/ivf2011:/topics/2901142/安装看页面评论,IVF版本自带MKL(Intel数学核心库)三.通用版本:MVS2008+ivf11.0.061(兼容win7 64位32 位)mvs2008:/topics/2743184/ivf11.0.061 :/topics/2746349/安装看页面评论,IVF版本自带MKL(Intel数学核心库)四.IMSL6.0下载地址:/post-310268.html(下载32位的IMSL库)安装方法:/s/blog_6c7caddf0100n8up.html(仔细认真看)安装参考:/html/kaifa/281/2011/09/024*********.htm这个imsl6.0只支持第三个fortran版本组合。

五.大名鼎鼎的CVF了,自带IMSL库,在群共享里,跑在xp上,win7可能不兼容。

六.免费软件ftn95编译器,fortran95的格式,语法严格,结构精简。

Xp以及win7 32位,也在群共享此文由计算数学_小傲同学总结,欢迎转载。

Fortran基本介绍

Fortran基本介绍

基于Fortran的AspenPlus单元过程用户模型的开发基础知识Aspen Plus是一种通用的化工过程模拟、优化和设计软件,但它提供的通用过程单元模型并不能满足用户的所有需求,如反应器,并不能把所有的反应及反应本质模拟出来。

但是Aspen Plus提供了用户扩展接口,用户可以根据自己的需要将自定义的过程单元模型添加到该软件中并使用。

Aspen Plus提供了基于Fortran用户模型的开发方式,即可以编写Fortran用户子程序,编译后产生一个动态连接库,从而实现用户模型和Aspen Plus的结合。

用户模型是一黑箱模型,内部程序可是根据需要自己定义,输入物流可以在Stream中先定义,将流股信息(如温度、压力、组成及流量等)按照Aspen Plus的内部规定传递到模型中,参与模型的内部计算;然后将模型计算的结果通过输出物流信息传递出来,用户可以根据自己的需要来定义,但必须要遵守Aspen Plus的内部规定。

由于外部Fortran子程序不能被解释,需要一个Fortran编译器。

不同版本的Aspen Plus软件需要不同版本的Fortran编译器,如Aspen Plus 11.1只需要Visual Fortran 6.0版本即可;Aspen Plus 2006就需要Intel Fortran 9.0版本,且必须在Microsoft Visual 环境下,在Aspen Plus Simulation Engine上编译,编译成功后生成用户模型的目标模块文件(*.obj)或共享库(*.dll)。

产生的目标模块文件(*.obj)若能正常链接和求解,运行Aspen Plus的电脑上必须安装Intel Fortran Compiler和Microsoft Visual Studio .NET 2003(或2000)这类的大程序,这样就占据了大量的电脑空间。

当产生共享库(*.dll)后,和Aspen Plus文件放在一个文件夹,并在装载和求解用户模型的DLOPT文件中指定路经,就可以直接运行内嵌用户模型的Aspen Plus文件了。

FORTRAN简明教程

FORTRAN简明教程

FORTRAN简明教程
一、FORTRAN简介
FORTRAN,指程序设计语言,由IBM在1956年发明,主要用于科学计算、数值运算等。

它将汇编语言中的功能集成在一个简单的命令语句中,
减少了汇编语言的繁琐的编译过程。

它也是目前世界上最古老的计算机程
序设计语言。

FORTRAN由“Formula Translating System”派生而来,主要用于工
程和科学计算,非常适用于此领域的算法及数学公式的应用。

基于这种语言,开发者可以轻松描述数字问题,并同时检测、审核、维护和优化此代码。

二、FORTRAN的优缺点
1、优点
a.FORTRAN是一种很容易上手的程序设计语言,它的语言规范很容易
理解,而且简单易用。

b.FORTRAN支持大量数值操作,所以它在计算机科学和工程领域有广
泛的应用。

c.FORTRAN程序非常高效,它的优化程序可以提高程序运行效率,而
且运算速度很快。

d.FORTRAN支持很多的数据类型,这样可以更有效地操作和管理数据。

2、缺点
a.FORTRAN不支持图形用户界面(GUI),这样用户需要熟悉命令行,才能完成程序的编写。

Fortran标准函数库

Fortran标准函数库

附录 FORTRAN 90标准函数符号约定:●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。

●s:P表示s类型为P类型(任意kind值)。

s:P(k)表示s类型为P类型(kind 值=k)。

●[…]表示可选参数。

●*表示常用函数。

表1 数值和类型转换函数函数名 说明ABS(x)* 求x的绝对值∣x∣。

x:I、R, 结果类型同x; x:C, 结果:RAIMAG(x) 求x的实部。

x:C, 结果:RAINT(x[,kind])* 对x取整,并转换为实数(kind)。

x:R, kind:I, 结果:R(kind)AMAX0(x1,x2,x3,…)* 求x1,x2,x3,…中最大值。

x I:I, 结果:RAMIN0(x1,x2,x3,…)* 求x1,x2,x3,…中最小值。

x I:I, 结果:RANINT(x[,kind])* 对x四舍五入取整,并转换为实数(kind)。

x:R, kind:I, 结果:R(kind) CEILING(x)* 求大于等于x的最小整数。

x:R, 结果:ICMPLX(x[,y][,kind])) 将参数转换为x、(x,0.0)或(x,y)。

x:I、R、C, y:I、R,kind:I, 结果:C(kind) CONJG(x) 求x的共轭复数。

x:C, 结果:CDBLE(x)* 将x转换为双精度实数。

x:I、R、C, 结果:R(8)DCMPLX(x[,y]) 将参数转换为x、(x,0.0)或(x,y)。

x:I、R、C, y:I、R, 结果:C(8) DFLOAT(x) 将x转换为双精度实数。

x:I, 结果:R(8)DIM(x,y)* 求x-y和0中最大值, 即MAX(x-y,0)。

x:I、R, y的类型同x,结果类型同x DPROD(x,y) 求x和y的乘积,并转换为双精度实数。

x:R, y:R, 结果:R(8)FLOAT(x)* 将x转换为单精度实数。

FORTRAN编程中PGPLOT绘图库的制作与调用

FORTRAN编程中PGPLOT绘图库的制作与调用

FORTRAN编程中PGPLOT绘图库的制作与调用文档编写:马利华PGPLOT是一个不依赖于任何装置的数据绘图程序库。

程序库由加州理工学院的Tim Pearson从1983开始编写,大多以FORTRAN程序写成。

它被设计成模组化的应用程序接口,可以输出到数种绘图装置上。

因为该程序库具备低阶(字、点、线、面)和高阶的绘图功能,被广泛应用于学术和科学社群。

PGPLOT可以被第三方重新散布和修改,但只能以编译过的二进制档案形式。

无论原始的或修改过的源代码都不能被重新散布。

最近的版本是5.2.2,于2001年二月发布。

PGPLOT提供了C和Fortran 77的接口,也有许多由用户提供的其他编程语言接口,例如:C++、perl、python、ruby、tcl/tk...等。

PGPLOT可以做许多种不依赖于任何装置的输出,包含数种图档格式、图形显示终端、PostScript装置,及X Window。

也可以用图形游标来帮助输入数据。

它可以在许多种操作系统上运作,包含大多的Unix-like系统、Mac OS,及Microsoft Windows。

因为此程序发行较早,相对于较新的套件,如PLplot,PGPLOT有许多的限制。

特别是PGPLOT只支援8位元的彩图,而不是完整的RGB色彩;而且也没有简单的方法来直接绘图到程式内存中。

目前该程序库的应用范围仍然很广。

参照程序包说明:aaaread.me文件给出的Windows95/98/NT下库文件制作过程,以下给出在Windows 7下,PGPLOT.lib静态库文件的制作过程。

编译环境:Windows 7(sp1)64位操作系统,采用Intel Visual Fortran编译器,运行在Miscrosoft Visual Studio(Ultimate 2013 Version 12.0.21005.1 REL)IDE环境,Fortran版本为Intel(R) Visual Fortran Package ID: w_fcompxe_2013_sp1.1.139。

自己整理的Fortran可视化库函数

自己整理的Fortran可视化库函数

wc
子函数
SETTEXTPOSITIO N
row,colu mn,t
子程序
row
integer(2)
column integer(2)
CHARACTER (80)
title
integer(2 )
bitsperpixel
integer(2 )
mode
CHARACTER (32)
extendfontname
)
GETCHARQQ
子函数
character *(1)
捕获键盘事件,返 回值为单个字符, 代表当前键盘按键
PASSDIRKEYSQQ logical 子函数
准确监测这些特殊
按键,参数为真
时,CHARQQ 函数会
自动监测特殊按
logical(4 )
键; 当函数参数为 假时, GETCHARQQ 函数不能
子函数
menuID
itemID
MODIFYMENUFLAG SQQ
menuID,i temID,fl ag
menuID
itemID
flag
MODIFYMENUROUTIN EQQ
menuID,ite mID,routin e
menuID
itemID
routine
MODIFYMENUSTRING menuID,ite
integer() 将RGB 分量值
integer(4 )
刷屏
integer(4 用指定的颜色清除
)
屏幕
integer(4 用指定的颜色清除
)
当前视口
integer(4 )
用指定色清除当前 用SETTEXTWINDOW指 定的文本窗口

第二章Fortran语言基础

第二章Fortran语言基础

《气象程序设计及绘图》课题组
南京信息工程大学
Nanjing University of Information Science & Technology
3.逻辑型常量
逻辑常量仅有两个,.TRUE. 和.FALSE. 注意: 对于逻辑值 .TRUE.,在其存储单元字节内每 位为“1”,可视为整数值-1,对于逻辑值.FALSE., 在其存储单元字节内每位为“0”,可视为整数值0, 它们均能参与整数运算。
《气象程序设计及绘图》课题组
南京信息工程大学
Nanjing University of Information Science & Technology
(1)语句关键字
如语句“IF (A<B> THEN”中的“IF”和“THEN” 是语句保留字。 类 似 的 保 留 字 有 : PROGRAM 、 INTEGER 、 REAL、READ、PRINT、WRITE、DO、END、 SUBROUTINE、FUNCTION等。 (详见P445)
2.3 常量
在程序运行过程中,其值不能被改变的量称为常量, 它在程序中直接生成并直接用于计算和处理。 整型常量、实型常量、复型常量、 字符型常量、 逻辑型常量
《气象程序设计及绘图》课题组
南京信息工程大学
Nanjing University of Information Science & Technology
指针类型
不同类型数据有不同 的特性,其处理的方 式有所不同,取值范 围也不一样,在处理 数据前,必须说明数 据的特性。
公用区类型
《气象程序设计及绘图》课题组
南京信息工程大学
Nanjing University of Information Science & Technology

Fortran90-数据类型

Fortran90-数据类型

双(单)引号不属于字符串
2024/10/23
FORTRAN90
21
2.当字符中出现单(双)引号时,有两种表 示方法。
1)当字符为"时,用´将字符串括起; 当字符为´时,用"将字符串括起。
2)将单(双)引号重复一次。
例: fh"dl ´fh"dl´ "fh""dl"
I’m a teacher "I´m a teacher" ´I´´m a teacher´
2024/10/23
FORTRAN90
7
2024/10/23
FORTRAN90
8
5.4 复型数据
一、复型常量的形式:
(实型数1,实型数2)
低 级
表示:实型数1+实型数2*I
向 高

复型数据的类别类型


1.默认复型:当省略类别类型参数时, 的
则称此复型数据为默认复型。
原 则
2.实部及虚部类型不同时,复型数据的
FORTRAN90
33
比较字符串大小
• ‘that’ ‘this’ • ‘FORTRAN’ ‘FORTRAN90’ • ‘FORTRAN’ ‘FORTRAN ’ • ‘FORTRAN 90’ ‘FORTRAN90’ • ‘FORTRAN90’ ‘fortran90’
先化为双精度型, 化为双精度型,
再赋值
赋值
直接赋值
将实部扩展为 双精度型,赋

复型
化为实型,加虚 部0,变成复型,
再赋值
舍去多余有效数字,
实部赋值,虚部 化为实型,再赋值,
赋0
虚部赋0

fortran库参考

fortran库参考

fortran库参考第3 章FORTRAN 77 和VMS 内函数本章列出了FORTRAN 77 f95 接受的一系列内函数,旨在帮助将传统的FORTRAN 77 程序迁移至Fortran 95。

在f95 中,本章列出的所有FORTRAN 77 和VMS 函数以及前一章列出的所有Fortran 95 函数都识别为内函数。

为了帮助从传统的FORTRAN 77 程序迁移至f95,使用-f77=intrinsics 进行编译会让编译器只将FORTRAN 77 和VMS 函数识别为内函数,但Fortran 95 函数不会识别为内函数。

属于Sun 扩展的ANSI FORTRAN 77 标准的内函数标有¤ 符号。

使用非标准内函数和库函数的程序可能无法移植到其他平台。

内函数在接受多种数据类型的参数时,有通用名称和专用名称。

通常,通用名称返回与参数具有相同数据类型的值。

但也有一些例外,如类型转换函数(表3–2)和查询函数(表3–7)。

这些函数也可以通过函数的某个专用名称进行调用,以便处理专用参数数据类型。

对于处理多个数据项的函数(例如sign(a1,a2)),所有数据参数的类型必须相同。

下表按以下几方面列出FORTRAN 77 内函数:内函数-描述函数的作用定义-数学定义参数数量-函数接受的参数的数量通用名称-函数的通用名称专用名称-函数的专用名称参数类型-与每个专用名称关联的数据类型函数类型-针对专用参数数据类型返回的数据类型注–编译器选项-xtypemap 会更改变量的缺省大小,并且对内在引用产生影响。

请参见3.4 备注以及《Fortran 用户指南》中有关缺省大小和对齐方式的介绍。

3.1 算术和数学函数本节详细介绍算术函数、类型转换函数、三角函数以及其他函数。

“a”代表函数的单个参数,“a1”和“a2”代表两个参数函数的第一个参数和第二个参数,“ar”和“ai”代表函数的复数参数的实部和虚部。

3.1.1 算术函数3.1.2 类型转换函数表3–2 Fortran 77 类型转换函数在ASCII 平台上(包括Sun 系统):ACHAR 是CHAR 的非标准同义词IACHAR 是ICHAR 的非标准同义词在非ASCII 平台上,ACHAR 和IACHAR 专门用于提供一种直接处理ASCII 的方法。

Fortran编程必备参考

Fortran编程必备参考

/share/detail/24946126Just as in Basic we use TAB and PRINT USING commands to more precisely control program output, in Fortran we can usewrite commands with format statements. While these can get complicated, the most commonly used options are pretty easy to use. A typical write statement iswrite (*,20) x, y, z .The "*" in the parentheses instructs Fortran to write to the screen, while "20" refers to the label ofthe format statement for thiswrite command. The x, y, and z are the variables to be printed.A format statement for this write command might be20 format (3f10.4) .Inside the parentheses, the "3" indicates that 3 entities will be printed, the "f" denotes that these willbe floating point real numbers (not exponential notation), the "10" stipulates that 10 places will be used for printing (counting the sign, decimal point, and the digits), and ".4" mandates 4 digits after the decimal point. Some printouts formatted this way are12345.6789 , -1234.5678 , 10002.3400 .The letter "f" in this context is a format code letter; here are some of the more commonly used format code letters, with their implications:f real number, floating point formate single precision real number, exponential notationd double precision real number, exponential notationi integera text string (character)x space/vertical space (line feed)t tab indicatorStrings (in quotes) may be placed in format statements, separated by commas. Here are examples of write statements with corresponding format statements; at the right of each is a description of the corresponding output:write (*,10) n, x, y10 format (i4,4x,f10.4,2x,f10.4)integer n printed using 4 places, then 4 spaces, then real numbers x and y printed with 2 spaces between, each using 10 places and 4 decimal placeswrite (*,20) area20 format ("The area is ",f8.5)string in quotes is printed, then the real number area is printed, using 8 places with 5 decimal placeswrite (*,30) "The area is ", area30 format (a,f8.5)same output as immediately abovewrite (*,40) x, y, z 40 format (3d20.14)3 double precision numbers x, y, z printed, each reserving 20 spaces, with 14 decimal placeswrite (*,50) student, score 50 format (a20,4x,i3)student, a text string up to 20 characters, is printed, then 4 spaces, then score, an integer using a maximum of 3 placeswrite (*,60) r, A60 format (t10,f4.2,/,t10,f6.2)tabs to column 10, prints real number r, goes to next line, tabs to column 10, prints real number AYou can use loops with format statements to print arrays; here are examples:do i = 1, 10 write (*,70) a(i) end do an array a of real numbers, indexed from 1 to 10, is printed; each entry occupies 5 places with70 format (f5.2) 2 decimal places, and is printedon a separate linewrite (*,80) (a(i), i = 1, 10)80 format (f5.2)same output as immediately abovewrite (*,90) (a(i), i = 1, 10) 90 format (10f5.2)same output as above, except that all entries are printed on the same linedo i = 1, 5write (*,7) (m(i,j), j = 1, 6) 7 format (6i3)end do prints a 5 x 6 two-dimensional array m of integers, with each integer entry m(i,j) occupying 3 places. Each row of the matrix appears on its own line.Following are examples of stored values, formatting specifications for printing the values, and resulting output. (The "^" symbol indicates a blank).Stored Value Format Specifier Output1.234567f8.2^^^^1.230.00001f5.30.000-12345i5*****-12345i6-1234512345i6^123450.00001234e10.3^0.123E-040.0001234e12.4^^0.1234E-031234567.89e9.2^0.12E+07aloha a8^^^aloha1.23456789123D0d17.10^0.1234567891E+01 Fortran format格式说明2. 字符返回。

第五讲Fortran中的数据6(4 2)资料

第五讲Fortran中的数据6(4 2)资料

§2
一、字符型数据
(1)字符型常量
非数值型数据
Fortran的非数值型数据类型主要是字符型和逻辑型2种。
1、又叫字符串常量,是用单引或双引号括起来的、计算机 系统允许使用的任何字符串,比如 : “zhang” 、 ´ZHang´ 、 “北京”、´How□are□you’、’a+b´等。注意: ※字母区分大小写; ※空格是一个字符; ※用于括字符串的双(单)引号不是字符。
类别参数 1 2 4
2018/10/26
字节数 1 2 4
取值范围 -128~127 -32,768~32,767 -2,147,483,648~2,147,483,647
3
注:FORTRAN也可以使用二进制(binary)、八进制(octal)和 十六进制(hex)整型常量,但它只能用于DATA语句中。而且: 1、二进制常量的形式是以字母B开头,后跟用一对单引或双引 号括起来的数字串,例如,B‘10101101’、B“1011101等。 2 、八进制常量的形式是以字母 O 开头,后跟用一对撇号或双 引号括起来的数字串,例如,O‘453’、O“376”等。 3 、十六进制常量的形式是以字母 Z 开头,后跟用一对撇号或 双引号括起来的数字串,例如,Z'FFA9'、 Z"9B45" 。
②用字符变量作虚参时:在子程序中,用字符型变量作虚参 时可不指明其具体长度,即用 * 定义长度。这时它可以与任 意长度的字符型实参相结合,便于提高子程序的通用性。 2、子字符串: 指字符变量的一部分,记为:字符变量(m :n )表示字符变 量中从第m个字符到第n个字符的部分,比如: com(3:7)—— 字符变量com中从第3个字符到第7个字符的子字符串。 注意:

Fortran函数大全(1)

Fortran函数大全(1)

Fortran函数大全(1)Fortran库参考SunStudio11SunMicrosystems,文件号码819-4757-102005年11月, 修订版A请将有关本文档的意见和建议提交至:/hwdocs/feedback版权所有#169;2005SunMicrosystems,Inc.,4150NetworkCircle,SantaCla ra,California95054,U.S.A.保留所有权利.美国政府权利-商业用途. 政府用户应遵循SunMicrosystems,Inc.的标准许可协议, 以及FAR (FederalAcquisitionRegulations, 即“联邦政府采购法规”)的适合条款及其补充条款. 必须依据许可证条款使用. 本发行版可能包含由第三方开辟的内容.本产品的某些部份可能是从BerkeleyBSD系统衍生出来的, 并获得了加利福尼亚大学的许可. UNIX是X/OpenCompany,Ltd.在美国和其他国家/地区独家许可的注册商标.Sun、SunMicrosystems、Sun徽标、Java和JavaHelp是SunMicrosystems,Inc.在美国和其他国家/地区的商标或者注册商标. 所有的SPARC商标的使用均已获得许可, 它们是SPARCInternational,Inc.在美国和其他国家/地区的商标或者注册商标. 标有SPARC商标的产品均基于由SunMicrosystems,Inc.开辟的体系结构.本服务手册所介绍的产品以及所包含的信息受美国出口控制法制约, 并应遵守其他国家/地区的进出口法律. 严禁将本产品直接或者间接地用于核设施、导弹、生化武器或者海上核设施, 也不能直接或者间接地出口给核设施、导弹、生化武器或者海上核设施的最终用户. 严禁出口或者转口到美国禁运的国家/地区以及美国禁止出口清单中所包含的实体, 包括但不限于被禁止的个人以及特殊指定的国家/地区的公民. 本文档按“原样”提供, 对于所有明示或者默示的条件、陈述和担保, 包括对适销性、适合性或者非侵权性的默示保证, 均不承担任何责任, 除非此免责声明的适合范围在法律上无效.目录阅读本书之前印刷约定xixiShell提示符支持的平台xiixiiixiii访问SunStudio软件和手册页访问编译器和工具文档访问相关的Solaris文档开辟者资源xviiixixxixxvixviii联系Sun技术支持Sun欢迎您提出意见1. Fortran库例程1.11.21.31–1数据类型注意事项64位环境1–21–1Fortran数学函数1.3.11.3.21.3.3单精度函数1–31–3双精度函数1–6四倍精度函数1–91–111–11iii1.4Fortran库例程参考1.4.1abort:终止和写入核心文件1.4.21.4.31.4.41.4.51.4.61.4.71.4.81.4.91.4.101.4.111.4. 121.4.131.4.141.4.151.4.161.4.171.4.181.4.191.4.201.4.21 1.4.221.4.231.4.241.4.251.4.261.4.271.4.281.4.29access:检查文件权限或者存在性1–11alarm:在指定的时间后调用子例程1–12bit:位函数:and、or、…、bit、setbit、…chdir:更改默认目录chmod:更改文件的模式1–131–161–171–18date:获取以字符串表示的当前日期dtime, etime:经过的执行时间exit:终止进程并设置状态1–201–231–23fdate:以ASCII字符串返回日期和时间flush:刷新逻辑单元的输出1–24fork:创建当前进程的副本1–25fseek,ftell:确定文件的位置以及重新确定文件的位置1–25fseeko64, ftello64:确定大文件的位置以及重新确定大文件的位置1–271–29getarg, iargc:获取命令行参数getc, fgetc:获取下一个字符1–301–32getcwd:获取当前工作目录的路径getenv:获取环境变量的值1–33getfd:获取外部单元编号的文件描述符getfilep:获取外部单元编号的文件指针getlog:获取用户的登录名getpid:获取进程ID1–341–341–361–361–36getuid, getgid:获取进程的用户ID或者组IDhostnm:获取当前主机的名称1–37idate:返回当前日期1–381–38ieee_flags, ieee_handler,sigfpe:IEEE算术index, rindex, lnblnk:子串的索引或者长度. 1–44inmax:返回最大正整数1–45itime:当前时间1–46ivFortran库参考2005年11月1.4.301.4.311.4.321.4.331.4.341.4.35kill:将信号发给进程1–471–47link, symlnk:链接到现有的文件loc:返回对象的地址1–491–491–50long, short:整型对象转换longjmp,isetjmp:返回至isetjmp设置的位置malloc, malloc64, realloc, free:分配/重新分配/释放内存1–521.4.36mvbits:挪移位字段1–561.4.37perror, gerror, ierrno:获取系统错误消息1–571.4.38putc, fputc:将字符写入逻辑单元1–581.4.39qsort, qsort64:对一维数组的元素进行排序1–601.4.40ran:生成一个介于0和1之间的随机数1–621.4.41rand, drand, irand:返回随机值1–631.4.42rename:重命名文件1–641.4.43secnds:获取以秒数表示的系统时间并减去参数1–651.4.44set_io_err_handler, get_io_err_handler:设置并获取I/O错误处理程序1–651.4.45sh:快速执行sh命令1–681.4.46signal:更改信号的操作1–691.4.47sleep:一段时间暂停执行1–701.4.48stat, lstat, fstat:获取文件状态1–701.4.49stat64, lstat64, fstat64:获取文件状态1–731.4.50system:执行系统命令1–731.4.51time, ctime, ltime, gmtime:获取系统时间1–741.4.52ttynam, isatty:获取终端端口的名称1–781.4.53unlink:删除文件1–791.4.54wait:等待进程终止1–802.Fortran95内部函数2–12.1标准Fortran95的通用内部函数2–1v目录2.1.12.1.22.1.32.1.42.1.52.1.62.1.72.1.82.1.92.1.102.1.1 12.1.122.1.132.1.142.1.152.1.162.1.172.1.182.1.192.1.202 .1.212.1.222.1.232.2参数存在查询函数数值函数数学函数字符函数。

自己整理的Fortran可视化库函数

自己整理的Fortran可视化库函数

自己整理的Fortran可视化库函数USE IFQWIN 函数参数类型字节作用SETEXITQQexitmode 子函数integer(4)设置QuickWinApplicat exitmode QWIN$EXITPROMPT integer(4)为程序的默认情况exitmode QWIN$EXITNOPERSIST integer(4)编译运行后窗口出现后马exitmode QWIN$EXITPERSIST integer(4)运行后窗口正常显示,没SETWSIZEQQunit,winfo 子函数integer(4)设置窗口的尺寸和位置unit 0,5,6integer(4)默认子窗口代号,该函数unit QWIN$FRAMEWINDOW integer(4)主窗口号winfo type(qwinfo) type qwinfo结构体integer(2)TYPEwinfo%typeinteger(2)x integer(2)y integer(2)H integer(2)WEND type qwinfoSETBKCOLORRGBcolor 子函数integer(4)更改窗口背景色,该函数并color #FF0000十六进制数每两位分别为蓝绿红color RGBTOINTEGER(0,0,0)子函数0~255,分别为蓝绿红RGBTOINTEGER blue,green,子函数integer(4)将RGB 分量值转换为代表blue,green,0~255integer()将RGB 分量值CLEARSCREENarea 子程序integer(4)刷屏area $GCLEARSCREENinteger(4)用指定的颜色清除屏幕$GVIEWPORT integer(4)用指定的颜色清除当前视$GWINDOWinteger(4)用指定色清除当前用SET SETTEXTCOLORRGB color 子函数integer(4)文本的颜色,该函数只影GETWINDOWCONFIGwc 子函数logical( kin获取子窗口的相关特征wctype (windowconfig)type (windowconfig)结构体,记录窗口特性integer(2)numxpixels integer(2)numypixels integer(2)numtextcols integer(2)numtextrows integer(2)numcolors integer(4)fontsize CHARACTER(80title integer(2)bitsperpixel integer(2)mode CHARACTER(32extendfontnameINTEGER(4) e xtendfontsizeINTEGER(4)extendfontattributesEND TYPE windowconfigSETWINDOWCONFIG wc子函数logical(kind为了灵活使用子窗口,在SETTEXTPOSITION row,column,t子程序指定相对于文本窗口的文本输出位置row integer(2)文本的行定位数column integer(2)列定位数t type(rccoord)保存之前的光标位置type(rccoord)结构体integer(2)rowinteger(2)colEND TYPE rccoord图形窗口模式OUTGTEXT text子程序图形模式窗口中,为充分利用坐标定位带来text character(len=*)t''Arial''h18w10' INITIALIZEFONTS子函数integer(2)初始化操作系统中的字体SETFONT option子函数integer(2)指定字体及其大小option character(len=*)表述字体特征t''Arial''h18w10'MOVETO x,y,t子程序为了确定文本输出位置,需调用子程序 x yt type(rccoord)保存了视口中前一位置的坐标SETGTEXTROTATION degree-tent子程序文本输出需要倾斜角度degree-tenths integer(4)取值为旋转角度乘10 之多子窗口OPEN UNIT,FILE,TITLE,IOFOCUS函数创建子窗口UNIT11,12等等integer(4)子窗口代号FILE character(len=*)USER'时打开的是子窗口TITLE character(le子窗口标题IOFOCUS logical是否有焦点DISPLAYCURSOR a子函数integer(4)子窗口中显示闪烁的光标a$GCURSORON integer(4) ClickMenuQQ a子函数integer(4)用来执行Quickwin预先封a QWIN$TILE integer(4)键盘事件GETCHARQQ子函数character*(1)捕获键盘事件,返回值为PASSDIRKEYSQQ logical子函数logical(4)准确监测这些特殊按键,鼠标事件WaitOnMouseEvent mouseevents子函数integer(4)等待所关心的鼠标事件的mouseevents integer(4)传入值,用户所要监测的鼠MOUSE$LBUTTONDOWN integer(4)按下鼠标左键MOUSE$LBUTTONUP integer(4)释放鼠标左键首先,为监测鼠标事件,应用程序必须包括无限循环 do while(.true.) resul MOUSE$LBUTTONDBLCLK integer(4)双击鼠标左键MOUSE$RBUTTONDOWN integer(4)按下鼠标右键MOUSE$RBUTTONUP integer(4)释放鼠标右键MOUSE$RBUTTONDBLCLK integer(4)双击鼠标右键MOUSE$MOVEinteger(4)移动鼠标keystate integer(4)返回值,鼠标事件发生时其MOUSE$KS_LBUTTON integer(4)事件中按下鼠标左键MOUSE$KS_RBUTTON integer(4)事件中按下鼠标右键MOUSE$KS_SHIFT integer(4)事件中按下SHIFT 键MOUSE$KS_CONTROL integer(4)事件中按下 CTRL 键x integer(4)返回值,鼠标的位置y integer(4)返回值,鼠标的位置REGISTERMOUSEEVENT unit,mousee 子函数integer(4)应用程序中,不同的鼠标unit integer(4)鼠标事件发生的窗口代码mouseevents integer(4)需要注册的鼠标事件callbackrou external :: ShowLocatio 子函数回调子程序,必须声明为external 代号为unit 的窗口中,当鼠标事件mousMouseCallBackRouti unit, mouse 子程序鼠标事件的外部处理回调程序unitinteger(4)事件发生的窗口代号mouseevents integer(4)鼠标事件keystate integer(4)功能键的状态MouseXpos integer(4)鼠标位置坐标MouseYpos integer(4)鼠标位置坐标菜单编程APPENDMENUQQmenuID, fla 子函数logical(4)添加菜单项到某菜单的最menuID integer(4)菜单编号,从左向右数第1flags integer(4)表明菜单的状态,如菜单textcharacter (len=*)routine外调子程序externalINSERTMENUQQmenuID,item 子函数logical(4)将菜单项插入某菜单menuID integer(4)菜单编号,从左向右数itemIDinteger(4)菜单项的插入位置,顺序0integer(4)将插入的菜单项作为第me 其他整数integer(4)将菜单项插入第menuID个flag integer(4)textcharacter (len=*)routine 外调子函数externalDELETEMENUQQmenuID, ite 子函数logical(4)menuID, itemID为回调子程序,必须申明该菜单项是否被选中,同时, Rou WINPRINT 为打印命令子程序, WINSAV系统自动忽略回调子程为菜单项的名称,是 n单项设置快捷键,则需要在对应的字母键“CTRL+R”激活回menuID integer(4)为菜单编号itemID integer(4)为要删除的菜单项的编号MODIFYMENUFLAGSQQmenuID,itemID,flag logical(4)用来修改菜单项的状态menuID integer(4)itemID integer(4)flag integer(4) MODIFYMENUROUTINEQQ menuID,itemID,routine logical(4)用来改变菜单项的回调函menuID integer(4)itemID integer(4)routine external MODIFYMENUSTRINGQQ m enuID,itemID,text logical(4)用来改变菜单项名menuID integer(4)itemID integer(4)text character (len=*)INITIALSETTINGS子函数logical(4)用来设定 Quickwin 工程位置最尾后窗口出现后马上消失示,没有任何提示信息位置口代号,该函数作用窗口QWIN$MIN最小化窗口QWIN$MAX最大化窗口QWIN$RESTOR恢复最小化窗口到之前的大小QWIN$SET根据Winfo 中的其它值设定窗口的位置和大小背景色,该函数并不能自动改变窗口的背景色,只有当调用子程序CLEARSCREEN 或者有文本读写发生时,背景才会改变别为蓝绿红为代表相应颜色的整数屏幕颜色清除当前视口用SETTEXTWINDOW指定的文本窗口数只影响由文本输出函数EXT, WRITE 和 PRINT 产生的输出将结果存入wc录窗口特性X方向像素值Y方向像素值文本行数文本列数颜色索引数Q WIN$EXTENDFONT,此时由extendfontsize 指字体大小,如果指定了扩展字体, fontsize 应该赋值为子窗口标题单个像素的位数控制滚动条的滚动模式字体名称,用来定制扩展字体字体大小,用来定制扩展字体字体属性,如粗体、斜体等,用来定制扩展字体使用子窗口,在文本和图形输出前需要调整窗口的属性值行列窗口中,为充分利用坐标定位带来的方便,文本的输出作系统中的字体笔移至当前位置文本输出位置,需调用子程序 MOVETO 将画需要倾斜角度转角度乘10 之后的数值,水平向右方向为角度0 角度起始方向,逆时针旋转为角度正方向默认0,5,6开的是子窗口可缺省显示闪烁的光标uickwin预先封装的系统菜单只能监测字母和数字按键,对功能键和方向键就无能为力了按键,参数为真时,CHARQQ 函数会自动监测特殊按键;当函数参数为假时, GETCHARQQ 函数不能results = WaitOnMouseEvent( MOUSE$MOVE, state, x, y) end do事件的发生户所要监测的鼠标事件,如果需要检测多个鼠标事件,用函数IOR 加以组合生时其他功能键(如Shift)的状态, 是鼠标事件中其他功能键的状态。

Fortran重点

Fortran重点
LOG10(X) EXP(X)
求余数 MOD(A1,A2) 函数值:A1-INT(A1/A2)*A2 MOD(1,3)=1 MOD(3,1)=0
某些函数参数只能为实型 如:log(2.0) (loG(2)错) sqrt(2.0) sin(2.0)
(2) 转换函数
函数名 INT(X) REAL(X) 含义 实型转换整型、 复型的实部转换整型 整型转换实型、 复型的实部转换实型 FORTRAN举例 INT(2.3)=2 INT((1.2,3.5))=1 REAL(8)=8.0 REAL((1.2,3.5))=1.2
2.3.7 基本类型数组
数组是具有相同类型的元素的有序集合。数组在使用之前必须说明。 数组的说明: INTEGER,DIMENSION(1:50)::X
数组名为X,类型为整型,元素个数为50。
INTEGER,DIMENSION(5,3)::B 数组名为B,类型为整型,元素个数为5*3个
2.4.1 主程序
7、与外观一致的输入输出格式(重点)
① READ(*,’(3I2)’)((A (I,J),J=1,3),I=1,2) 格式隐DO输入: 1 2 3 4 5 6 ② DO I=1,2 READ(*,*)(A(I,J),J=1,3)
输入格式: 与外观一致
ENDDO
行显DO列隐DO的输入:1,2,3 4,5,6
2Y+2
1/2,2-1 [(a+b)+c]
((a+b)+c)
例:
2 1、 sin( 4) 3
(sin 4 cos10)e2.5 2、 2 ax ln(3 * 5)
想一想:
1/2*3.6-1.2的值? 有何 3.6*1/2-1.2的值? 不同?

Fortran标准函数库

Fortran标准函数库

附录 FORTRAN 90标准函数符号约定:●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。

●s:P表示s类型为P类型(任意kind值)。

s:P(k)表示s类型为P类型(kind 值=k)。

●[…]表示可选参数。

●*表示常用函数。

表1 数值和类型转换函数函数名 说明ABS(x)* 求x的绝对值∣x∣。

x:I、R, 结果类型同x; x:C, 结果:RAIMAG(x) 求x的实部。

x:C, 结果:RAINT(x[,kind])* 对x取整,并转换为实数(kind)。

x:R, kind:I, 结果:R(kind)AMAX0(x1,x2,x3,…)* 求x1,x2,x3,…中最大值。

x I:I, 结果:RAMIN0(x1,x2,x3,…)* 求x1,x2,x3,…中最小值。

x I:I, 结果:RANINT(x[,kind])* 对x四舍五入取整,并转换为实数(kind)。

x:R, kind:I, 结果:R(kind) CEILING(x)* 求大于等于x的最小整数。

x:R, 结果:ICMPLX(x[,y][,kind])) 将参数转换为x、(x,0.0)或(x,y)。

x:I、R、C, y:I、R,kind:I, 结果:C(kind) CONJG(x) 求x的共轭复数。

x:C, 结果:CDBLE(x)* 将x转换为双精度实数。

x:I、R、C, 结果:R(8)DCMPLX(x[,y]) 将参数转换为x、(x,0.0)或(x,y)。

x:I、R、C, y:I、R, 结果:C(8) DFLOAT(x) 将x转换为双精度实数。

x:I, 结果:R(8)DIM(x,y)* 求x-y和0中最大值, 即MAX(x-y,0)。

x:I、R, y的类型同x,结果类型同x DPROD(x,y) 求x和y的乘积,并转换为双精度实数。

x:R, y:R, 结果:R(8)FLOAT(x)* 将x转换为单精度实数。

Fortran代码库

Fortran代码库

Fortran代码库这是John Burkardt设在爱荷华州州立大学网站上的Fortran代码库,他曾经作为访问学者21 August 2000 to 30 June 30 2002在爱荷华州州立大学数学系。

FORTRAN Source Codes ARBY4, a reduced basis fluid flow code; ASA159, compute a random table with given row and column sums; BIVAR, construct and evaluate an interpolating function Z(X,Y) from scattered data(计算三点的插值函数); BLEND, 1/2/3D blending interpolation(混合插值); BUMP, computation of flow over a bump (RETIRED); CALPAK, calendar calculations(日历计算); CBLAS, Complex Basic Linear Algebra Subprograms(线性代数求解); CHANNEL, computation of variable strength channel flow (RETIRED); CHRPAK, a character manipulation library(字符处理库); CLUSTER_ENERGY, computes the minimal cluster energy of a set of points; CODEPACK, graph codes or "signatures"; COLORS, RGB color conversion; COLUMN, extracts a given column from a file; COMBO, Kreher and Stinson combinatorial routines; CONVERT, converts units of measurement (RETIRED); CRYSTAL, simulates the creation of silicon crystals; CRYSTAL_QED, minimize crystallization cost parameters; CVT, a code that positions a given number of points in an arbitrary region, using probabilistic centroidal Voronoi tesselation techniques to achieve good coverage and separation(在给定区域内布点,采用随机质心voronoi结构法); CVT_BASIS, a code under development, for using CVT techniques to extract a small set of representative behaviors from a large set of solutions of a PDE(采用CVT法提取偏微分方程解集的局部子集); CVT_BASIS_CAVITY, 500 flow velocity solutions in a driven cavity, for use by CVT_BASIS; CVT_BASIS_DATA, hundreds of data files for use by CVT_BASIS; CVT_BASIS_INOUT, 500 flow velocity solutions in a cell with inflow and outflow, for use by CVT_BASIS; CVT_BASIS_TCELL, 500 flow velocity solutions in a T-cell for use by CVT_BASIS; CVT_DENSE, attempt to prescribe CVT cell sizes using a density function (experimental code; no good results yet)(采用密度函数计算CVT胞的尺寸); CVT_MAX, attempt to prescribe CVT cell sizes (experimental code; not producing good results yet); CVT_PARK, attempt to prescribe CVT cell sizes (experimental code; not producing good results yet); CVT_SIZE, attempt to prescribe CVT cell sizes using weighted distances (采用加权距离)(experimental code; not producing great results yet); CVT_WEIGHT, my last attempt to try to prescribe CVT cell sizes, and another failure!; DBLAS, Double Precision Basic Linear Algebra Subprograms(双精度的基本线性代数子程序); DCDFLIB, probability CDF evaluation (RETIRED); DESIGN, spherical designs for quadrature on the sphere(适于球面积分); DIVDIF, divided difference tables; DQED, double precision bounded and constrained least squares and nonlinear equation solver; DUTCH, some computational geometry routines; EISPACK, an "ancient" eigenvalue package superseded by LAPACK(Lapack中的经典特征值求解包); ERRORS, numerical nonsense; EXTRACT, extracts a module from a FORTRAN file(提取模块); F90, simple FORTRAN90 examples; F90SPLIT, splits FORTRAN77 or FORTRAN90 source into individual files(分离fortran77和fortran90); FEM_CODES, some simple finite element method demonstration programs(简单的有限元演示程序); FEMOD1, 1D interactive finite element code; FEMOD2, 2D interactive finite element code; FEMPACK, simple finite element routines; FFTPACK, Fourier transforms(傅里叶变换); FILUM, file utilities; FIXCON, convert F77 continuation to F90(将F77变成F90); FLOW3, finite element fluid flow solver, version 3 (RETIRED); FLOW4, finite element fluid flow solver, version 4 (RETIRED); FLOW5, finite element fluid flow solver, version 5(有限元流体求解器); FLOW6, finite element fluid flow solver, version 6; FLOW7, finite element fluid flow solver, version 7 (under development); FOOTBALL, computing football team rankings from game scores; GENE_CLUSTER, investigate energy-minimizing clusters of genetic expression data; GEOMETRY, 2D/3D geometric calculations(几何计算); GEOMPACK, Voronoi diagram, Delaunaytriangulation(voronoi图及delaunay三角网格化程序); GEOMPACK3, Voronoi diagram, Delaunay triangulation; GRAFPACK, calculations for graphs; HALTON, the Halton subrandom sequence; HELP, display a VMS help file; HPF, High Performance FORTRAN examples (RETIRED); INTLIB, routines for approximate integration (quadrature) in one dimension; IQPACK, interpolatory quadrature formulas (RETIRED); KMEANS, routines for the K-Means problem; LAPACKS, a linear algebra library; LAU_NP, heuristics for NP problems. LAUPACK, graph routines. LAWSON, Lawson-Hanson least squares routines; LINPACK_BENCH, the LINPACK benchmark; LINPACKC, a complex arithmetic linear algebra library; LINPACKD, a double precision linear algebra library (RETIRED); LINPACKS, a single precision linear algebra library; LINPLUS, routines the LINPACK guys forgot to write; MACHAR, dynamically compute real and double precision machine precision constants; MATALG, an interactive matrix calculator; MATH142_F00, the raw data from the student survey for Math 142, Fall 2000; MATH142_F01, the raw data from the student survey for Math 142, Fall 2001; MATMAN, a new version of MATMAN; MATMUL, an interactive matrix multiplication benchmark; MINPACK, least squares minimization; MIXED, mixed language programming; MLESS, centroidal Voronoi computations(重心voronoi计算); MPI, message passing interface examples; NINTLIB, routines for approximate integration (quadrature) in N dimensions(n维中的近似积分); NMS, library for "Numerical Methods and Software"; NSPCG, nonsymmetric preconditioned conjugate gradient package (RETIRED); NSWC, a general software library; OPEN_MP, examples of using OpenMP for parallel execution; ORTHPOL, orthogonal polynomials for quadrature (RETIRED); PACKER, manipulate data in multidimensional arrays; PARANOIA, checks the properties of floating point arithmetic; PITCON, continuation method for nonlinear systems; POLPAK, recursively defined polynomials; PRAXIS, Richard Brent's code for minimizing a scalar function of several variables without using derivatives; PROB, probability density functions(概率密度函数); QFEPDE, a simple finite element program; QSHEP2D, interpolate scattered data in 2D(散点的插值); QSHEP3D, interpolate scattered data in 3D; QUADPACK, routines for approximate integration (quadrature) in one dimension; QUADRULE, rules for approximate integration (quadrature) in one dimension; QUOTE, print a random quote from a file; RANDOM, random numbers (RETIRED); RANDOM_DATA, generation of sets of random points for test data(随机数据生成); RAW_IO, a few routines for manipulating raw binary data with FORTRAN (读取二进制数据程序); RBF, radial basis function method. includes an interesting run-time use of GNUPLOT(径向基函数法); REFINE, extend a FLOW6 solution to a refined grid(细分网格的流体力学计算解); REGION, groups contiguous voxels into regions; REGRESSION, software and tests for linear regression(线性回归); REJOIN, "rejoin" data that was divvied up evenly over a rectangular array of processors; RKF45, Runge-Kutta-Fehlberg ODE solver(常微分方程求解); ROOT, interactive root finder; SBLAS, Single Precision Basic Linear Algebra Subprograms; SCALAPACK, parallel linear algebra routines (RETIRED); SCVT, a code that positions a given number of points on a sphere in 3D, using probabilistic centroidal Voronoi tesselation techniques to achieve good coverage and separation(采用CVT将点布于3D球体上); SEQUENCE, guesses missing terms in a numerical sequence; SLAP, sparse linear algebra package (RETIRED); SLATEC, a large software library (RETIRED, TOO LARGE); SPAETH, techniques for cluster analysis of data (NOT DEBUGGED); SPAETH2, more techniques for cluster analysis of data (UNDER DEVELOPMENT); SPARSPAK, an old version of the Waterloo sparse matrix package (RETIRED); SPLINE, interpolation and approximation via splines(样条插值逼近); SPLPAK, DeBoor's cubic spline routines (RETIRED); SQED, single precision bounded and constrained least squares and nonlinear equation solver (RETIRED);STEAM, routines based on the NBS steam table package; STRIPACK, Renka's ACM algorithm 772, for Delaunay triangulation and Voronoi diagrams on a sphere(球形上的delaunay三角破分); STRIPPER, file modification; STROUD, routines for numerical integration (quadrature) over N-dimensional regions, including spheres, toruses and other shapes(N维区域上的数值积分); SUBPAK, a utility library; SUBSET, combinatorial routines; TEMPLATES, templates for iterative linear solvers (RETIRED); TESTAPPROX, test functions for approximation and interpolation. TESTCON, test functions for continuation. TESTINT, test problems for approximate integration (quadrature) in one dimension. TESTMAT, test matrices. TESTOPT, test problems for minimization of a scalar function of a scalar variable. TESTNINT, test problems for approximate integration (quadrature) in multiple dimensions. TESTNLS, nonlinear least squares test problems. TESTNONLIN, test problems for the solution of systems of nonlinear equations. TESTODE, initial value (ODE) test problems. TESTOPT, test problems for minimization of a scalar function of several variables. TESTZERO, test problems for the solution of a single nonlinear equation in one variable. TIMER, various real time and CPU time tests. TO_F90, convert FORTRAN source to FORTRAN90 format (RETIRED). TOEPLITZ, Toeplitz matrix system solvers(Toeplitz矩阵求解). TOMS611S, unconstrained minimization, single precision version(非约束性最小化); TOMS611D, unconstrained minimization, double precision version; TRIPACK, Renka's ACM algorithm 751, for constrained Delaunay triangulation in the plane(平面约束性三角划分); UPJODE, an interactive ODE solver(迭代常微分方程求解器); WORDSNAKE, seeks a word snake with a high overlap score. ZOOMIN, a variety of scalar zero finders. Back to the John Burkardt's home page.。

IMSL:BLAS库函数简表,Fortran语言.docx

IMSL:BLAS库函数简表,Fortran语言.docx

IMSL: BLAS库函数简表,Fortran语言= = = = = = = = = = = = = = = = = = = = = = = = = >< part 7: index =================table 1: imsl level 1 biasdouble complex double complex integer realset a vector to a constant value iset tess etlc zset noael copy a vectoricopy scopy dcopy ccopy zcopyscale vectorsscal dscal cscal zscalcsscal zdscalmultiply a vector by constant svcal dvcal cvcal zvcalcsvcal zdvcaladd a constant to a vector iadd sadd dadd zadd cadd subtract a vector fromconstant times vectoraddition of vector saxpy daxpy caxpyzaxpy swap two vectorsiswap sswap dswap cswap zswapdot product(内积、点乘) cdotc sdot zdotcdot product with higherprecision accumulation | | | czdotu | zqdotu ddot cdotu zdotu dsdot czdotczqdotcconstant plus dotsdsdot dqddot czcdot zqcdotsddoti dqdoti czdoti zqdoti sddota dqdota czdota zqdota hadamard product(zi^-xiyi,阿达玛积)I I shprod | dhprod二内积Iprecision accumulationczudot zqudot product with higherdot product using the accumulator元素的总和的丨丨丨丨丨丨一个向量| ISUM丨样品| DSUM和的绝对I丨丨丨丨丨值的元素I I丨丨丨丨一个向量I I sasum | dasum | scasum | dzasum欧氏或L2范数|丨丨丨丨丨一个向量(欧氏范数)丨丨snrm2 | dnrm2 | scnrm2 | dznrm2产品的元素I丨丨丨丨丨一个向量| | sprdct | dprdct指数有I元素I丨丨丨最小值I Ilmin | 是 | idmin指数有I元素I丨丨丨最大值I Umax | ismax | IDMAX指数有I元素I丨丨丨最小绝对值I | 思明I idamin | icamin | izamin指数有|元素|丨丨丨丨最大绝对值| isamax | idamax | icamax | izamax 构建一个吉文斯I丨丨丨丨平面旋转丨丨srotg | drotg应用平面旋转I丨丨丨丨丨srot Drot csrot zdrot构建一个I丨丨丨丨丨吉文斯变换丨丨srotmg | drotmg采用改进的吉文斯I丨丨丨丨丨转型 | | srotm | drotm | csrotm | zdrotm 构建一个户主变换shoutr dhoutr应用一个户主丨丨丨丨丨I 变换 | | shouap | dhouap 表2: 2级和3级BLAS IMSL操作I房I双復杂丨复I页I矩阵向量乘法,丨丨丨丨丨一般| SGEMV | dgemv | cgemv | zgemv | SGEMV矩阵向量乘法, 带状I sgbmv | dgbmv | cgbmv | zgbmv | sgbmv矩阵向量乘法,丨丨丨丨丨Hermitian chemv zhemv chemv矩阵向量乘法,丨丨丨丨丨对称带状丨丨丨chbmv | zhbmv | chbmv矩阵向量乘法,丨丨丨丨丨对称和房 | ssymv | dsymv | | | ssymv 矩阵向量乘法,对称带状丨ssbmv dsbmv ssbmv矩阵向量乘法,三角 | strmv | dtrmv | ctrmv | ztrmv | strmv矩阵向量乘法,丨丨丨丨丨'三角和带状I stbmv | dtbmv | ctbmv | ztbmv | stbmv矩阵向量解决,丨丨丨丨丨三角 | strsv | dtrsv | ctrsv | ztrsv | strsv矩阵向量解决,三角形和带状丨stbsv | dtbsv | ctbsv | ztbsv | stbsv 秩1矩阵更新,丨丨丨丨丨丨全面、真实的 | SGER | DGER | | | SGER秩1矩阵更新,丨丨丨丨丨丨一般的,复杂的,和丨丨丨丨丨转置 | | | cgeru | zgeru | cgeru秩1矩阵更新,丨丨丨丨丨丨一般的,复杂的,和丨丨丨丨丨共觇转置丨丨丨cgerc | zgerc | cgerc秩1矩阵更新,厄米共^1 I I I I I转置I丨丨雪儿I这儿I雪儿I二阶矩阵更新,丨丨丨丨丨丨厄米共辄I I丨丨丨丨转置| | | CHER2 | zher2 | cHER2秩1矩阵更新,丨丨丨丨丨丨对称和房 | ssyr | dsyr | | | ssyr二阶矩阵更新,丨丨丨丨丨丨对称和房 | ssyr2 | dsyr2 | | | ssyr2矩阵乘法,一般 I sgemm | DGEMM | cgemm | zgemm | sgemm ssymm dsymm csymm zsymm ssymm 矩阵乘法,秩K 的更新,丨丨丨丨丨对称丨 ssyrk | dsyrk | csyrk | zsyrk | ssyrk 秩K 的更新,矩阵乘法,SyininetriHermitianchemin zhemm chemmrank~2k 更新,对称丨ssyr2k | dsyr2k | csyr2k | zsyr2k | ssyr2krank~2k 更新,Hermitian cher2k zher2k cher2k矩阵乘法,丨丨丨丨丨丨三角 | stnnin | dtrirnn | ctrirnn | ztrmm | strmm矩阵求解,丨丨丨丨丨丨三角 | strsm | DTRSM | ctrsm | ztrsm | strsm。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3 章FORTRAN 77 和VMS 内函数本章列出了FORTRAN 77 f95 接受的一系列内函数,旨在帮助将传统的FORTRAN 77 程序迁移至Fortran 95。

在f95 中,本章列出的所有FORTRAN 77 和VMS 函数以及前一章列出的所有Fortran 95 函数都识别为内函数。

为了帮助从传统的FORTRAN 77 程序迁移至f95,使用-f77=intrinsics 进行编译会让编译器只将FORTRAN 77 和VMS 函数识别为内函数,但Fortran 95 函数不会识别为内函数。

属于Sun 扩展的ANSI FORTRAN 77 标准的内函数标有¤ 符号。

使用非标准内函数和库函数的程序可能无法移植到其他平台。

内函数在接受多种数据类型的参数时,有通用名称和专用名称。

通常,通用名称返回与参数具有相同数据类型的值。

但也有一些例外,如类型转换函数(表3–2)和查询函数(表3–7)。

这些函数也可以通过函数的某个专用名称进行调用,以便处理专用参数数据类型。

对于处理多个数据项的函数(例如sign(a1,a2)),所有数据参数的类型必须相同。

下表按以下几方面列出FORTRAN 77 内函数:内函数-描述函数的作用定义-数学定义参数数量-函数接受的参数的数量通用名称-函数的通用名称专用名称-函数的专用名称参数类型-与每个专用名称关联的数据类型函数类型-针对专用参数数据类型返回的数据类型注–编译器选项-xtypemap 会更改变量的缺省大小,并且对内在引用产生影响。

请参见3.4 备注以及《Fortran 用户指南》中有关缺省大小和对齐方式的介绍。

3.1 算术和数学函数本节详细介绍算术函数、类型转换函数、三角函数以及其他函数。

“a”代表函数的单个参数,“a1”和“a2”代表两个参数函数的第一个参数和第二个参数,“ar”和“ai”代表函数的复数参数的实部和虚部。

3.1.1 算术函数3.1.2 类型转换函数表3–2 Fortran 77 类型转换函数在ASCII 平台上(包括Sun 系统):ACHAR 是CHAR 的非标准同义词IACHAR 是ICHAR 的非标准同义词在非ASCII 平台上,ACHAR 和IACHAR 专门用于提供一种直接处理ASCII 的方法。

3.1.3 三角函数表3–3 Fortran 77 三角函数3.1.4 其他数学函数表3–4 其他Fortran 77 数学函数误差函数:exp(-t*t) dt 从0 到a 的2/sqrt(pi) x 整数3.2 字符函数在ASCII 平台上(包括Sun 系统):ACHAR 是CHAR 的非标准同义词IACHAR 是ICHAR 的非标准同义词在非ASCII 平台上,ACHAR 和IACHAR 专门用于提供一种直接处理ASCII 的方法。

3.3 其他函数其他一些函数包括按位函数、环境查询函数以及内存分配和解除分配函数。

3.3.1 位操作这些函数都不属于FORTRAN 77 标准。

表3–6 Fortran 77 按位操作函数以上函数可用作内函数,也可以用作外部函数。

另请参见《Fortran 库参考》手册中介绍的库位操作例程。

3.3.2 环境查询函数这些函数都不属于FORTRAN 77 标准。

3.3.3 内存这些函数都不属于FORTRAN 77 标准。

表3–8 Fortran 77 内存函数3.4 备注以下备注适用于本章中的所有内函数表。

缩写DOUBLE 代表DOUBLE PRECISION。

采用INTEGER 参数的内函数接受INTEGER*2、INTEGER*4 或INTEGER*8。

采用INTEGER 参数的INTEGER 内函数返回下面确定的INTEGER 类型的值。

请注意,-xtypemap 选项可能会更改实际参数的缺省大小:mod sign dim max min and iand or ior xor ieor-返回值的大小是最大参数大小。

abs ishft lshift rshift lrshft ibset ivclr ishftc ibits-返回值的大小是第一个参数的大小。

int epbase epprec-返回值的大小是缺省INTEGER 的大小。

ephuge-返回值的大小是缺省INTEGER 的大小或参数的大小,以两者中最大的值为准。

更改缺省数据大小的选项也改变了一些内函数的使用方式。

例如,在-dbl 生效时,调用带DOUBLE COMPLEX 参数的ZCOS 会自动变为调用CQCOS,这是因为参数已经提升到COMPLEX*32。

以下函数也具有该功能:aimag alog amod cabs ccbrt ccos cdabs cdcbrt cdcos cdexp cdlog cdsin cdsqrt cexp clog csin csqrt dabs dacos dacosd dasin dasind datan datand dcbrt dconjg dcos dcosd dcosh ddim derf derfc dexp dimag dint dlog dmod dnint dprod dsign dsin dsind dsinh dsqrt dtan dtand dtanh idnint iidnnt jidnnt zabs zcbrt zcos zexp zlog zsin zsqrt以下函数允许使用整数参数或任意大小的逻辑类型:and iand ieor iiand iieor iior inot ior jiand jieor jior jnot lrshft lshift not or rshift xor所示能够返回缺省REAL、DOUBLE PRECISION、COMPLEX 或DOUBLE COMPLEX 值的内函数将根据某些编译选项返回主要的类型。

例如,如果使用- xtypemap=real:64,double:64 选项进行编译:调用REAL 函数返回REAL*8调用DOUBLE PRECISION 函数返回REAL*8调用COMPLEX 函数返回COMPLEX*16调用DOUBLE COMPLEX 函数返回COMPLEX*16更改缺省数据类型的数据大小的其他选项有–r8 和–dbl,它们也会从DOUBLE 提升到QUAD。

与这些早期编译器选项相比,– xtypemap= 选项更加灵活,因此优先使用该选项。

具有通用名称的函数返回值的类型与参数相同-类型转换函数、最近的整数函数、复数参数的绝对值以及其他函数除外。

如果有多个参数,它们的类型必须相同。

如果函数名用作实际参数,则它必须是专用名称。

如果函数名用作伪参数,则它不能识别子程序中的内函数,并且根据与变量和数组相同的规则确定其数据类型。

3.4.1 有关函数的注释各表及注释1 至12 以《ANSI X3.9-1978 Programming Language FORTRAN》中的“Table of Intrinsic Functions”为基础,并增加了Fortran 扩展。

(1) INT如果A 为整数类型,则INT(A) 为A。

如果A 为实数或双精度类型:如果|A| < 1,则INT(A) 为0;如果|A| ≥ 1,则INT(A) 是最大的整数,但是不超过A 的幅度,并且它的符号与 A 的符号相同。

(这样的数学整数值可能太大,无法符合计算机整数类型的要求。

)如果A 为复数或双复数类型,则以上规则适用于A 的实部。

如果A 为实数类型,则IFIX(A) 与INT(A) 相同。

(2) REAL如果A 为实数类型,则REAL(A) 为A。

如果A 为整数或双精度类型,则REAL(A) 的 A 有效部分的精度与实数据具有的精度差不多。

如果A 为复数类型,则REAL(A) 为 A 的实部。

如果A 为双复数类型,则REAL(A) 的 A 实部中有效部分的精度与实数据具有的精度差不多。

(3) DBLE如果A 为双精度类型,则DBLE(A) 为A。

如果A 为整数或实数类型,则DBLE(A) 的 A 有效部分的精度与双精度数据具有的精度差不多。

如果A 为复数类型,则DBLE(A) 的A 实部中有效部分的精度与双精度数据具有的精度差不多。

如果A 为COMPLEX*16 类型,则DBLE(A) 为A 的实部。

(3’) QREAL如果A 为REAL*16 类型,则QREAL(A) 为A。

如果A 为整数、实数或双精度类型,则QREAL(A) 的 A 有效部分的精度与REAL*16 数据具有的精度差不多。

如果A 为复数或双复数类型,则QREAL(A) 的A 实部中有效部分的精度与REAL*16 数据具有的精度差不多。

如果A 为COMPLEX*16 或COMPLEX*32 类型,则QREAL(A) 为 A 的实部。

(4) CMPLX如果A 为复数类型,则CMPLX(A) 为A。

如果A 为整数、实数或双精度类型,则CMPLX(A) 为REAL(A) + 0i。

如果A1 和A2 为整数、实数或双精度类型,则CMPLX(A1,A2) 为REAL(A1) + REAL(A2)*i。

如果A 为双复数类型,则CMPLX(A) 为REAL( DBLE(A) ) + i*REAL( DIMAG(A) )。

如果CMPLX 有两个参数,则它们的类型必须相同,可以是整数、实数或双精度类型。

如果CMPLX 有一个参数,则它可以是整数、实数、双精度、复数、COMPLEX*16 或COMPLEX*32 类型。

(4’) DCMPLX如果A 为COMPLEX*16 类型,则DCMPLX(A) 为A。

如果A 为整数、实数或双精度类型,则DCMPLX(A) 为DBLE(A) + 0i。

如果A1 和A2 为整数、实数或双精度类型,则DCMPLX(A1,A2) 为DBLE(A1) + DBLE(A2)*i。

如果DCMPLX 有两个参数,则它们的类型必须相同,可以是整数、实数或双精度类型。

如果DCMPLX 有一个参数,则它可以是整数、实数、双精度、复数、COMPLEX*16 或COMPLEX*32 类型。

(5) ICHARICHAR(A) 为A 在整理序列中的位置。

第一个位置为0,最后一个位置为N-1, 0≤ICHAR(A)≤N-1,其中N 是整理序列中的字符数,A 属于长度为1 的字符类型。

CHAR 和ICHAR 在以下几方面意义相反:ICHAR(CHAR(I)) = I,适用于0≤I≤N-1CHAR(ICHAR(C)) = C,适用于能够在处理器中表示的任何字符C(6) COMPLEXCOMPLEX 值表示为一对有序的实数(ar, ai),其中ar 为实部,ai 为虚部。

相关文档
最新文档