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

[原创] 来点复杂的吧

[复制链接]
 楼主| 发表于 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-5-2 18:14 , Processed in 0.047609 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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