@@ -2936,16 +2936,26 @@ static inline void
2936
2936
}
2937
2937
2938
2938
for (iter = 0 ; iter < outer_dim ; ++ iter ) {
2939
+ int not_ok ;
2939
2940
/* copy the matrix in */
2940
2941
linearize_ @TYPE @_matrix (params .A , args [0 ], & a_in );
2941
- call_ @lapack_func @(& params );
2942
-
2943
- if ('N' == params .JOBZ ) {
2944
- delinearize_ @REALTYPE @_matrix (args [1 ], params .S , & s_out );
2942
+ not_ok = call_ @lapack_func @(& params );
2943
+ if (!not_ok ) {
2944
+ if ('N' == params .JOBZ ) {
2945
+ delinearize_ @REALTYPE @_matrix (args [1 ], params .S , & s_out );
2946
+ } else {
2947
+ delinearize_ @TYPE @_matrix (args [1 ], params .U , & u_out );
2948
+ delinearize_ @REALTYPE @_matrix (args [2 ], params .S , & s_out );
2949
+ delinearize_ @TYPE @_matrix (args [3 ], params .VT , & v_out );
2950
+ }
2945
2951
} else {
2946
- delinearize_ @TYPE @_matrix (args [1 ], params .U , & u_out );
2947
- delinearize_ @REALTYPE @_matrix (args [2 ], params .S , & s_out );
2948
- delinearize_ @TYPE @_matrix (args [3 ], params .VT , & v_out );
2952
+ if ('N' == params .JOBZ ) {
2953
+ nan_ @REALTYPE @_matrix (args [1 ], & s_out );
2954
+ } else {
2955
+ nan_ @TYPE @_matrix (args [1 ], & u_out );
2956
+ nan_ @REALTYPE @_matrix (args [2 ], & s_out );
2957
+ nan_ @TYPE @_matrix (args [3 ], & v_out );
2958
+ }
2949
2959
}
2950
2960
update_pointers ((npy_uint8 * * )args , outer_steps , op_count );
2951
2961
}
0 commit comments