sc_neurocore_engine/bindings/
cordiv.rs1use numpy::{IntoPyArray, PyArray1, PyReadonlyArray1};
12use pyo3::prelude::*;
13
14pub(crate) fn register(module: &Bound<'_, PyModule>) -> PyResult<()> {
16 module.add_function(wrap_pyfunction!(py_cordiv, module)?)?;
17 module.add_function(wrap_pyfunction!(py_adaptive_length, module)?)?;
18 Ok(())
19}
20
21#[pyfunction]
23fn py_cordiv(
24 py: Python<'_>,
25 numerator: PyReadonlyArray1<'_, u8>,
26 denominator: PyReadonlyArray1<'_, u8>,
27) -> PyResult<Py<PyArray1<u8>>> {
28 let numerator = numerator.as_slice()?;
29 let denominator = denominator.as_slice()?;
30 let quotient = crate::cordiv::cordiv(numerator, denominator);
31 Ok(quotient.into_pyarray(py).into())
32}
33
34#[pyfunction]
36fn py_adaptive_length(epsilon: f64, confidence: f64) -> usize {
37 crate::cordiv::adaptive_length_hoeffding(epsilon, confidence)
38}