5 个版本
0.1.4 | 2023 年 11 月 25 日 |
---|---|
0.1.3 | 2023 年 11 月 9 日 |
0.1.2 | 2023 年 11 月 9 日 |
0.1.1 | 2023 年 11 月 9 日 |
0.1.0 | 2023 年 11 月 9 日 |
在 数学 分类中排名 #1052
每月 276 次下载
在 7 个 Crates 中使用 (直接使用 2 个)
10KB
183 行代码
Peroxide-num
Peroxide-num
是一个 Rust crate,专注于提供全面的数值结构和操作,通过关注数学计算扩展了泛型编程能力。
概述
此 crate 定义了一套数值操作特性,包括基本算术、幂函数、三角函数、指数和对数函数。它旨在与实现这些特性的数值类型一起使用,从而实现广泛数学操作。
特性
PowOps
:与幂和根相关的操作。TrigOps
:三角函数。ExpLogOps
:指数和对数函数。Float
:定义自己的浮点类型 (f32
和f64
作为默认实现)。Numeric
:一个综合特性,包含上述所有特性以及标准算术操作。
示例 1:定义简单的数值类型
以下是如何定义自己的简单数值类型并实现 Numeric
特性的示例。
#[derive(Debug, Clone, Copy, PartialOrd)]
struct SimpleNumber(f64);
impl PowOps for SimpleNumber {
type Float = Self;
fn powi(&self, n: i32) -> Self {
SimpleNumber(self.0.powi(n))
}
fn powf(&self, f: Self::Float) -> Self {
SimpleNumber(self.0.powf(f.0))
}
fn pow(&self, f: Self) -> Self {
SimpleNumber(self.0.powf(f.0))
}
fn sqrt(&self) -> Self {
SimpleNumber(self.0.sqrt())
}
}
// Implement other required operations for SimpleNumber...
// - Add, Sub, Mul, Div, Neg
// - PowOps (implemented above)
// - TrigOps
// - ExpLogOps
impl Numeric<f64> for SimpleNumber {}
此 SimpleNumber
结构体包装了一个 f64
并实现了 Numeric
特性,使其能够执行 Peroxide-num
crate 中定义的所有操作。
示例 2:Vec3D
(3D 向量)
用法
要在自己的计算中使用此类型
let num = SimpleNumber(2.0);
let result = num.sin(); // Compute the sine of 2.0
println!("{:?}", result); // Should display the sine of 2.0
此 Peroxide-num
crate 设计为灵活且可扩展,允许轻松集成到 Rust 科学计算的较大 Peroxide
生态系统。
有关更多信息和高阶用法,请参阅 crate 提供的文档和示例。