我想用f64运算符实现一个可交换的标量*乘法运算。为我的类型实现Mul<f64>特性给了我一个类似的右侧乘法。/ error: the trait bound `{float}: std::ops::Mul<Foo>` is not satisfied [E0277]
对于非内置标量类型,我可以反过来在标量上实现相同的特性,即在我的标量类型上实现Mul<Foo>。如何为内置类型(如f64 )获得左侧
该代码用于在具有64位字的PC上运行,所有模块已知小于2^ 64,因此所有操作数都由无符号64位整数实现。我的问题是:使用Montgomery模乘(只使用加法和乘法)而不是C模运算符% (它翻译成a % n = a - n*(a / n)并使用除法)会带来更快的执行速度吗?更新:一方面,根据保罗·奥格尔维(见下面的评论),(a * b) % n需要一个乘法和一个除法。另一方面,Montgomery乘法需要(忽略将操作数转换和转换回Montgomery表示所需的运算,因为它们只对