quantized_pathfinding/traits/
mod.rs1use std::{
2 ops::{ Add, Sub, Mul, Div,},
3 };
5
6pub trait HasQuantizationMethods<T, const DIM: usize> {
7 fn quantize_ieee754(&self, x: [T; DIM]) -> [usize; DIM];
8 fn quantize(&self, x: [T; DIM]) -> [usize; DIM];
9 fn dequantize(&self, n: [usize; DIM]) -> [T; DIM];
10}
11
12pub trait FiniteFloat:
14 Copy +
15 Add<Output = Self> +
16 Sub<Output = Self> +
17 Mul<Output = Self> +
18 Div<Output = Self>
19{
20 fn from_usize(n: usize) -> Self;
22 fn to_usize(self) -> usize;
23
24 fn round_ieee754 (self) -> usize;
26 fn round(self) -> Self;
27}
28
29impl FiniteFloat for f32 {
30 fn from_usize(n: usize) -> Self {
31 n as f32
32 }
33
34 fn to_usize(self) -> usize {
35 self as usize
36 }
37
38 fn round_ieee754 (self) -> usize {
40 self as usize
41 }
42
43 fn round(self) -> Self {
44 self.round()
45 }
46}
47
48impl FiniteFloat for f64 {
49 fn from_usize(n: usize) -> Self {
50 n as f64
51 }
52
53 fn to_usize(self) -> usize {
54 self as usize
55 }
56
57 fn round_ieee754 (self) -> usize {
59 self as usize
60 }
61
62 fn round(self) -> Self {
63 self.round()
64 }
65}