@@ -750,24 +750,18 @@ mod randomized_svd_tests {
750750 fn test_randomized_svd_accuracy ( ) {
751751 setup_thread_pool ( ) ;
752752
753- let mut coo = CooMatrix :: < f64 > :: new ( 20 , 15 ) ;
753+ let coo = create_sparse_matrix ( 500 , 40 , 0.1 ) ;
754754
755- for i in 0 ..20 {
756- for j in 0 ..5 {
757- let val = ( i as f64 ) * 0.5 + ( j as f64 ) * 2.0 ;
758- coo. push ( i, j, val) ;
759- }
760- }
761755
762756 let csr = CsrMatrix :: from ( & coo) ;
763757
764- let mut std_svd = crate :: lanczos:: svd_dim ( & csr, 10 ) . unwrap ( ) ;
758+ let mut std_svd = crate :: lanczos:: svd_dim_seed ( & csr, 10 , 42 ) . unwrap ( ) ;
765759
766760 let rand_svd = randomized_svd (
767761 & csr,
768762 10 ,
769763 5 ,
770- 2 ,
764+ 4 ,
771765 PowerIterationNormalizer :: QR ,
772766 false ,
773767 Some ( 42 ) ,
@@ -777,8 +771,8 @@ mod randomized_svd_tests {
777771
778772 assert_eq ! ( rand_svd. d, 10 , "Expected rank of 10" ) ;
779773
780- let rel_tol = 0.3 ;
781- let compare_count = std:: cmp:: min ( 2 , std :: cmp :: min ( std_svd. d , rand_svd. d ) ) ;
774+ let rel_tol = 0.4 ;
775+ let compare_count = std:: cmp:: min ( std_svd. d , rand_svd. d ) ;
782776 println ! ( "Standard SVD has {} dimensions" , std_svd. d) ;
783777 println ! ( "Randomized SVD has {} dimensions" , rand_svd. d) ;
784778
@@ -795,29 +789,7 @@ mod randomized_svd_tests {
795789 ) ;
796790 }
797791
798- std_svd. u = std_svd. u . t ( ) . into_owned ( ) ;
799- let std_recon = std_svd. recompose ( ) ;
800- let rand_recon = rand_svd. recompose ( ) ;
801-
802- let mut diff_norm = 0.0 ;
803- let mut orig_norm = 0.0 ;
804792
805- for i in 0 ..20 {
806- for j in 0 ..15 {
807- diff_norm += ( std_recon[ [ i, j] ] - rand_recon[ [ i, j] ] ) . powi ( 2 ) ;
808- orig_norm += std_recon[ [ i, j] ] . powi ( 2 ) ;
809- }
810- }
811-
812- diff_norm = diff_norm. sqrt ( ) ;
813- orig_norm = orig_norm. sqrt ( ) ;
814-
815- let rel_error = diff_norm / orig_norm;
816- assert ! (
817- rel_error < 0.2 ,
818- "Reconstruction difference too large: {}" ,
819- rel_error
820- ) ;
821793 }
822794
823795 // Test with mean centering
0 commit comments