big: Add sqrt.
This commit is contained in:
1 parent
9c2468ecf7
commit
2aae1016ab
4 files changed
+77
-37
No files matched your search
@@ -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.
|
||||
*/
|
||||
|
||||
Reference in new issue
Block a user