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