@@ -82,20 +82,22 @@ pub trait ParallelFPVector {
82
82
/// Functional Programming for Matrix in Parallel (Uses Rayon crate)
83
83
#[ cfg( feature = "parallel" ) ]
84
84
pub trait ParallelFPMatrix {
85
- fn par_fmap < F > ( & self , f : F ) -> Matrix
85
+ type Scalar ;
86
+
87
+ fn par_fmap < F > ( & self , f : F ) -> Self
86
88
where
87
- F : Fn ( f64 ) -> f64 + Send + Sync ;
88
- fn par_reduce < F , T > ( & self , init : T , f : F ) -> f64
89
+ F : Fn ( Self :: Scalar ) -> Self :: Scalar + Send + Sync ;
90
+ fn par_reduce < F , T > ( & self , init : T , f : F ) -> Self :: Scalar
89
91
where
90
- F : Fn ( f64 , f64 ) -> f64 + Send + Sync ,
91
- T : Into < f64 > + Copy + Clone + Send + Sync ;
92
- fn par_zip_with < F > ( & self , f : F , other : & Matrix ) -> Matrix
92
+ F : Fn ( Self :: Scalar , Self :: Scalar ) -> Self :: Scalar + Send + Sync ,
93
+ T : Into < Self :: Scalar > + Copy + Clone + Send + Sync ;
94
+ fn par_zip_with < F > ( & self , f : F , other : & Self ) -> Self
93
95
where
94
- F : Fn ( f64 , f64 ) -> f64 + Send + Sync ;
95
- fn par_col_reduce < F > ( & self , f : F ) -> Vec < f64 >
96
+ F : Fn ( Self :: Scalar , Self :: Scalar ) -> Self :: Scalar + Send + Sync ;
97
+ fn par_col_reduce < F > ( & self , f : F ) -> Vec < Self :: Scalar >
96
98
where
97
- F : Fn ( Vec < f64 > ) -> f64 + Send + Sync ;
98
- fn par_row_reduce < F > ( & self , f : F ) -> Vec < f64 >
99
+ F : Fn ( Vec < Self :: Scalar > ) -> Self :: Scalar + Send + Sync ;
100
+ fn par_row_reduce < F > ( & self , f : F ) -> Vec < Self :: Scalar >
99
101
where
100
- F : Fn ( Vec < f64 > ) -> f64 + Send + Sync ;
102
+ F : Fn ( Vec < Self :: Scalar > ) -> Self :: Scalar + Send + Sync ;
101
103
}
0 commit comments