Skip to main content

Crate csd

Crate csd 

Source
Expand description

Canonical Signed Digit (CSD) conversion library.

This library provides functions to convert between decimal numbers and Canonical Signed Digit (CSD) representation.

§Features

  • multiplier (default): CSD multiplier module for Verilog code generation
  • lcsre (default): Longest common substring with repeated elements
  • std (optional): Logging support via env_logger

§Quick Start

use csd::{to_csd, to_decimal};

// Convert decimal to CSD
let csd = to_csd(28.5, 2);
assert_eq!(csd, "+00-00.+0");

// Convert CSD back to decimal
let value = to_decimal("+00-00.+0");
assert!((value - 28.5).abs() < 1e-10);

Re-exports§

pub use crate::csd::highest_power_of_two_in;
pub use crate::csd::to_csd;
pub use crate::csd::to_csd_i;
pub use crate::csd::to_csdnnz;
pub use crate::csd::to_csdnnz_i128;
pub use crate::csd::to_csdnnz_i64;
pub use crate::csd::to_csdnnz_safe;
pub use crate::csd::to_decimal;
pub use crate::csd::to_decimal_fractional;
pub use crate::csd::to_decimal_fractional_safe;
pub use crate::csd::to_decimal_i;
pub use crate::csd::to_decimal_i128_result;
pub use crate::csd::to_decimal_i64_result;
pub use crate::csd::to_decimal_i_result;
pub use crate::csd::to_decimal_integral_safe;
pub use crate::csd::to_decimal_result;
pub use crate::csd::to_decimal_safe;
pub use crate::csd::validate_csd_format;
pub use crate::csd::CsdBuilder;
pub use crate::csd::CsdError;
pub use crate::csd::CsdResult;
pub use crate::csd::RoundingStrategy;
pub use crate::csd_multiplier::generate_csd_multiplier;
pub use crate::csd_multiplier::generate_csd_multipliers;
pub use crate::csd_multiplier::CsdMultiplier;
pub use crate::csd_multiplier::CsdMultiplierError;
pub use crate::csd_multiplier::MultiplierSpec;
pub use crate::lcsre::longest_repeated_substring;

Modules§

csd
CSD Conversion Module
csd_multiplier
CSD Multiplier Module
lcsre