00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <iostream>
00024
00025
00026 #include <umfpack.h>
00027
00028
00029 #include "util/exception.h"
00030
00031 using std::cout;
00032 using std::endl;
00033
00034 int main(int argc, char **argv) try
00035 {
00036 int n = 5 ;
00037 int Ap [ ] = {0, 2, 5, 9, 10, 12} ;
00038 int Ai [ ] = { 0, 1, 0, 2, 4, 1, 2, 3, 4, 2, 1, 4} ;
00039 double Ax [ ] = {2., 3., 3., -1., 4., 4., -3., 1., 2., 2., 6., 1.} ;
00040 double b [ ] = {8., 45., -3., 3., 19.} ;
00041 double x [5] ;
00042
00043 double *null = (double *) NULL ;
00044 int i ;
00045 void *Symbolic, *Numeric ;
00046 (void) umfpack_di_symbolic (n, n, Ap, Ai, Ax, &Symbolic, null, null) ;
00047 (void) umfpack_di_numeric (Ap, Ai, Ax, Symbolic, &Numeric, null, null) ;
00048 umfpack_di_free_symbolic (&Symbolic) ;
00049 (void) umfpack_di_solve (UMFPACK_A, Ap, Ai, Ax, x, b, Numeric, null, null) ;
00050 umfpack_di_free_numeric (&Numeric) ;
00051 for (i = 0 ; i < n ; i++) cout << "x [" << i << "] = " << x[i] << endl;
00052
00053 return 0;
00054 }
00055 catch (Exception * e)
00056 {
00057 e->Cout();
00058 if (e->IsFatal()) {delete e; exit(1);}
00059 delete e;
00060 }
00061 catch (char const * m)
00062 {
00063 std::cout << "Fatal: " << m << std::endl;
00064 exit (1);
00065 }
00066 catch (...)
00067 {
00068 std::cout << "Some exception (...) ocurred\n";
00069 }
00070
00071