@@ -168,6 +168,7 @@ impl Summary {
168168impl < ' a > Stats for & ' a [ f64 ] {
169169
170170 // FIXME #11059 handle NaN, inf and overflow
171+ #[ allow( deprecated_owned_vector) ]
171172 fn sum ( self ) -> f64 {
172173 let mut partials : ~[ f64 ] = ~[ ] ;
173174
@@ -246,28 +247,28 @@ impl<'a> Stats for &'a [f64] {
246247
247248 fn median_abs_dev ( self ) -> f64 {
248249 let med = self . median ( ) ;
249- let abs_devs = self . map ( |& v| num:: abs ( med - v) ) ;
250+ let abs_devs: Vec < f64 > = self . iter ( ) . map ( |& v| num:: abs ( med - v) ) . collect ( ) ;
250251 // This constant is derived by smarter statistics brains than me, but it is
251252 // consistent with how R and other packages treat the MAD.
252- abs_devs. median ( ) * 1.4826
253+ abs_devs. as_slice ( ) . median ( ) * 1.4826
253254 }
254255
255256 fn median_abs_dev_pct ( self ) -> f64 {
256257 ( self . median_abs_dev ( ) / self . median ( ) ) * 100.0
257258 }
258259
259260 fn percentile ( self , pct : f64 ) -> f64 {
260- let mut tmp = self . to_owned ( ) ;
261- f64_sort ( tmp) ;
262- percentile_of_sorted ( tmp, pct)
261+ let mut tmp = Vec :: from_slice ( self ) ;
262+ f64_sort ( tmp. as_mut_slice ( ) ) ;
263+ percentile_of_sorted ( tmp. as_slice ( ) , pct)
263264 }
264265
265266 fn quartiles ( self ) -> ( f64 , f64 , f64 ) {
266- let mut tmp = self . to_owned ( ) ;
267- f64_sort ( tmp) ;
268- let a = percentile_of_sorted ( tmp, 25.0 ) ;
269- let b = percentile_of_sorted ( tmp, 50.0 ) ;
270- let c = percentile_of_sorted ( tmp, 75.0 ) ;
267+ let mut tmp = Vec :: from_slice ( self ) ;
268+ f64_sort ( tmp. as_mut_slice ( ) ) ;
269+ let a = percentile_of_sorted ( tmp. as_slice ( ) , 25.0 ) ;
270+ let b = percentile_of_sorted ( tmp. as_slice ( ) , 50.0 ) ;
271+ let c = percentile_of_sorted ( tmp. as_slice ( ) , 75.0 ) ;
271272 ( a, b, c)
272273 }
273274
@@ -308,10 +309,10 @@ fn percentile_of_sorted(sorted_samples: &[f64],
308309///
309310/// See: http://en.wikipedia.org/wiki/Winsorising
310311pub fn winsorize ( samples : & mut [ f64 ] , pct : f64 ) {
311- let mut tmp = samples . to_owned ( ) ;
312- f64_sort ( tmp) ;
313- let lo = percentile_of_sorted ( tmp, pct) ;
314- let hi = percentile_of_sorted ( tmp, 100.0 -pct) ;
312+ let mut tmp = Vec :: from_slice ( samples ) ;
313+ f64_sort ( tmp. as_mut_slice ( ) ) ;
314+ let lo = percentile_of_sorted ( tmp. as_slice ( ) , pct) ;
315+ let hi = percentile_of_sorted ( tmp. as_slice ( ) , 100.0 -pct) ;
315316 for samp in samples. mut_iter ( ) {
316317 if * samp > hi {
317318 * samp = hi
@@ -1009,6 +1010,7 @@ mod tests {
10091010
10101011 #[ test]
10111012 fn test_boxplot_nonpositive( ) {
1013+ #[ allow( deprecated_owned_vector) ]
10121014 fn t ( s : & Summary , expected : ~str ) {
10131015 use std:: io:: MemWriter ;
10141016 let mut m = MemWriter :: new ( ) ;
@@ -1035,7 +1037,6 @@ mod tests {
10351037#[ cfg( test) ]
10361038mod bench {
10371039 use BenchHarness ;
1038- use std:: slice;
10391040 use stats:: Stats ;
10401041
10411042 #[ bench]
@@ -1047,10 +1048,10 @@ mod bench {
10471048 #[ bench]
10481049 pub fn sum_many_f64 ( bh : & mut BenchHarness ) {
10491050 let nums = [ -1e30 , 1e60 , 1e30 , 1.0 , -1e60 ] ;
1050- let v = slice :: from_fn ( 500 , |i| nums[ i%5 ] ) ;
1051+ let v = Vec :: from_fn ( 500 , |i| nums[ i%5 ] ) ;
10511052
10521053 bh. iter ( || {
1053- v. sum ( ) ;
1054+ v. as_slice ( ) . sum ( ) ;
10541055 } )
10551056 }
10561057}
0 commit comments