Skip to content

Commit 7cc23dc

Browse files
committed
replace rug by num_bigint
1 parent 8d580f1 commit 7cc23dc

File tree

14 files changed

+102
-234
lines changed

14 files changed

+102
-234
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
target/
2+
cliquepicking_python/.env/

cliquepicking_python/.env/lib64

-1
This file was deleted.

cliquepicking_python/.env/pyvenv.cfg

-5
This file was deleted.

cliquepicking_python/Cargo.lock

+3-45
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cliquepicking_python/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,3 @@ crate-type = ["cdylib"]
1212
cliquepicking_rs = { path = "../cliquepicking_rs" }
1313
num-bigint = "0.4.6"
1414
pyo3 = { version = "0.21.1", features = ["num-bigint"] }
15-
rug = "1.24.1"

cliquepicking_python/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use cliquepicking_rs::sample::sample_cpdag;
66
use cliquepicking_rs::sample::sample_cpdag_orders;
77

88
use num_bigint::BigUint;
9-
use rug::integer::Order;
109

1110
/// A Python module for counting and sampling Markov equivalent DAGs.
1211
#[pymodule]
@@ -23,8 +22,7 @@ fn mec_size(cpdag: Vec<(usize, usize)>) -> PyResult<BigUint> {
2322
let mx = max_element(&cpdag);
2423
let g = PartiallyDirectedGraph::from_edge_list(cpdag, mx + 1);
2524
let res = count_cpdag(&g);
26-
let digits = res.to_digits::<u32>(Order::Lsf);
27-
Ok(BigUint::new(digits))
25+
Ok(res)
2826
}
2927

3028
/// Sample k DAGs uniformly from the Markov equivalence class represented by CPDAG cpdag.

cliquepicking_rs/Cargo.lock

+29-100
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cliquepicking_rs/Cargo.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ edition = "2021"
77

88
[dependencies]
99
rand = "0.8.5"
10-
rug = "1.24.1"
10+
num-bigint = { version = "0.4.6", features = ["rand"] }
11+
num-traits = "0.2.19"

cliquepicking_rs/src/combinatorics.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
use rug::Integer;
1+
use num_bigint::BigUint;
2+
use num_traits::One;
23

34
use crate::memoization::Memoization;
45

5-
pub fn factorial(n: usize, memoization: &mut [Integer]) -> Integer {
6-
if memoization[n] != 0 {
6+
pub fn factorial(n: usize, memoization: &mut [BigUint]) -> BigUint {
7+
if memoization[n] != BigUint::ZERO {
78
return memoization[n].clone();
89
}
9-
let mut result = Integer::from(1);
10+
let mut result = BigUint::one();
1011
for i in 1..n + 1 {
1112
result *= i;
1213
}
@@ -15,7 +16,7 @@ pub fn factorial(n: usize, memoization: &mut [Integer]) -> Integer {
1516
}
1617

1718
// TODO: maybe implement without recursion?
18-
pub fn rho(x: &[usize], memoization: &mut Memoization) -> Integer {
19+
pub fn rho(x: &[usize], memoization: &mut Memoization) -> BigUint {
1920
let x_vec = x.to_vec();
2021
if let Some(res) = memoization.rho.get(&x_vec) {
2122
return res.clone();

0 commit comments

Comments
 (0)