From 832b3920713c9aa7c5b71c474a47c37bbea4ac78 Mon Sep 17 00:00:00 2001 From: CryptoManiac Date: Thu, 3 Sep 2015 15:56:38 +0300 Subject: [PATCH] Implementation of operator* for uint160 and uint256. --- Novacoin/uint160.cs | 17 +++++++++++++++++ Novacoin/uint256.cs | 17 +++++++++++++++++ 2 files changed, 34 insertions(+), 0 deletions(-) diff --git a/Novacoin/uint160.cs b/Novacoin/uint160.cs index be4d918..c051406 100644 --- a/Novacoin/uint160.cs +++ b/Novacoin/uint160.cs @@ -212,6 +212,23 @@ namespace Novacoin return result; } + public static uint160 operator *(uint160 a, uint multiplier) + { + var result = new uint160(); + + ulong c = 0; + uint i = 0; + + do + { + c += a.pn[i] * (ulong)multiplier; + result.pn[i] = (uint)c; + c >>= 32; + } while (++i < result.nWidth); + + return result; + } + public static uint operator %(uint160 a, uint divisor) { ulong r = 0; diff --git a/Novacoin/uint256.cs b/Novacoin/uint256.cs index 7ab69d8..4696b4b 100644 --- a/Novacoin/uint256.cs +++ b/Novacoin/uint256.cs @@ -269,6 +269,23 @@ namespace Novacoin return result; } + public static uint256 operator *(uint256 a, uint multiplier) + { + var result = new uint256(); + + ulong c = 0; + uint i = 0; + + do + { + c += a.pn[i] * (ulong)multiplier; + result.pn[i] = (uint)c; + c >>= 32; + } while (++i < result.nWidth); + + return result; + } + public static uint operator %(uint256 a, uint divisor) { ulong r = 0; -- 1.7.1