1171{
1172 bool ret = true;
1173 int info;
1174
1177 int i, j;
1178 for (i = 0; i < size; i++)
1179 for (j = 0; j < size; j++)
1180 *(At + i * size + j) = *(A + j * size + i);
1181 double* copyA = (double*)At;
1183 double* copyb = (
double*)
x;
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193 zgesv_(&size, &bsize, copyA, &size, permutation, copyb, &size, &info);
1194
1195
1196
1197
1198
1199
1200 if (info > 0)
1201 {
1202 ERROR(
"according to zgesv, matrix is singular");
1203 ret = false;
1204 }
1205 else if (info < 0)
1206 {
1207 ERROR(
"argument passed to zgesv had an illegal value");
1208 ret = false;
1209 }
1210
1213
1214 return ret;
1215}
void copy_complex_array(int n, const typename Field::element_type *a, typename Field::element_type *b)
int zgesv_(int *n, int *nrhs, double *a, int *lda, int *ipiv, double *b, int *ldb, int *info)
#define newarray_atomic(T, len)