Luna-Generic
这是 Luna-Flow/luna-generic 预期 v0.3.3 发布版本的简体中文文档。
概览
luna-generic 为 Luna 项目提供通用代数 trait 与默认数值类型实例。
当前版本的重点有三项:
BigInt已纳入默认导出的数值类型集合。- 整数到目标类型的嵌入被重构为显式的同态 trait。
Integral::normalize为所有整数源类型提供统一的BigInt规范化入口。
导出 Trait
AddMonoid,MulMonoidAddGroup,MulGroupSemiring,Ring,FieldIntegral,NatNatHomomorphism,IntegralHomomorphismNum
导出操作与默认类型
- 操作 trait:
One,Zero,Inverse,Conjugate - 默认数值类型:
Int,Int16,Int64,UInt,UInt16,UInt64,BigInt,Float,Double
整数模型
Nat覆盖UInt、UInt16、UInt64Integral覆盖有符号整数、无符号整数以及BigInt- 无符号整数实例只到
Semiring Integral::normalize会把任意整数值规范化为BigIntNat通过继承复用Integral::normalize,以精确嵌入到BigInt
嵌入接口
NatHomomorphism::from_nat提供从任意Nat源类型到目标类型的多态嵌入IntegralHomomorphism::from_integral提供从任意Integral源类型到目标类型的多态嵌入- 默认实现路径是先走
Integral::normalize,再做目标类型自己的BigInt转换 - 到
BigInt的嵌入是精确的 - 到
Float和Double的嵌入是近似的,大数值可能发生舍入
校验
建议的发布前检查:
bash
moon check
moon test