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

Download history 134/week @ 2024-04-08 96/week @ 2024-04-15 67/week @ 2024-04-22 82/week @ 2024-04-29 98/week @ 2024-05-06 117/week @ 2024-05-13 93/week @ 2024-05-20 82/week @ 2024-05-27 68/week @ 2024-06-03 94/week @ 2024-06-10 121/week @ 2024-06-17 122/week @ 2024-06-24 7/week @ 2024-07-01 72/week @ 2024-07-08 97/week @ 2024-07-15 82/week @ 2024-07-22

每月 276 次下载
7 Crates 中使用 (直接使用 2 个)

MIT/Apache 许可协议

10KB
183 行代码

Peroxide-num

Peroxide-num 是一个 Rust crate,专注于提供全面的数值结构和操作,通过关注数学计算扩展了泛型编程能力。

概述

此 crate 定义了一套数值操作特性,包括基本算术、幂函数、三角函数、指数和对数函数。它旨在与实现这些特性的数值类型一起使用,从而实现广泛数学操作。

特性

  • PowOps:与幂和根相关的操作。
  • TrigOps:三角函数。
  • ExpLogOps:指数和对数函数。
  • Float:定义自己的浮点类型 (f32f64 作为默认实现)。
  • 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 向量)

examples/vec3d.rs

用法

要在自己的计算中使用此类型

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 提供的文档和示例。

无运行时依赖项