1 / 5
文档名称:

perl高精度浮点数.doc

格式:doc   页数:5
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

perl高精度浮点数.doc

上传人:szh187166 2013/1/8 文件大小:0 KB

下载得到文件列表

perl高精度浮点数.doc

文档介绍

文档介绍:摘要】  目的:解决Fisher确切概率计算中大数溢出的问题。方法:尝试使用Perl语言编写计算程序。结果:编写的程序运行结果正确,没有出现溢出问题。结论:通过Perl程序可以较好地实现四格表确切概率计算。
【关键词】  Fisher确切概率阶乘溢出 Perl
The Method of Solving Large Number Overflow Error in Fourfold Table Fisher's Exact Test Calculation
Wang Yuran,et al
The Library of Qufu Normal University,  Qufu 273165
Abstract  Objective: To solve the problem of large number overflow in Fisher's Exact Test. Methods: Try to write program by Perl. Results: The Perl program runs well and avoids large number overflow error. Conclusions: Fourfold Table Fisher's Exact Test calculation can be well realized by Perl program.
   
Key words   Fisher's Exact Test ;  factorial ;  overflow ;  Perl
   
四格表卡方检验的确切概率法在卫生统计领域被广泛应用,通常认为确切概率法适用于小样本资料的卡方检验,也就是n<40或者T<1的情况下适用。但也有学者认为,对于大样本或理论频数较大的某些四格表,仍需用四格表的确切概率法(Fisher法)计算其概率[1]。
    由于Excel操作简单,功能较强,可以方便地完成四格表卡方计算任务,所以Excel在医疗统计领域应用较多。但笔者注意到,通过Excel计算Fisher精确概率会受到数据容量的限制,即使经过程序的改良仍然存在"超出计算容量"的可能[2]。
    从算法的角度讲,实现Fisher精确概率的计算并不困难,但是在实现的过程中由于需要反复计算阶乘,计算机在处理超大数字的时候很容易出现溢出错误。由于某些编程语言本身的限制,即使运用一些技巧也只能在一定程度上避免溢出问题,如果采用适当的编程语言再运用一些技巧应该可以解决Fisher精确概率统计中的大样本问题,笔者尝试运用Perl语言对四格表卡方确切概率计算法再次进行讨论。
    四格表确切概率法的基本公式为:
    Pi=(a+b)!(c+d)!(a+c)!(b+d)!   a!b!c!d!n!
    从公式中可以看到,在计算过程中反复进行了阶乘的运算,这也正是直接计算确切概率法容易导致溢出的原因。首先我们在Perl中做一个测试,看看Perl处理大数的能力。
   
    #!c:\perl\bin\
    use bigint;
    $i =new Math::BigInt(180)->bfac();
    print