00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00025 #ifndef _ARAGELI_solve_linsys_hpp_
00026 #define _ARAGELI_solve_linsys_hpp_
00027
00028 #include "config.hpp"
00029
00030 #include "exception.hpp"
00031
00032
00033 namespace Arageli
00034 {
00035
00036
00038
00040 class no_unique_solution : public exception {};
00041
00042
00043 enum solve_linsys_result { SLR_EMPTY, SLR_UNIQUE, SLR_MULTIPLE };
00044
00045
00047
00054 template <typename A, typename B, typename GX, typename Offset>
00055 solve_linsys_result solve_linsys (const A& a, const B& b, Offset& offset, GX& gx);
00056
00057
00059
00066 template <typename A, typename B, typename X>
00067 solve_linsys_result solve_linsys (const A& a, const B& b, X& x);
00068
00069
00071
00077 template <typename A, typename B>
00078 B solve_linsys (const A& a, const B& b);
00079
00080
00082
00088 template <typename A>
00089 A solve_linsys (const A& a);
00090
00091
00092 }
00093
00094
00095 #ifdef ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE
00096 #define ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_solve_linsys
00097 #include "solve_linsys.cpp"
00098 #undef ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_solve_linsys
00099 #endif
00100
00101 #endif // #ifndef _ARAGELI_solve_linsys_hpp_