本库提供精确的几何计算、组合数学算法以及基础算术运算实现,已通过相关基本测试。
- 经典数列计算
- 斯特林数第二类:
stirling_S2(n, k) - 贝尔数:
bell_numbers(n) - 卡塔兰数:
catalan(n) - 组合分解数:
composition(n, k)
- 斯特林数第二类:
- 特性
- 动态规划优化
- 大数安全计算
- 参数边界检查
- 核心功能
- 二维/三维点距计算
- 线段相交检测(2D/3D)
- 线面交点计算
- 向量运算(点积/叉积)
- 特性
- 浮点误差处理(ε=1e-8)
- 维度通用算法
- 几何断言函数
- 数据类型
- 复数:
Complex - 分数:
Fraction
- 复数:
- 核心功能
- 基础运算(加减乘除)
- 幂运算与开方
- 三角函数(sin、cos、atan2)
- 对数函数
- 取整函数(ceil、floor、round)
- 模运算
- 特性
- 精度控制与误差处理
- 多种数据类型支持
- 特殊值处理
- 排列组合函数
- 阶乘计算:
factorial(n) - 排列数:
permutations(n, k) - 组合数:
combinations(n, k) - 重复组合数:
combinations_with_rep(n, k) - 多项式系数:
multinomial(n1, n2, n3)
- 阶乘计算:
- 特殊数学函数
- 二项式系数:
binomial(n, k) - 伽马函数:
gamma(n) - 对数伽马函数:
lgamma(n)
- 二项式系数:
- 随机数生成
- 随机数种子生成:
random_seed(seed) - 随机浮点数:
random(seed) - 随机整数范围:
random_int(min, max, seed) - 随机索引选择:
pick_random_index(n, seed)
- 随机数种子生成:
- 信息论计算
- KL散度计算:
kl_divergence(p1, p2, q1, q2)
- KL散度计算:
- 特性
- 参数边界检查
- 整数精确计算
- 离散概率分布支持
- 比较函数
- 整数比较:
compare_int(x, y) - 浮点数比较:
compare_float(x, y) - 混合类型比较:
compare_int_float(x, y),compare_float_int(x, y) - 字符串比较:
compare_text(x, y) - 自然排序比较:
compare_natural(x, y)
- 整数比较:
- 相等性检测
- 整数相等:
equal_int(x, y),unequal_int(x, y) - 浮点数相等:
equal_float(x, y),unequal_float(x, y) - 混合类型相等:
equal_int_float(x, y),equal_float_int(x, y) - 字符串相等:
equal_text(x, y) - 深度相等:
deep_equal(a, b),deep_equal_float(a, b),arrays_equal(a, b)
- 整数相等:
- 大小关系判断
- 大于:
larger_int(x, y),larger_float(x, y) - 大于等于:
larger_eq_int(x, y),larger_eq_float(x, y) - 小于:
smaller_int(x, y),smaller_float(x, y) - 小于等于:
smaller_eq_int(x, y),smaller_eq_float(x, y)
- 大于:
- 特性
- 浮点数精度控制
- 智能字符串比较(自然排序)
- 多种数据类型支持
- 数组深度比较
- 基本集合操作
- 并集:
set_union(a, b) - 交集:
set_intersect(a, b) - 差集:
set_difference(a, b) - 对称差集:
set_sym_difference(a, b) - 子集判断:
set_is_subset(a, b)
- 并集:
- 高级集合函数
- 元素重复次数:
set_multiplicity(e, a) - 集合大小:
set_size(a) - 集合去重:
set_distinct(a) - 幂集计算:
set_powerset(a) - 笛卡尔积:
set_cartesian(a, b)
- 元素重复次数:
- 数组处理工具
- 数组展平:
flatten(arr) - 重构多维数组:
unflatten(arr, rows, cols) - 数组排序:
sort(arr) - 元素包含检测:
contains(arr, item)
- 数组展平:
- 特性
- 高效集合运算
- 多重集合支持
- 完整的集合论操作
- 在项目根目录执行:
moon add 0Ayachi0/math@0.1.0
- 在
moon.mod.json中确认依赖:
{
"deps": {
"0Ayachi0/math": "0.1.0"
}
}// 组合数学应用
fn combinatorial_demo() -> Result[Int, String] {
let s2 = @combinatorics::stirling_S2(8, 4)? // => Ok(1701)
let bell = @combinatorics::bell_numbers(3)? // => Ok(5)
Ok(s2 + bell)
}
// 几何计算应用
fn geometry_demo() -> Result[Option[Array[Float]], String] {
@geometry::intersect_line_line_2d(
[0.0, 0.0], [10.0, 10.0],
[10.0, 0.0], [0.0, 10.0]
) // => Ok(Some([5.0, 5.0]))
}
// 算术运算应用
fn arithmetic_demo() {
// 复数运算
let c1 = @arithmetic::Complex::new(3.0, 4.0)
let c2 = @arithmetic::Complex::new(1.0, 2.0)
let c_sum = @arithmetic::add_scalar_complex(c1, c2) // => Complex{real: 4.0, imag: 6.0}
// 分数运算
let f1 = @arithmetic::Fraction::new(1, 2)
let f2 = @arithmetic::Fraction::new(1, 3)
let f_sum = @arithmetic::add_scalar_fraction(f1, f2) // => Fraction{numer: 5, denom: 6}
// 三角函数
let angle = @arithmetic::pi / 2.0
let sin_val = @arithmetic::sin(angle) // => 1.0
}
// 概率函数应用
fn probability_demo() {
// 排列组合计算
let fact = @probability::factorial(5) // => 120
let perm = @probability::permutations(5, 3) // => 60
let comb = @probability::combinations(7, 5) // => 21
// 随机数生成
let seed = 42
let rand_val = @probability::random(seed) // => 0-999之间的随机值
let rand_int = @probability::random_int(1, 100, seed) // => 1-99之间的随机整数
// 信息论
let kl = @probability::kl_divergence(7, 3, 3, 7) // => 计算两个分布的KL散度
}
// 关系运算应用
fn relational_demo() {
// 数值比较
let cmp_int = @relational::compare_int(5, 3) // => 1 (5 > 3)
let cmp_float = @relational::compare_float(3.14, 3.14000001) // => 0 (近似相等)
// 相等性检测
let eq_result = @relational::equal_float(1.0, 1.000000001) // => true (在容差范围内)
let array1 = [1, 2, 3]
let array2 = [1, 2, 3]
let arrays_eq = @relational::arrays_equal(array1, array2) // => true
// 字符串比较
let natural_cmp = @relational::compare_natural("2", "10") // => -1 (数值上 2 < 10)
let text_cmp = @relational::compare_text("2", "10") // => 1 (字典序上 "2" > "10")
}
// 集合操作应用
fn set_demo() {
// 基本集合操作
let a = [1, 2, 3, 4]
let b = [3, 4, 5, 6]
let union = @set::set_union(a, b) // => [1, 2, 3, 4, 5, 6]
let intersect = @set::set_intersect(a, b) // => [3, 4]
let diff = @set::set_difference(a, b) // => [1, 2]
let sym_diff = @set::set_sym_difference(a, b) // => [1, 2, 5, 6]
// 高级集合操作
let is_subset = @set::set_is_subset([1, 2], a) // => true
// 多重集合处理
let multi_set = [1, 2, 2, 3, 2, 4]
let multiplicity = @set::set_multiplicity(2, multi_set) // => 3
let unique = @set::set_distinct(multi_set) // => [1, 2, 3, 4]
// 数组转换
let matrix = [[1, 2], [3, 4]]
let flat = @set::flatten(matrix) // => [1, 2, 3, 4]
}生成交互式文档:
moon doc --serve --port 8080访问 http://localhost:8080 查看:
- 函数签名说明
- 参数约束条件
- 实时运行示例
运行完整测试套件:
moon test -a --coverage当前覆盖范围:
- 组合数学:100% 边界条件
- 几何计算:98.7% 路径覆盖
- 算术运算:99.5% 功能覆盖
- 概率函数:100% 函数覆盖
- 关系运算:100% 函数覆盖
- 集合操作:100% 函数覆盖
欢迎通过以下方式参与:
- 提交Issue报告问题
- 创建Pull Request时请:
- 遵循现有代码风格
- 添加对应测试用例
- 更新相关文档注释
Apache-2.0 © 2024 0Ayachi0. 详见许可证文件。