@@ -5,7 +5,8 @@ use ndarray_linalg::*;
55
66/// A is square. `x = A^{-1} b`, `|b - Ax| = 0`
77fn test_exact < T : Scalar + Lapack > ( a : Array2 < T > ) {
8- let b: Array1 < T > = random ( 3 ) ;
8+ let mut rng = rand_pcg:: Mcg128Xsl64 :: new ( 0xcafef00dd15ea5e5 ) ;
9+ let b: Array1 < T > = random_using ( 3 , & mut rng) ;
910 let result = a. least_squares ( & b) . unwrap ( ) ;
1011 // unpack result
1112 let x = result. solution ;
@@ -27,13 +28,15 @@ macro_rules! impl_exact {
2728 paste:: item! {
2829 #[ test]
2930 fn [ <least_squares_ $scalar _exact>] ( ) {
30- let a: Array2 <$scalar> = random( ( 3 , 3 ) ) ;
31+ let mut rng = rand_pcg:: Mcg128Xsl64 :: new( 0xcafef00dd15ea5e5 ) ;
32+ let a: Array2 <$scalar> = random_using( ( 3 , 3 ) , & mut rng) ;
3133 test_exact( a)
3234 }
3335
3436 #[ test]
3537 fn [ <least_squares_ $scalar _exact_t>] ( ) {
36- let a: Array2 <$scalar> = random( ( 3 , 3 ) . f( ) ) ;
38+ let mut rng = rand_pcg:: Mcg128Xsl64 :: new( 0xcafef00dd15ea5e5 ) ;
39+ let a: Array2 <$scalar> = random_using( ( 3 , 3 ) . f( ) , & mut rng) ;
3740 test_exact( a)
3841 }
3942 }
@@ -51,7 +54,8 @@ fn test_overdetermined<T: Scalar + Lapack>(a: Array2<T>)
5154where
5255 T :: Real : AbsDiffEq < Epsilon = T :: Real > ,
5356{
54- let b: Array1 < T > = random ( 4 ) ;
57+ let mut rng = rand_pcg:: Mcg128Xsl64 :: new ( 0xcafef00dd15ea5e5 ) ;
58+ let b: Array1 < T > = random_using ( 4 , & mut rng) ;
5559 let result = a. least_squares ( & b) . unwrap ( ) ;
5660 // unpack result
5761 let x = result. solution ;
@@ -73,13 +77,15 @@ macro_rules! impl_overdetermined {
7377 paste:: item! {
7478 #[ test]
7579 fn [ <least_squares_ $scalar _overdetermined>] ( ) {
76- let a: Array2 <$scalar> = random( ( 4 , 3 ) ) ;
80+ let mut rng = rand_pcg:: Mcg128Xsl64 :: new( 0xcafef00dd15ea5e5 ) ;
81+ let a: Array2 <$scalar> = random_using( ( 4 , 3 ) , & mut rng) ;
7782 test_overdetermined( a)
7883 }
7984
8085 #[ test]
8186 fn [ <least_squares_ $scalar _overdetermined_t>] ( ) {
82- let a: Array2 <$scalar> = random( ( 4 , 3 ) . f( ) ) ;
87+ let mut rng = rand_pcg:: Mcg128Xsl64 :: new( 0xcafef00dd15ea5e5 ) ;
88+ let a: Array2 <$scalar> = random_using( ( 4 , 3 ) . f( ) , & mut rng) ;
8389 test_overdetermined( a)
8490 }
8591 }
@@ -94,7 +100,8 @@ impl_overdetermined!(c64);
94100/// #column > #row case.
95101/// Linear problem is underdetermined, `|b - Ax| = 0` and `x` is not unique
96102fn test_underdetermined < T : Scalar + Lapack > ( a : Array2 < T > ) {
97- let b: Array1 < T > = random ( 3 ) ;
103+ let mut rng = rand_pcg:: Mcg128Xsl64 :: new ( 0xcafef00dd15ea5e5 ) ;
104+ let b: Array1 < T > = random_using ( 3 , & mut rng) ;
98105 let result = a. least_squares ( & b) . unwrap ( ) ;
99106 assert_eq ! ( result. rank, 3 ) ;
100107 assert ! ( result. residual_sum_of_squares. is_none( ) ) ;
@@ -110,13 +117,15 @@ macro_rules! impl_underdetermined {
110117 paste:: item! {
111118 #[ test]
112119 fn [ <least_squares_ $scalar _underdetermined>] ( ) {
113- let a: Array2 <$scalar> = random( ( 3 , 4 ) ) ;
120+ let mut rng = rand_pcg:: Mcg128Xsl64 :: new( 0xcafef00dd15ea5e5 ) ;
121+ let a: Array2 <$scalar> = random_using( ( 3 , 4 ) , & mut rng) ;
114122 test_underdetermined( a)
115123 }
116124
117125 #[ test]
118126 fn [ <least_squares_ $scalar _underdetermined_t>] ( ) {
119- let a: Array2 <$scalar> = random( ( 3 , 4 ) . f( ) ) ;
127+ let mut rng = rand_pcg:: Mcg128Xsl64 :: new( 0xcafef00dd15ea5e5 ) ;
128+ let a: Array2 <$scalar> = random_using( ( 3 , 4 ) . f( ) , & mut rng) ;
120129 test_underdetermined( a)
121130 }
122131 }
0 commit comments