| 67 | //! assert!((vwap(&[1000.0, 2000.0], &[10.0, 10.0])? - 150.0).abs() < 1e-12); |
| 68 | //! |
| 69 | //! // A perfectly periodic message: maximal Shannon entropy, low entropy by every other measure. |
| 70 | //! assert_eq!(encode_tick_rule_array(&[1, 1, -1, 0])?, "aabc"); |
| 71 | //! assert_eq!(get_shannon_entropy("abababab"), 1.0); |
| 72 | //! assert_eq!(get_plug_in_entropy("abababab", 2)?, 0.5); |
| 73 | //! assert_eq!(get_lempel_ziv_entropy("abababab"), 0.5); |
| 74 | //! # Ok(()) |
| 75 | //! # } |
| 76 | //! ``` |
| 77 | |
| 78 | use crate::util::input_error::same_length; |
| 79 | use crate::util::stats::{self, quantile_sorted, QuantileMethod}; |
| 80 | use crate::util::InputError; |
| 81 | use chrono::NaiveDateTime; |
| 82 | use statrs::distribution::{ContinuousCDF, Normal}; |
| 83 | |
| 84 | /// Errors returned by the encoding functions and by [`MicrostructuralFeaturesGenerator`]. |
| 85 | #[derive(Debug, Clone, PartialEq, thiserror::Error)] |
| 86 | pub enum MicrostructuralError { |