Adds SVD solver, code refactoring
This commit is contained in:
@@ -13,7 +13,7 @@ where T: Debug
|
||||
base: f64,
|
||||
max_level: i8,
|
||||
min_level: i8,
|
||||
distance: &'a Fn(&T, &T) -> f64,
|
||||
distance: &'a dyn Fn(&T, &T) -> f64,
|
||||
nodes: Vec<Node<T>>
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ impl<'a, T> CoverTree<'a, T>
|
||||
where T: Debug
|
||||
{
|
||||
|
||||
pub fn new(mut data: Vec<T>, distance: &'a Fn(&T, &T) -> f64) -> CoverTree<T> {
|
||||
pub fn new(mut data: Vec<T>, distance: &'a dyn Fn(&T, &T) -> f64) -> CoverTree<T> {
|
||||
let mut tree = CoverTree {
|
||||
base: 2f64,
|
||||
max_level: 100,
|
||||
@@ -49,7 +49,7 @@ where T: Debug
|
||||
let i_d = self.base.powf(i as f64);
|
||||
let q_p_ds = self.get_children_dist(&p, &qi_p_ds, i);
|
||||
let d_p_q = self.min_by_distance(&q_p_ds);
|
||||
if d_p_q < math::SMALL_ERROR {
|
||||
if d_p_q < math::EPSILON {
|
||||
return
|
||||
} else if d_p_q > i_d {
|
||||
break;
|
||||
|
||||
@@ -4,7 +4,7 @@ use std::cmp::{Ordering, PartialOrd};
|
||||
use num_traits::Float;
|
||||
|
||||
pub struct LinearKNNSearch<'a, T> {
|
||||
distance: Box<Fn(&T, &T) -> f64 + 'a>,
|
||||
distance: Box<dyn Fn(&T, &T) -> f64 + 'a>,
|
||||
data: Vec<T>
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ impl<'a, T> KNNAlgorithm<T> for LinearKNNSearch<'a, T>
|
||||
}
|
||||
|
||||
impl<'a, T> LinearKNNSearch<'a, T> {
|
||||
pub fn new(data: Vec<T>, distance: &'a Fn(&T, &T) -> f64) -> LinearKNNSearch<T>{
|
||||
pub fn new(data: Vec<T>, distance: &'a dyn Fn(&T, &T) -> f64) -> LinearKNNSearch<T>{
|
||||
LinearKNNSearch{
|
||||
data: data,
|
||||
distance: Box::new(distance)
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
use std::cmp::Ordering;
|
||||
use std::mem;
|
||||
use std::fmt::Display;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct HeapSelect<T: PartialOrd> {
|
||||
|
||||
k: usize,
|
||||
n: usize,
|
||||
sorted: bool,
|
||||
|
||||
Reference in New Issue
Block a user