我正在使用MPFR多精度库,特别是here的实现。
有没有办法以这样的方式编译代码:所有操作都是使用标准类型(例如double
)执行的?例如。一个编译标志,将所有“软件操作”转换为通常以标准类型实现的“硬件操作”?
实际上,即使我使用的是64位,代码也很慢,我认为罪魁祸首是mpfr / gmp,我想通过更改为double
来衡量我获得了多少(没有必须重写所有代码。)
答案 0 :(得分:1)
由于多种原因,这在MPFR库中是不可能的。首先是格式不同。特别是,MPFR具有不同的指数范围,没有次正规,单个NaN ......此外,它提供了5种舍入模式的正确舍入,而处理器只有4种舍入模式,而对于本机类型,大多数操作都没有正确舍入。
您可能希望编写包装器,C ++类或其他任何可以执行的操作,但这并不一定有趣,因为您可以在两种格式之间进行多次转换。
编辑:如果你不关心确切的行为,也许你想要的是基于C ++模板的东西。您可能需要查看另一个C ++ MPFR接口,例如MPFRCPP或mpfr::real class。