找回密码
 欢迎注册
楼主: chaoge

[原创] 发布大数软件包bgn_linux_v1.0.0

[复制链接]
 楼主| 发表于 2008-9-5 22:33:57 | 显示全部楼层
EBGNZ模块发布了,支持无限比特的有符号大整数

老地方:www.bgnvendor.com
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-7-19 16:22:52 | 显示全部楼层
61# chaoge

大家好!最近给软件包做了一个解释器,能支持循环,判断,函数调用,以及文件包含。Linux版本,目前只支持EBGNZ模块。还很简陋,bug不少,见笑了!

把test.009文件内容解释一下:
# test.009
use test.009.01
use test.009.02

bgn a;
bgn b;
bgn sum;
bgn pro;

#a = 987654321;
a = 1;

sum = sum_def(a, a + 10 );
pro = pro_def(a, a + 10 );

print("a = ", a);
print("sum = ", sum);
print("pro = ", pro);

print("pro1 = ", pro_def(100, 200));
print("sum1 = ", sum_def(100, 200));

解释:
1. 文件包含用use,目前只支持包含当前目录的文件,文件名中须含字符"."
2. 申明变量用bgn,或者my也成。变量遵循先申明后使用的原则
3. 注释行用#开头
4. 打印输出的语法为print(MSG, EXPR)。 MSG是一个字符串,EXPR是一个变量或者表达式。功能有限,不支持格式化输出。
    注意:表达式的值太大时,print会比较慢,呵呵

demo的用法: ./demo <file name>
比如:./demo test.009

来玩玩吧,哈!

test.009

283 Bytes, 下载次数: 0, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

test.009.01

136 Bytes, 下载次数: 0, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

test.009.02

135 Bytes, 下载次数: 0, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

demo.tar.gz

105.5 KB, 下载次数: 1, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-7-27 21:36:56 | 显示全部楼层
62# chaoge


哈,解释器现在可以支持浮点数和短符号整数了。有机会再发布。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-7-28 08:33:44 | 显示全部楼层
哦,楼主很辛苦啊

赞一下

争取超过PARI/GP
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-7-31 14:05:12 | 显示全部楼层
64# 无心人

升级脚本解释器到v0.9.6,支持短符号整数,浮点数计算,增加builtin函数支持浮点计算。

长符号整数类型名:bgn
短符号整数类型名:int
浮点数类型名:real

builtin函数列表:

real tan (real a);
real sinh(real a);
real cosh(real a);
real tanh(real a);
real ceil(real a);
real floor(real a);
real fabs(real a);
real log(real a);
real log10(real a);
real sqrt(real a);
real pow(real a, real b);
real fmod(real a, real b);
real atan2(real a, real b);

使用方式参考前贴。
内有一组test.xxx脚本示例供参考。

bgn_linux_v1.0.0.zip

121.54 KB, 下载次数: 1, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-8-9 22:22:19 | 显示全部楼层
65# chaoge


升级解释器到v0.9.7。主要是增加了内存回收,降低用户内存资源消耗。另外,增加了对函数递归的支持。比如test.018
int fibonacci(int n)
{
        if( n < 2 )
        {
                return 1;
        }

        return fibonacci(n - 1) + fibonacci(n - 2);
}

int n;
for(n = 0; n < 20; n ++ )
{
        print(n);
        print("var_e = ", fibonacci(n));
}


题外话: 这是迄今为止次艰难的一个包,虽然还不是很满意,但我的目标已达到。内存的回收如此之难,在于对解释器技术的理解,所分配内存作用域的界定,以及内存的追踪上。做完内存的回收,大概能理解一二为什么第一个编译器Fortran耗费了十七年。虽然今天我们已经站在巨人的肩膀上,但是还是耗费了一个多礼拜才搞定这么一个看似简单的问题。对解释器、编译器技术感兴趣的朋友们可要谨慎研究细节。

bgn_linux_v1.0.0_parser_v0.9.7.zip

127.06 KB, 下载次数: 1, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-9-5 22:23:56 | 显示全部楼层
bgn_linux_v1.5.6相关说明:

1。 本版本是RELEASE版。如果在使用的过程中发现问题,请与我联系:bgnvendor@gmail.com
2。 本版本基本调试开关为打开状态。
3。 本版本能处理的大整数比特长度不限。
4。 本版本适用于Linux平台。
5。 本版本提供对Z环,即整数环的支持
6。 本版本提供对Z_{2}环的支持
7。 本版本提供对Z_{n}环的支持
8。 本版本提供对F_{p}域的支持
09。本版本提供对F_{2^n}域的支持
10。本版本提供对EC(F_{2^n}),即F_{2^n}上的EC的支持。
11。本版本提供对EC(F_{p}),即F_{p}上的EC的支持。
12。本版本提供对ECC(F_{2^n}),即F_{2^n}上的ECC的支持。
13。本版本提供对ECC(F_{p}),即F_{p}上的ECC的支持。
14。本版本提供对POLY(Z_{2}),即Z_{2}上的多项式的支持。
15。本版本提供对POLY(Z_{n}),即Z_{n}上的多项式的支持。
16。本版本提供对POLY(F_{p}),即F_{p}上的多项式的支持。
17。本版本提供对POLY(F_{2^n}),即F_{2^n}上的多项式的支持。
18。本版本提供对MATRIX(R),即R上矩阵的支持。
19。本版本对各子软件包的支持已完全模块化。
20。本版本提供了对ECC的用户自定义随机数生成器和哈希散列接口的支持。
21。本版本提供了对内存的弹性管理以及内存呼吸功能。
22。本版本提供了对整个软件包的X-ray功能,提高了软件包的稳定性,容错性,错误重现和错误定位能力。
23。本版本提供了二进制,十进制和十六进制与大整数之间的相互转换。

注:
1. MATRIX(R)是指实数域上的矩阵,由于目前用double类型表示实数,因此只是在零点附近的局部实数区域。由于计算机对实数计算存在一定的精度误差,因此有时候结果存在一定的误差。

2. 本次提供的是静态库文件哟~~~,玩玩吧!

bgn_linux_v1.5.6.zip

350.92 KB, 下载次数: 2, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-11-16 21:58:38 | 显示全部楼层
高精度浮点计算模块EBGNR已基本成型。有需要的招呼一声,我来发布。目前支持的运算功能有加减乘除逆,平方,开方,对数ln(x),指数(e^x, x^y)。其它运算功能有功夫再扩展。
email: bgnvendor@gmail.com
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-14 12:33:03 | 显示全部楼层
开源就支持一个
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-27 01:44 , Processed in 0.046773 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表