1
1
include ! ( "header.rs" ) ;
2
2
3
- fn assert_almost_eq ( a : f64 , b : f64 ) {
4
- let rel_dev = ( a - b) . abs ( ) / ( a. abs ( ) + b. abs ( ) ) ;
5
- if rel_dev > 1.0e-7 {
6
- panic ! ( "a={:?}, b={:?} are not almost equal" , a, b) ;
7
- }
8
- }
9
-
10
- #[ test]
11
- fn vector_norm ( ) {
12
- let a = Array :: range ( 1. , 10. , 1. ) ;
13
- assert_almost_eq ( a. norm ( ) , 285.0 . sqrt ( ) ) ;
14
- }
15
-
16
3
#[ test]
17
4
fn matrix_opnorm_square ( ) {
18
5
let a = Array :: range ( 1. , 10. , 1. ) . into_shape ( ( 3 , 3 ) ) . unwrap ( ) ;
19
- assert_almost_eq ( a. opnorm_1 ( ) , 18.0 ) ;
20
- assert_almost_eq ( a. opnorm_i ( ) , 24.0 ) ;
21
- assert_almost_eq ( a. opnorm_f ( ) , 285.0 . sqrt ( ) ) ;
6
+ a. opnorm_1 ( ) . assert_close ( 18.0 , 1e-7 ) ;
7
+ a. opnorm_i ( ) . assert_close ( 24.0 , 1e-7 ) ;
8
+ a. opnorm_f ( ) . assert_close ( 285.0 . sqrt ( ) , 1e-7 ) ;
22
9
}
23
10
24
11
#[ test]
25
12
fn matrix_opnorm_square_t ( ) {
26
13
let a = Array :: range ( 1. , 10. , 1. ) . into_shape ( ( 3 , 3 ) ) . unwrap ( ) . reversed_axes ( ) ;
27
- assert_almost_eq ( a. opnorm_1 ( ) , 24.0 ) ;
28
- assert_almost_eq ( a. opnorm_i ( ) , 18.0 ) ;
29
- assert_almost_eq ( a. opnorm_f ( ) , 285.0 . sqrt ( ) ) ;
14
+ a. opnorm_1 ( ) . assert_close ( 24.0 , 1e-7 ) ;
15
+ a. opnorm_i ( ) . assert_close ( 18.0 , 1e-7 ) ;
16
+ a. opnorm_f ( ) . assert_close ( 285.0 . sqrt ( ) , 1e-7 ) ;
30
17
}
31
18
32
19
#[ test]
33
20
fn matrix_opnorm_3x4 ( ) {
34
21
let a = Array :: range ( 1. , 13. , 1. ) . into_shape ( ( 3 , 4 ) ) . unwrap ( ) ;
35
- assert_almost_eq ( a. opnorm_1 ( ) , 24.0 ) ;
36
- assert_almost_eq ( a. opnorm_i ( ) , 42.0 ) ;
37
- assert_almost_eq ( a. opnorm_f ( ) , 650.0 . sqrt ( ) ) ;
22
+ a. opnorm_1 ( ) . assert_close ( 24.0 , 1e-7 ) ;
23
+ a. opnorm_i ( ) . assert_close ( 42.0 , 1e-7 ) ;
24
+ a. opnorm_f ( ) . assert_close ( 650.0 . sqrt ( ) , 1e-7 ) ;
38
25
}
39
26
40
27
#[ test]
@@ -43,17 +30,17 @@ fn matrix_opnorm_3x4_t() {
43
30
. into_shape ( ( 3 , 4 ) )
44
31
. unwrap ( )
45
32
. reversed_axes ( ) ;
46
- assert_almost_eq ( a. opnorm_1 ( ) , 42.0 ) ;
47
- assert_almost_eq ( a. opnorm_i ( ) , 24.0 ) ;
48
- assert_almost_eq ( a. opnorm_f ( ) , 650.0 . sqrt ( ) ) ;
33
+ a. opnorm_1 ( ) . assert_close ( 42.0 , 1e-7 ) ;
34
+ a. opnorm_i ( ) . assert_close ( 24.0 , 1e-7 ) ;
35
+ a. opnorm_f ( ) . assert_close ( 650.0 . sqrt ( ) , 1e-7 ) ;
49
36
}
50
37
51
38
#[ test]
52
39
fn matrix_opnorm_4x3 ( ) {
53
40
let a = Array :: range ( 1. , 13. , 1. ) . into_shape ( ( 4 , 3 ) ) . unwrap ( ) ;
54
- assert_almost_eq ( a. opnorm_1 ( ) , 30.0 ) ;
55
- assert_almost_eq ( a. opnorm_i ( ) , 33.0 ) ;
56
- assert_almost_eq ( a. opnorm_f ( ) , 650.0 . sqrt ( ) ) ;
41
+ a. opnorm_1 ( ) . assert_close ( 30.0 , 1e-7 ) ;
42
+ a. opnorm_i ( ) . assert_close ( 33.0 , 1e-7 ) ;
43
+ a. opnorm_f ( ) . assert_close ( 650.0 . sqrt ( ) , 1e-7 ) ;
57
44
}
58
45
59
46
#[ test]
@@ -62,7 +49,7 @@ fn matrix_opnorm_4x3_t() {
62
49
. into_shape ( ( 4 , 3 ) )
63
50
. unwrap ( )
64
51
. reversed_axes ( ) ;
65
- assert_almost_eq ( a. opnorm_1 ( ) , 33.0 ) ;
66
- assert_almost_eq ( a. opnorm_i ( ) , 30.0 ) ;
67
- assert_almost_eq ( a. opnorm_f ( ) , 650.0 . sqrt ( ) ) ;
52
+ a. opnorm_1 ( ) . assert_close ( 33.0 , 1e-7 ) ;
53
+ a. opnorm_i ( ) . assert_close ( 30.0 , 1e-7 ) ;
54
+ a. opnorm_f ( ) . assert_close ( 650.0 . sqrt ( ) , 1e-7 ) ;
68
55
}
0 commit comments