@@ -16,73 +16,59 @@ fn all_close(a: Array<f64, (Ix, Ix)>, b: Array<f64, (Ix, Ix)>) {
16
16
b) ;
17
17
}
18
18
}
19
- #[ test]
20
- fn permutate ( ) {
21
- let a = arr2 ( & [ [ 1. , 2. , 3. ] , [ 4. , 5. , 6. ] , [ 7. , 8. , 9. ] ] ) ;
22
- println ! ( "a= \n {:?}" , & a) ;
23
- let p = vec ! [ 2 , 2 , 3 ] ; // replace 1-2
24
- let pa = a. permutated ( & p) ;
25
- println ! ( "permutated = \n {:?}" , & pa) ;
26
- all_close ( pa, arr2 ( & [ [ 4. , 5. , 6. ] , [ 1. , 2. , 3. ] , [ 7. , 8. , 9. ] ] ) )
27
- }
28
19
20
+ macro_rules! test_permutate {
21
+ ( $testname: ident, $permutate: expr, $input: expr, $answer: expr) => {
29
22
#[ test]
30
- fn permutate_t ( ) {
31
- let a = arr2 ( & [ [ 1. , 4. , 7. ] , [ 2. , 5. , 8. ] , [ 3. , 6. , 9. ] ] ) . reversed_axes ( ) ;
23
+ fn $testname ( ) {
24
+ let a = arr2( $input ) ;
32
25
println!( "a= \n {:?}" , & a) ;
33
- let p = vec ! [ 2 , 2 , 3 ] ; // replace 1-2
26
+ let p = $permutate ; // replace 1-2
34
27
let pa = a. permutated( & p) ;
35
28
println!( "permutated = \n {:?}" , & pa) ;
36
- all_close ( pa, arr2 ( & [ [ 4. , 5. , 6. ] , [ 1. , 2. , 3. ] , [ 7. , 8. , 9. ] ] ) )
29
+ all_close( pa, arr2( $answer ) )
37
30
}
38
-
39
- #[ test]
40
- fn permutate_3x4 ( ) {
41
- let a = arr2 ( & [ [ 1. , 4. , 7. , 10. ] , [ 2. , 5. , 8. , 11. ] , [ 3. , 6. , 9. , 12. ] ] ) ;
42
- println ! ( "a= \n {:?}" , & a) ;
43
- let p = vec ! [ 1 , 3 , 3 ] ; // replace 2-3
44
- println ! ( "permutation = \n {:?}" , & p) ;
45
- let pa = a. permutated ( & p) ;
46
- println ! ( "permutated = \n {:?}" , & pa) ;
47
- all_close ( pa,
48
- arr2 ( & [ [ 1. , 4. , 7. , 10. ] , [ 3. , 6. , 9. , 12. ] , [ 2. , 5. , 8. , 11. ] ] ) ) ;
31
+ }
49
32
}
50
33
34
+ macro_rules! test_permutate_t {
35
+ ( $testname: ident, $permutate: expr, $input: expr, $answer: expr) => {
51
36
#[ test]
52
- fn permutate_3x4_t ( ) {
53
- let a = arr2 ( & [ [ 1. , 5. , 9. ] , [ 2. , 6. , 10. ] , [ 3. , 7. , 11. ] , [ 4. , 8. , 12. ] ] ) . reversed_axes ( ) ;
37
+ fn $testname ( ) {
38
+ let a = arr2( $input ) . reversed_axes( ) ;
54
39
println!( "a= \n {:?}" , & a) ;
55
- let p = vec ! [ 1 , 3 , 3 ] ; // replace 2-3
56
- println ! ( "permutation = \n {:?}" , & p) ;
40
+ let p = $permutate; // replace 1-2
57
41
let pa = a. permutated( & p) ;
58
42
println!( "permutated = \n {:?}" , & pa) ;
59
- all_close ( pa,
60
- arr2 ( & [ [ 1. , 2. , 3. , 4. ] , [ 9. , 10. , 11. , 12. ] , [ 5. , 6. , 7. , 8. ] ] ) ) ;
43
+ all_close( pa, arr2( $answer) )
61
44
}
62
-
63
- #[ test]
64
- fn permutate_4x3 ( ) {
65
- let a = arr2 ( & [ [ 1. , 5. , 9. ] , [ 2. , 6. , 10. ] , [ 3. , 7. , 11. ] , [ 4. , 8. , 12. ] ] ) ;
66
- println ! ( "a= \n {:?}" , & a) ;
67
- let p = vec ! [ 4 , 2 , 3 , 4 ] ; // replace 1-4
68
- println ! ( "permutation = \n {:?}" , & p) ;
69
- let pa = a. permutated ( & p) ;
70
- println ! ( "permutated = \n {:?}" , & pa) ;
71
- all_close ( pa,
72
- arr2 ( & [ [ 4. , 8. , 12. ] , [ 2. , 6. , 10. ] , [ 3. , 7. , 11. ] , [ 1. , 5. , 9. ] ] ) )
45
+ }
73
46
}
74
47
75
- #[ test]
76
- fn permutate_4x3_t ( ) {
77
- let a = arr2 ( & [ [ 1. , 4. , 7. , 10. ] , [ 2. , 5. , 8. , 11. ] , [ 3. , 6. , 9. , 12. ] ] ) . reversed_axes ( ) ;
78
- println ! ( "a= \n {:?}" , & a) ;
79
- let p = vec ! [ 4 , 2 , 3 , 4 ] ; // replace 1-4
80
- println ! ( "permutation = \n {:?}" , & p) ;
81
- let pa = a. permutated ( & p) ;
82
- println ! ( "permutated = \n {:?}" , & pa) ;
83
- all_close ( pa,
84
- arr2 ( & [ [ 10. , 11. , 12. ] , [ 4. , 5. , 6. ] , [ 7. , 8. , 9. ] , [ 1. , 2. , 3. ] ] ) )
85
- }
48
+ test_permutate ! ( permutate,
49
+ vec![ 2 , 2 , 3 ] ,
50
+ & [ [ 1. , 2. , 3. ] , [ 4. , 5. , 6. ] , [ 7. , 8. , 9. ] ] ,
51
+ & [ [ 4. , 5. , 6. ] , [ 1. , 2. , 3. ] , [ 7. , 8. , 9. ] ] ) ;
52
+ test_permutate_t ! ( permutate_t,
53
+ vec![ 2 , 2 , 3 ] ,
54
+ & [ [ 1. , 4. , 7. ] , [ 2. , 5. , 8. ] , [ 3. , 6. , 9. ] ] ,
55
+ & [ [ 4. , 5. , 6. ] , [ 1. , 2. , 3. ] , [ 7. , 8. , 9. ] ] ) ;
56
+ test_permutate ! ( permutate_3x4,
57
+ vec![ 1 , 3 , 3 ] ,
58
+ & [ [ 1. , 4. , 7. , 10. ] , [ 2. , 5. , 8. , 11. ] , [ 3. , 6. , 9. , 12. ] ] ,
59
+ & [ [ 1. , 4. , 7. , 10. ] , [ 3. , 6. , 9. , 12. ] , [ 2. , 5. , 8. , 11. ] ] ) ;
60
+ test_permutate_t ! ( permutate_3x4_t,
61
+ vec![ 1 , 3 , 3 ] ,
62
+ & [ [ 1. , 5. , 9. ] , [ 2. , 6. , 10. ] , [ 3. , 7. , 11. ] , [ 4. , 8. , 12. ] ] ,
63
+ & [ [ 1. , 2. , 3. , 4. ] , [ 9. , 10. , 11. , 12. ] , [ 5. , 6. , 7. , 8. ] ] ) ;
64
+ test_permutate ! ( permutate_4x3,
65
+ vec![ 4 , 2 , 3 , 4 ] ,
66
+ & [ [ 1. , 5. , 9. ] , [ 2. , 6. , 10. ] , [ 3. , 7. , 11. ] , [ 4. , 8. , 12. ] ] ,
67
+ & [ [ 4. , 8. , 12. ] , [ 2. , 6. , 10. ] , [ 3. , 7. , 11. ] , [ 1. , 5. , 9. ] ] ) ;
68
+ test_permutate_t ! ( permutate_4x3_t,
69
+ vec![ 4 , 2 , 3 , 4 ] ,
70
+ & [ [ 1. , 4. , 7. , 10. ] , [ 2. , 5. , 8. , 11. ] , [ 3. , 6. , 9. , 12. ] ] ,
71
+ & [ [ 10. , 11. , 12. ] , [ 4. , 5. , 6. ] , [ 7. , 8. , 9. ] , [ 1. , 2. , 3. ] ] ) ;
86
72
87
73
#[ test]
88
74
fn lu_square_upper ( ) {
0 commit comments