mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-18 05:20:31 +00:00
Merge pull request #3214 from rbehrends/fix-exponentiation
Fix exponentiation operation to avoid overflow.
This commit is contained in:
@@ -427,10 +427,12 @@ proc `^`*[T](x, y: T): T =
|
||||
var (x, y) = (x, y)
|
||||
result = 1
|
||||
|
||||
while y != 0:
|
||||
while true:
|
||||
if (y and 1) != 0:
|
||||
result *= x
|
||||
y = y shr 1
|
||||
if y == 0:
|
||||
break
|
||||
x *= x
|
||||
|
||||
proc gcd*[T](x, y: T): T =
|
||||
|
||||
Reference in New Issue
Block a user