mod part_00;
mod part_01;
mod part_02;
pub const MODEL_SHA256: &str = "b46d25b373a250c5c13f353833d82fb45942c718626f922b82cfab92218c5c6b";
pub const FEATURES: [&str; 23] = ["marker_bullet", "marker_ordered", "marker_figure", "first_token_chars", "first_gap_em", "indent_em", "indent_vs_prev_em", "prev_short_em", "prev_ends_terminal", "prev_runs_on", "width_frac", "size_ratio", "bold", "line_index", "lines_in_block", "gap_above_em", "block_is_list", "block_size_ratio", "first_is_lone_symbol", "same_head_on_page", "block_is_table_cell", "max_gap_em", "prev_block_ends_colon"];
pub const THRESHOLD: f64 = 0.3_f64;
#[inline(always)]
fn go_left(value: f64, threshold: f64, default_left: bool, missing: u8) -> bool {
let value = if missing != 2 && value.is_nan() { 0.0 } else { value };
if (missing == 1 && value.abs() <= 1e-35) || (missing == 2 && value.is_nan()) {
return default_left;
}
value <= threshold
}
pub fn predict_margin(x: &[f64; 23]) -> f64 {
let acc = 0.0;
let acc = part_00::add(x, acc);
let acc = part_01::add(x, acc);
part_02::add(x, acc)
}