Changeset 2f2562 in git
- Timestamp:
- Dec 2, 2010, 1:21:09 PM (13 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- c45b2a570e15e5718d43d21d9192d8960f315c25
- Parents:
- 47b559d8a480780a6380da801528adb53dca1000
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/linearAlgebra.cc
r47b559d r2f2562 1325 1325 matrix bVec = mpNew(n + m, 1); /* b */ 1326 1326 1327 /* setup A */1328 for (int row = 1; row <= n + m; row++)1329 {1330 int k = row;1331 for (int col = 1; col <= n; col++)1332 {1333 if (k <= m + 1) MATELEM(aMat, row, col) = pCopy(MATELEM(gMat, k, 1));1334 k--;1335 if (k == 0) break;1336 }1337 k = row;1338 for (int col = n + 1; col <= n + m; col++)1339 {1340 if (k <= n + 1) MATELEM(aMat, row, col) = pCopy(MATELEM(fMat, k, 1));1341 k--;1342 if (k == 0) break;1343 }1344 }1345 1346 1327 /* setup b */ 1328 bool isZeroVector = true; 1347 1329 for (int row = 1; row <= n + m; row++) 1348 1330 { … … 1363 1345 } 1364 1346 MATELEM(bVec, row, 1) = p; 1347 if (p != NULL) isZeroVector = false; 1348 } 1349 1350 /* setup A (only if b is not the zero vector) */ 1351 if (!isZeroVector) 1352 { 1353 for (int row = 1; row <= n + m; row++) 1354 { 1355 int k = row; 1356 for (int col = 1; col <= n; col++) 1357 { 1358 if (k <= m + 1) MATELEM(aMat, row, col) = pCopy(MATELEM(gMat, k, 1)); 1359 k--; 1360 if (k == 0) break; 1361 } 1362 k = row; 1363 for (int col = n + 1; col <= n + m; col++) 1364 { 1365 if (k <= n + 1) MATELEM(aMat, row, col) = pCopy(MATELEM(fMat, k, 1)); 1366 k--; 1367 if (k == 0) break; 1368 } 1369 } 1365 1370 } 1366 1371 1367 1372 /* computation of x */ 1368 matrix pMat; matrix lMat; matrix uMat; matrix wMat; 1369 luDecomp(aMat, pMat, lMat, uMat); 1370 luSolveViaLUDecomp(pMat, lMat, uMat, bVec, xVec, wMat); 1373 if (!isZeroVector) 1374 { 1375 matrix pMat; matrix lMat; matrix uMat; matrix wMat; 1376 luDecomp(aMat, pMat, lMat, uMat); 1377 luSolveViaLUDecomp(pMat, lMat, uMat, bVec, xVec, wMat); 1378 idDelete((ideal*)&pMat); idDelete((ideal*)&lMat); 1379 idDelete((ideal*)&uMat); idDelete((ideal*)&wMat); 1380 } 1371 1381 1372 1382 /* fill (xExp + 1)-columns of fMat and gMat */ … … 1378 1388 /* clean-up */ 1379 1389 idDelete((ideal*)&aMat); idDelete((ideal*)&xVec); idDelete((ideal*)&bVec); 1380 idDelete((ideal*)&pMat); idDelete((ideal*)&lMat); idDelete((ideal*)&uMat);1381 idDelete((ideal*)&wMat);1382 1390 } 1383 1391
Note: See TracChangeset
for help on using the changeset viewer.