big: Add sqrt.

This commit is contained in:
Jeroen van Rijn
2021-08-11 20:59:51 +02:00
parent 9c2468ecf7
commit 2aae1016ab
4 changed files with 77 additions and 37 deletions
+18
View File
@@ -348,6 +348,24 @@ int_shr_digit :: proc(quotient: ^Int, digits: int) -> (err: Error) {
}
shr_digit :: proc { int_shr_digit, };
/*
Shift right by a certain bit count with sign extension.
*/
int_shr_signed :: proc(dest, src: ^Int, bits: int) -> (err: Error) {
if err = clear_if_uninitialized(src); err != .None { return err; }
if err = clear_if_uninitialized(dest); err != .None { return err; }
if src.sign == .Zero_or_Positive {
return shr(dest, src, bits);
}
if err = add(dest, src, DIGIT(1)); err != .None { return err; }
if err = shr(dest, dest, bits); err != .None { return err; }
return sub(dest, src, DIGIT(1));
}
shr_signed :: proc { int_shr_signed, };
/*
Shift left by a certain bit count.
*/