00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #ifndef synaps_linalg_Decomp_H
00009 #define synaps_linalg_Decomp_H
00010 
00011 #include <synaps/init.h>
00012 #include <synaps/linalg/MethodName.h>
00013 
00014 __BEGIN_NAMESPACE_SYNAPS
00015 
00032 template<class A, class M> inline
00033 M Decomp(const M & mat)
00034 {
00035    M x(mat);
00036    using MATRIX::decomp; decomp(A(),x.rep());
00037    return (x);
00038 }
00039 
00041 template<class A, class M> inline
00042 M Triang(const M & mat)
00043 {
00044   M x(mat);
00045   using MATRIX::decomp; decomp(A(),x.rep());
00046   return (x);
00047 }
00048 
00054 template<class A, class M1, class M2> inline 
00055 M1 Decomp(M1 & mat, M2 & L)
00056 {
00057   M1 x(mat);
00058   using MATRIX::decomp; decomp(A(),x.rep(),L.rep());
00059   return (x);
00060 }
00061 
00068 template<class A, class M1, class M2, class M3> inline 
00069 M1 Decomp(M1 & mat, M2 & L, M3 & S)
00070 {
00071    M1 x(mat);
00072    using MATRIX::decomp; decomp(A(),x.rep(),L.rep(),S.rep());
00073    return (x);
00074 }
00075 
00076 __END_NAMESPACE_SYNAPS
00077 #endif // synaps_linalg_Decomp_H
00078