Optimized division in BN
This commit is contained in:
@@ -227,14 +227,14 @@ extension BigDouble {
|
||||
//
|
||||
/// Quick division (using defined precision by default for better performances)
|
||||
public static func /(lhs: BigDouble, rhs: BigDouble) -> BigDouble {
|
||||
let double_precision = BN.precision * 10 // While we limit the precision, we need something fine...
|
||||
let double_precision = BN.precision + 10 // While we limit the precision, we need something fine...
|
||||
|
||||
var denominator = lhs.denominator.multiplyingBy(rhs.numerator)
|
||||
var numerator = lhs.numerator.multiplyingBy(rhs.denominator)
|
||||
let precision = (BigInt(10) ** double_precision).limbs
|
||||
if !denominator.lessThan(precision) {
|
||||
denominator = denominator.dividing(precision)
|
||||
numerator = numerator.dividing(precision)
|
||||
while !denominator.lessThan(precision) {
|
||||
denominator = denominator.dividing([10])
|
||||
numerator = numerator.dividing([10])
|
||||
}
|
||||
var res = BigDouble(
|
||||
sign: lhs.sign != rhs.sign,
|
||||
|
||||
Reference in New Issue
Block a user