c++ - 如何避免boost中的有理数标准化?

标签 c++ boost

我正在使用 Boost.Rational 1.46。据其documentation ,

The final fundamental operation is normalizing a rational. This operation is performed whenever a rational is constructed (and assigned in place). All other operations are careful to maintain rationals in a normalized state. Normalization costs the equivalent of one gcd and two divisions.

对于密集使用相对较小的有理值(因此较小的整数)的应用程序,标准化的成本太高,无法始终进行。有没有办法避免这种情况,或者只是在某些时刻强制?

最佳答案

boost 有理数的不变性是它们总是标准化的(请参阅问题中引用的引用文献)。因此,如果您想使用非标准化有理数,则不能使用 boost 实现。

关于c++ - 如何避免boost中的有理数标准化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9908064/

相关文章:

c++ - 插入未打开的流中的数据会怎样?

c++ - 如何解决boost多线程简单程序的编译错误

支持部分序列化的C++序列化库?

c++ - 修改构建boost的默认编译器路径

c++ - 如何将二进制文件反序列化为对象?

c++ - 同一函数的 const 和非 const 版本 - 反模式?

c++ - 添加 C++ 随机字符中调用函数时的 undefined symbol

c++ - boost 截止时间计时器的替代方案

c++ - 如何调用在 main() 内部但在外部范围内定义的变量

c++ - 与 sizeof 派生类混淆