@@ -89,7 +89,10 @@ static inline bsp_matrix_t bsp_mmread_explicit_array(const char* file_path,
89
89
double real_value , imaginary_value ;
90
90
sscanf (buf , "%lf %lf" , & real_value , & imaginary_value );
91
91
92
- double _Complex value = real_value + 1 j * imaginary_value ;
92
+ double _Complex value ;
93
+
94
+ ((double * ) & value )[0 ] = real_value ;
95
+ ((double * ) & value )[1 ] = imaginary_value ;
93
96
94
97
size_t i = count % matrix .ncols ;
95
98
size_t j = count / matrix .ncols ;
@@ -203,12 +206,15 @@ bsp_mmread_explicit_coordinate(const char* file_path, bsp_type_t value_type,
203
206
bsp_array_write (matrix .indices_1 , count , j );
204
207
} else if (mm_type == BSP_MM_COMPLEX ) {
205
208
unsigned long long i , j ;
206
- double real_value , complex_value ;
207
- sscanf (buf , "%llu %llu %lf %lf" , & i , & j , & real_value , & complex_value );
209
+ double real_value , imaginary_value ;
210
+ sscanf (buf , "%llu %llu %lf %lf" , & i , & j , & real_value , & imaginary_value );
208
211
i -- ;
209
212
j -- ;
210
213
211
- double _Complex value = real_value + 1 j * complex_value ;
214
+ double _Complex value ;
215
+
216
+ ((double * ) & value )[0 ] = real_value ;
217
+ ((double * ) & value )[1 ] = imaginary_value ;
212
218
213
219
bsp_array_write (matrix .values , count , value );
214
220
bsp_array_write (matrix .indices_0 , count , i );
0 commit comments