11extern crate arrayfire as af;
22
3- use af:: Dim4 ;
4- use af:: Array ;
3+ use af:: * ;
54
65#[ allow( unused_must_use) ]
76fn main ( ) {
8- af :: set_device ( 0 ) ;
9- af :: info ( ) ;
7+ set_device ( 0 ) ;
8+ info ( ) ;
109
1110 let dims = Dim4 :: new ( & [ 5 , 3 , 1 , 1 ] ) ;
1211
1312 println ! ( "Create a 5-by-3 matrix of random floats on the GPU" ) ;
14- let a = af:: randu ( dims, af:: Aftype :: F32 ) . unwrap ( ) ;
15- af:: print ( & a) ;
13+ let a = match randu ( dims, Aftype :: F32 ) {
14+ Ok ( value) => value,
15+ Err ( error) => panic ! ( "{}" , error) ,
16+ } ;
17+ print ( & a) ;
1618
1719 println ! ( "Element-wise arithmetic" ) ;
18- let b = af:: add ( af:: sin ( & a) , 1.5 ) . unwrap ( ) ;
19- let b2 = af:: add ( af:: sin ( & a) , af:: cos ( & a) ) . unwrap ( ) ;
20+ let b = sin ( & a)
21+ . and_then ( |x| add ( x, 1.5 ) )
22+ . unwrap ( ) ;
23+
24+ let b2 = sin ( & a) .
25+ and_then ( |x| {
26+ cos ( & a)
27+ . and_then ( |y| add ( x, y) )
28+ } )
29+ . unwrap ( ) ;
2030
2131 let b3 = ! & a;
22- println ! ( "sin(a) + 1.5 => " ) ; af :: print ( & b) ;
23- println ! ( "sin(a) + cos(a) => " ) ; af :: print ( & b2) ;
24- println ! ( "!a => " ) ; af :: print ( & b3) ;
32+ println ! ( "sin(a) + 1.5 => " ) ; print ( & b) ;
33+ println ! ( "sin(a) + cos(a) => " ) ; print ( & b2) ;
34+ println ! ( "!a => " ) ; print ( & b3) ;
2535
2636 let test = & a + & b;
27- println ! ( "a + b" ) ; af :: print ( & test) ;
37+ println ! ( "a + b" ) ; print ( & test) ;
2838
2939 // printf("Negate the first three elements of second column\n");
3040 // B(seq(0, 2), 1) = B(seq(0, 2), 1) * -1;
3141 // af_print(B);
3242
3343 println ! ( "Fourier transform the result" ) ;
34- let c = & af:: fft ( & b, 1.0 , 0 ) . unwrap ( ) ;
35- af:: print ( & c) ;
44+ fft ( & b, 1.0 , 0 ) . map ( |x| print ( & x) ) ;
3645
3746 // printf("Grab last row\n");
3847 // array c = C.row(end);
@@ -41,21 +50,23 @@ fn main() {
4150 println ! ( "Create 2-by-3 matrix from host data" ) ;
4251 let d_dims = Dim4 :: new ( & [ 2 , 3 , 1 , 1 ] ) ;
4352 let d_input: [ i32 ; 6 ] = [ 1 , 2 , 3 , 4 , 5 , 6 ] ;
44- let d = & Array :: new ( d_dims, & d_input, af :: Aftype :: S32 ) . unwrap ( ) ;
45- af :: print ( d) ;
53+ let d = & Array :: new ( d_dims, & d_input, Aftype :: S32 ) . unwrap ( ) ;
54+ print ( d) ;
4655
4756 // printf("Copy last column onto first\n");
4857 // D.col(0) = D.col(end);
4958 // af_print(D);
5059
5160 // // Sort A
5261 println ! ( "Sort A and print sorted array and corresponding indices" ) ;
53- let ( vals, inds) = af:: sort_index ( & a, 0 , true ) . unwrap ( ) ;
54- af:: print ( & vals) ;
55- af:: print ( & inds) ;
62+ sort_index ( & a, 0 , true )
63+ . map ( | x | {
64+ print ( & x. 0 ) ;
65+ print ( & x. 1 ) ;
66+ } ) ;
5667
5768 println ! ( "u8 constant array" ) ;
58- let u8_cnst = & af :: constant ( 1 as u8 , dims) . unwrap ( ) ;
59- af :: print ( u8_cnst) ;
69+ let u8_cnst = & constant ( 1 as u8 , dims) . unwrap ( ) ;
70+ print ( u8_cnst) ;
6071 println ! ( "Is u8_cnst array float precision type ? {}" , u8_cnst. is_single( ) . unwrap( ) ) ;
6172}
0 commit comments