找回密码
 欢迎注册
楼主: 无心人

[原创] 来点复杂的吧

[复制链接]
 楼主| 发表于 2009-2-20 23:01:30 | 显示全部楼层
我明天下午如果去学校 我想修改下你的代码 尝试是否在浮点下能不出错误 看是否可行 你的代码实在复杂,呵呵 谁做雷锋把说明集中到一起?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-21 16:15:11 | 显示全部楼层
原帖由 无心人 于 2009-2-20 21:18 发表 呵呵 mathe给我的windows程序可能不如我重新编译的好
非常可能.而且有可能因为是使用的gmp版本不同,我的版本可能有理数实现的不够好.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-2-21 20:36:57 | 显示全部楼层
我觉得,你不如重新整理下代码 反正目前最短运行时间也是1600天机时 花点时间优化 万一能提高速度10倍呢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-2-21 20:37:44 | 显示全部楼层
要不手工实现下GMP的有理数也可以 反正你用到的功能简单
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-2-21 20:43:42 | 显示全部楼层
你的版本不是有理数实现的不好,是编译的汇编是386的吧 记得你的应该是某个修改版,可以用VC编译成静态库 而我是自己编译的MinGW静态库
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-21 21:58:07 | 显示全部楼层
主要最近我没有多少空余时间.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-21 22:01:42 | 显示全部楼层
你来帮忙做一个在p阶域上进行计算的代码如何?这里p最好选择梅森素数或费马素数,p越大越好(丢失解的可能性越小).
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-2-21 22:55:08 | 显示全部楼层
如果你能分析出 P的大小和解丢失的概率的关系最好了 素数可以取2^31-1 可以考虑用汇编计算 应该是比较简单 我分析你的代码,需要替换的函数很少的 我给你的短消息替换成double是可以编译成功的 关键是,是否在VC2008等windows系统下编译 呵呵 我的MinGW不方便调试 下周有时间我测试下 是简单的替换么? ======================================== 我做好了给你发mail吧,你帮助鉴定!!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-2-21 22:58:02 | 显示全部楼层
你还要准备两组数据 一组否定的 一组肯定的 方便鉴定是否可行
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-2-22 09:09:42 | 显示全部楼层
考虑 p = 2^31 - 1 typedef unsigned long DWORD #define P (2^31-1) //具体数值就不算了 DWORD fAdd(DWORD, a, DWORD b) { DWORD c = a + b; return (c < P? c : c - P); } DWORD fSub(DWORD, a, DWORD b) { DWORD c = P - b + a; return (c < P? c : c - P); } DWORD fMul(DWORD, a, DWORD b) { long long c = a * b; DWORD d = c & P DWORD e = c >> 31 e += d; return (e < P? e : e - P); } 除法就稍微复杂点了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-11-21 21:13 , Processed in 0.025309 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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