@@ -13,7 +13,7 @@ module Array = import "/futlib/array"
1313
1414-- Store elements for which bitn is not set first
1515let rs_step_asc [n ] ((xs :[n ]u32 ,is :[n ]i32 ),bitn :i32 ) : ([n ]u32 ,[n ]i32 ) =
16- let bits1 = map (\x -> i32 (( x >> u32 ( bitn )) & 1u32 ) ) xs
16+ let bits1 = map (\x -> ( i32 . u32 x >>> bitn ) & 1 ) xs
1717 let bits0 = map (1 - ) bits1
1818 let idxs0 = map (* ) bits0 (scan (+ ) 0 bits0 )
1919 let idxs1 = scan (+ ) 0 bits1
@@ -32,7 +32,7 @@ let rsort_asc [n] (xs: [n]u32) : ([n]u32,[n]i32) =
3232
3333-- Store elements for which bitn is set first
3434let rs_step_desc [n ] ((xs :[n ]u32 ,is :[n ]i32 ),bitn :i32 ) : ([n ]u32 ,[n ]i32 ) =
35- let bits1 = map (\x -> i32 (( x >> u32 ( bitn )) & 1u32 ) ) xs
35+ let bits1 = map (\x -> ( i32 . u32 x >>> bitn ) & 1 ) xs
3636 let bits0 = map (1 - ) bits1
3737 let idxs1 = map (* ) bits1 (scan (+ ) 0 bits1 )
3838 let idxs0 = scan (+ ) 0 bits0
@@ -58,6 +58,6 @@ let eq_vec [n] (v1: [n]i32) (v2: [n]i32) : bool =
5858 reduce (&& ) true (map (== ) v1 v2 )
5959
6060let main () : []bool =
61- let xs = map ( \i -> u32 ( i )) ([83 ,1 ,4 ,99 ,33 ,0 ,6 ,5 ])
61+ let xs = map u32 . i32 ([83 ,1 ,4 ,99 ,33 ,0 ,6 ,5 ])
6262 in [eq_vec (grade_up xs ) ([5 ,1 ,2 ,7 ,6 ,4 ,0 ,3 ]),
6363 eq_vec (grade_down xs ) ([3 ,0 ,4 ,6 ,7 ,2 ,1 ,5 ])]
0 commit comments