diff --git a/vlib/math/unsigned/uint256.v b/vlib/math/unsigned/uint256.v index b3ce132936..9046a0d39f 100644 --- a/vlib/math/unsigned/uint256.v +++ b/vlib/math/unsigned/uint256.v @@ -348,7 +348,7 @@ pub fn (u Uint256) rotate_left(k int) Uint256 { return Uint256{u.hi, u.lo} } - return Uint256{Uint128{u.hi.lo << n | u.lo.hi >> (64 - n), u.hi.hi << n | u.hi.lo >> (64 - n)}, Uint128{}} + return Uint256{Uint128{u.hi.lo << n | u.lo.hi >> (64 - n), u.hi.hi << n | u.hi.lo >> (64 - n)}, Uint128{u.lo.lo << n | u.hi.hi >> (64 - n), u.lo.hi << n | u.lo.lo >> (64 - n)}} } n -= 64 if n == 0 { diff --git a/vlib/math/unsigned/uint256_test.v b/vlib/math/unsigned/uint256_test.v index 75a2bb6f9e..7efe4b0226 100644 --- a/vlib/math/unsigned/uint256_test.v +++ b/vlib/math/unsigned/uint256_test.v @@ -303,3 +303,8 @@ fn test_lsh() { assert a.lsh(200).str() == '197653379443855803891661337357963000110230968235283518742069248' assert a.lsh(300) == unsigned.uint256_zero } + +fn test_rotate_left() { + a := unsigned.uint256_from_dec_str('25514942427378518882041616545065271187265095759155217686057363902268374351523')! + assert a.rotate_left(182).str() == '88706376393829417451765793453791860419270208590599379720310994108668904859637' +}