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编译软件,和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的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,指程序设计语言,由IBM在1956年发明,主要用于科学计算、数值运算等。
它将汇编语言中的功能集成在一个简单的命令语句中,
减少了汇编语言的繁琐的编译过程。
它也是目前世界上最古老的计算机程
序设计语言。
FORTRAN由“Formula Translating System”派生而来,主要用于工
程和科学计算,非常适用于此领域的算法及数学公式的应用。
基于这种语言,开发者可以轻松描述数字问题,并同时检测、审核、维护和优化此代码。
二、FORTRAN的优缺点
1、优点
a.FORTRAN是一种很容易上手的程序设计语言,它的语言规范很容易
理解,而且简单易用。
b.FORTRAN支持大量数值操作,所以它在计算机科学和工程领域有广
泛的应用。
c.FORTRAN程序非常高效,它的优化程序可以提高程序运行效率,而
且运算速度很快。
d.FORTRAN支持很多的数据类型,这样可以更有效地操作和管理数据。
2、缺点
a.FORTRAN不支持图形用户界面(GUI),这样用户需要熟悉命令行,才能完成程序的编写。
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绘图库的制作与调用文档编写:马利华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可视化库函数

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语言基础

《气象程序设计及绘图》课题组
南京信息工程大学
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
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 为虚部。