peroxide/macros/
julia_macro.rs

1#[macro_export]
2macro_rules! hstack {
3    // Two
4    ( $x:expr, $y:expr ) => {
5        {
6            let l = $x.len();
7            let mut temp = $x;
8            temp.extend(&$y);
9            matrix(temp, l, 2, Col)
10        }
11    };
12
13    // Multi
14    ( $x0:expr, $( $x: expr ),* ) => {
15        {
16            let r = $x0.len();
17            let mut temp0 = $x0;
18            let mut c = 1usize;
19
20            $(
21                let mut temp = $x;
22                // Must equal row
23                assert_eq!(r, temp.len());
24                // Add column
25                c += 1;
26                temp0.extend_from_slice(&temp[..]);
27            )*
28            matrix(temp0, r, c, Col)
29        }
30    };
31}
32
33#[macro_export]
34macro_rules! vstack {
35    // Two
36    ( $x:expr, $y:expr ) => {
37        {
38            let l = $x.len();
39            let mut temp = $x;
40            temp.extend(&$y);
41            matrix(temp, 2, l, Row)
42        }
43    };
44
45    // Multi
46    ( $x0:expr, $( $x: expr ),* ) => {
47        {
48            let c = $x0.len();
49            let mut temp0 = $x0;
50            let mut r = 1usize;
51
52            $(
53                let mut temp = $x;
54                // Must equal row
55                assert_eq!(c, temp.len());
56                // Add column
57                r += 1;
58                temp0.extend_from_slice(&temp[..]);
59            )*
60            matrix(temp0, r, c, Row)
61        }
62    };
63}