Skip to content

Commit

Permalink
Add a cairo program that uses u512_safe_div_mod_by_u256 libfunc + r…
Browse files Browse the repository at this point in the history
…emove it from not yet implemented list (#364)

* Add test program

* Add test case

* Remove libfunc from list
  • Loading branch information
fmoletta authored Dec 12, 2023
1 parent b7cbcdc commit 8800698
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 1 deletion.
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,6 @@ This is a list of the current progress implementing each **libfunc**.
1. `set_transaction_hash` (StarkNet, testing)
1. `set_version` (StarkNet, testing)
1. `struct_snapshot_deconstruct`
1. `u512_safe_divmod_by_u256`
1. `i128_diff`
1. `i16_diff`
1. `i32_diff`
Expand Down
1 change: 1 addition & 0 deletions tests/cases.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ mod common;
#[test_case("tests/cases/uint/uint_try_from_felt.cairo")]
#[test_case("tests/cases/uint/upcasts.cairo")]
#[test_case("tests/cases/uint/wide_mul.cairo")]
#[test_case("tests/cases/uint/u512_safe_divmod_by_u256.cairo")]
// structs
#[test_case("tests/cases/structs/basic.cairo")]
#[test_case("tests/cases/structs/bigger.cairo")]
Expand Down
21 changes: 21 additions & 0 deletions tests/cases/uint/u512_safe_divmod_by_u256.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
use integer::{u512, u512_safe_div_rem_by_u256};

fn main() {
let zero = u512 { limb0: 0, limb1: 0, limb2: 0, limb3: 0 };
let one = u512 { limb0: 1, limb1: 0, limb2: 0, limb3: 0 };

let (q, r) = u512_safe_div_rem_by_u256(zero, integer::u256_as_non_zero(1));
assert(q == zero, '0 / 1 != 0');
assert(r == 0, '0 % 1 != 0');

let (q, r) = u512_safe_div_rem_by_u256(one, integer::u256_as_non_zero(1));
assert(q == one, '1 / 1 != 1');
assert(r == 0, '1 % 1 != 0');

let two = u512 {limb0: 0, limb1: 0, limb2: 0, limb3: 2};
let (q, r) = u512_safe_div_rem_by_u256(two, integer::u256_as_non_zero(1));
assert(q == two, '2/1 != 2');
assert(r == 0, '2/1 != 0');

return ();
}

0 comments on commit 8800698

Please sign in to comment.