Skip to content

Commit 79f5f47

Browse files
committed
init commit
1 parent fc16eb1 commit 79f5f47

File tree

12 files changed

+1910
-0
lines changed

12 files changed

+1910
-0
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/sui/.idea
2+
/sui/sui.log.*
3+
/sui/build
4+
/build
5+
/.idea

Move.lock

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# @generated by Move, please check-in and do not edit manually.
2+
3+
[move]
4+
version = 3
5+
manifest_digest = "1B29C0E9894E300594C1632826C95D54D7F9CF16F611403E8C9141E0932A3F21"
6+
deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082"
7+
dependencies = [
8+
{ id = "Sui", name = "Sui" },
9+
]
10+
11+
[[move.package]]
12+
id = "MoveStdlib"
13+
source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.48.2", subdir = "crates/sui-framework/packages/move-stdlib" }
14+
15+
[[move.package]]
16+
id = "Sui"
17+
source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.48.2", subdir = "crates/sui-framework/packages/sui-framework" }
18+
19+
dependencies = [
20+
{ id = "MoveStdlib", name = "MoveStdlib" },
21+
]
22+
23+
[move.toolchain-version]
24+
compiler-version = "1.49.1"
25+
edition = "2024"
26+
flavor = "sui"

Move.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# mainnet
2+
# -------------------------------
3+
[package]
4+
name = "IntegerLibrary"
5+
version = "1.0.0"
6+
published-at = "0x03637b7b60978ef4389124f7683456f0050ab015a0590d52b6e6cadb342af34a"
7+
8+
[dependencies]
9+
Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.48.2" }
10+
11+
[addresses]
12+
integer_library = "0x03637b7b60978ef4389124f7683456f0050ab015a0590d52b6e6cadb342af34a"

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Integer Library
2+
3+
A formally verified library of common unsigned and signed operations.
4+
5+
6+

sources/full_math_u128.move

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module integer_library::full_math_u128 {
2+
public fun mul_div_floor(num1: u128, num2: u128, denom: u128): u128 {
3+
let r = full_mul(num1, num2) / (denom as u256);
4+
(r as u128)
5+
}
6+
7+
public fun mul_div_round(num1: u128, num2: u128, denom: u128): u128 {
8+
let r = (full_mul(num1, num2) + ((denom as u256) >> 1)) / (denom as u256);
9+
(r as u128)
10+
}
11+
12+
public fun mul_div_ceil(num1: u128, num2: u128, denom: u128): u128 {
13+
let r = (full_mul(num1, num2) + ((denom as u256) - 1)) / (denom as u256);
14+
(r as u128)
15+
}
16+
17+
public fun mul_shr(num1: u128, num2: u128, shift: u8): u128 {
18+
let product = full_mul(num1, num2) >> shift;
19+
(product as u128)
20+
}
21+
22+
public fun mul_shl(num1: u128, num2: u128, shift: u8): u128 {
23+
let product = full_mul(num1, num2) << shift;
24+
(product as u128)
25+
}
26+
27+
public fun full_mul(num1: u128, num2: u128): u256 {
28+
(num1 as u256) * (num2 as u256)
29+
}
30+
}

sources/full_math_u64.move

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
module integer_library::full_math_u64 {
2+
public fun mul_div_floor(num1: u64, num2: u64, denom: u64): u64 {
3+
let r = full_mul(num1, num2) / (denom as u128);
4+
(r as u64)
5+
}
6+
7+
public fun mul_div_round(num1: u64, num2: u64, denom: u64): u64 {
8+
let r = (full_mul(num1, num2) + ((denom as u128) >> 1)) / (denom as u128);
9+
(r as u64)
10+
}
11+
12+
public fun mul_div_ceil(num1: u64, num2: u64, denom: u64): u64 {
13+
let r = (full_mul(num1, num2) + ((denom as u128) - 1)) / (denom as u128);
14+
(r as u64)
15+
}
16+
17+
public fun mul_shr(num1: u64, num2: u64, shift: u8): u64 {
18+
let r = full_mul(num1, num2) >> shift;
19+
(r as u64)
20+
}
21+
22+
public fun mul_shl(num1: u64, num2: u64, shift: u8): u64 {
23+
let r = full_mul(num1, num2) << shift;
24+
(r as u64)
25+
}
26+
27+
public fun full_mul(num1: u64, num2: u64): u128 {
28+
((num1 as u128) * (num2 as u128))
29+
}
30+
}
31+

0 commit comments

Comments
 (0)