1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5pub struct QuantMetrics {
6 pub original_min: f32,
8
9 pub original_max: f32,
11
12 pub loss_ratio: f32,
15}
16
17impl QuantMetrics {
18 pub fn new(original_min: f32, original_max: f32, loss_ratio: f32) -> Self {
20 Self {
21 original_min,
22 original_max,
23 loss_ratio,
24 }
25 }
26
27 pub fn dynamic_range(&self) -> f32 {
29 self.original_max - self.original_min
30 }
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36
37 #[test]
38 fn test_metrics_creation() {
39 let metrics = QuantMetrics::new(-1.0, 1.0, 0.05);
40
41 assert_eq!(metrics.original_min, -1.0);
42 assert_eq!(metrics.original_max, 1.0);
43 assert_eq!(metrics.loss_ratio, 0.05);
44 assert_eq!(metrics.dynamic_range(), 2.0);
45 }
46}