24 个版本 (4 个破坏性版本)

0.5.5 2022年4月22日
0.5.4 2022年4月4日
0.4.5 2022年3月31日
0.3.0 2022年3月27日
0.1.6 2022年1月30日

#2471 in Rust 模式


用于 2 crates

自定义许可

110KB
2.5K SLoC

Mixed Num

无-STD 抽象层,使数值函数只需实现一次,同时支持实数和复数,使用 int、定点和浮点类型。

该库提供了具有无-STD 数学特质的复数结构 Polar<T>Cartesian<T>,包括 MixedNum 特质。

实现了与 num::Complex 的某些互操作性。

这是一个实验性库。

此库支持使用 fixed crate 的定点数。它使用 num 为浮点泛型。

文档

发布说明在 RELEASES.md 中。


lib.rs:

无-STD 抽象层,使数值函数只需实现一次,同时支持实数和复数,使用 int、定点和浮点类型。

这是一个实验性库。

示例

use mixed_num::*;
use mixed_num::traits::*;
use fixed::{types::extra::U27, FixedI32};

let number = FixedI32::<U27>::from_num(0.6f32);
let res:f32 = number.mixed_atan().mixed_to_num();

assert_eq!{ res, 0.5404195 };

let number = 0.6f32;
let res:f32 = number.mixed_atan().mixed_to_num();

assert_eq!{ res, 0.5404195 };

该库提供了具有无-STD 数学特质的复数结构 Polar<T>Cartesian<T>,包括 MixedNum 特质。

实现了与 num::Complex 的某些互操作性。

示例

use mixed_num::*;
use mixed_num::traits::*;

let number = Cartesian::new(1f32,2f32);

assert_eq!{ number.to_string(), "1+2i" };

let polar_number = number.to_polar();
assert_eq!{ polar_number.to_string(), "2.236068∠1.1071488" };

let polar_conj: Polar<f32> = polar_number.conj();

assert_eq!{ polar_conj.to_string(), "2.236068∠-1.1071488" };

在复数结构上实现了选定的 core::ops 特质。

示例

use mixed_num::*;
use mixed_num::traits::*;

let mut c_num = Cartesian::new(1f32,2f32);

c_num = c_num*c_num;
assert_eq!{ c_num.to_string(), "-3+4i" };

这包括对混合类型操作的支持。

示例

use mixed_num::*;
use mixed_num::traits::*;

let mut c_num = Cartesian::new(1f32,2f32);

c_num = c_num*2f64;
assert_eq!{ c_num.to_string(), "2+4i" };

依赖关系

~3MB
~63K SLoC