@@ -67,15 +67,15 @@ impl Kmeans {
6767 // chunk size is a trade-off between parallelization and overhead
6868 hist. items . par_chunks_mut ( 256 ) . for_each ( {
6969 let tls = & tls; move |batch| {
70- let kmeans = tls. get_or ( move || CacheLineAlign ( RefCell :: new ( Kmeans :: new ( len) ) ) ) ;
70+ let kmeans = tls. get_or ( move || CacheLineAlign ( RefCell :: new ( Self :: new ( len) ) ) ) ;
7171 if let Ok ( ref mut kmeans) = * kmeans. 0 . borrow_mut ( ) {
7272 kmeans. iterate_batch ( batch, & n, colors, adjust_weight) ;
7373 }
7474 } } ) ;
7575
7676 let diff = tls. into_iter ( )
7777 . map ( |c| c. 0 . into_inner ( ) )
78- . reduce ( Kmeans :: try_merge)
78+ . reduce ( Self :: try_merge)
7979 . transpose ( ) ?
8080 . map_or ( 0. , |kmeans| {
8181 kmeans. finalize ( palette) / total
@@ -94,7 +94,7 @@ impl Kmeans {
9494 let remapped = colors[ matched as usize ] ;
9595 let ( _, new_diff) = n. search ( & f_pixel ( px. 0 + px. 0 - remapped. 0 ) , matched) ;
9696 diff = new_diff;
97- item. adjusted_weight = ( item. perceptual_weight + 2. * item. adjusted_weight ) * ( 0.5 + diff) ;
97+ item. adjusted_weight = 2.0f32 . mul_add ( item. adjusted_weight , item. perceptual_weight ) * ( 0.5 + diff) ;
9898 }
9999 debug_assert ! ( f64 :: from( diff) < 1e20 ) ;
100100 self . update_color ( px, item. adjusted_weight , matched) ;
@@ -103,7 +103,7 @@ impl Kmeans {
103103 }
104104
105105 #[ inline]
106- pub fn merge ( mut self , new : Kmeans ) -> Kmeans {
106+ pub fn merge ( mut self , new : Self ) -> Self {
107107 self . weighed_diff_sum += new. weighed_diff_sum ;
108108 self . averages . iter_mut ( ) . zip ( new. averages ) . for_each ( |( p, n) | {
109109 p. sum += n. sum ;
@@ -115,7 +115,7 @@ impl Kmeans {
115115 #[ inline]
116116 pub fn try_merge < E > ( old : Result < Self , E > , new : Result < Self , E > ) -> Result < Self , E > {
117117 match ( old, new) {
118- ( Ok ( old) , Ok ( new) ) => Ok ( Kmeans :: merge ( old, new) ) ,
118+ ( Ok ( old) , Ok ( new) ) => Ok ( Self :: merge ( old, new) ) ,
119119 ( Err ( e) , _) | ( _, Err ( e) ) => Err ( e) ,
120120 }
121121 }
0 commit comments