21#ifndef __ANTARES_SOLVER_MISC_MATRIX_DP_MAKE_HXX__
22#define __ANTARES_SOLVER_MISC_MATRIX_DP_MAKE_HXX__
28template<
class T,
class U1,
class U2,
class U3,
class U4>
29T MatrixDPMake(U1& L, U2& A, U3& B, U4& C, uint size, T* temp,
bool CIsIdentity)
44 if (not Cholesky<T>(L, A, size, temp))
46 for (uint j = 0; j != size; ++j)
48 for (uint k = 0; k <= j; ++k)
58 for (uint j = 0; j != size; ++j)
66 for (uint i = 0; i != dichotomie; ++i)
68 r = (top + bot) / T(2);
71 for (uint j = 0; j != size; ++j)
73 for (uint k = 0; k < j; ++k)
75 B[j][k] = A[j][k] * r + C[j][k] * (T(1) - r);
81 for (uint j = 0; j != size; ++j)
83 for (uint k = 0; k < j; ++k)
85 B[j][k] = A[j][k] * r;
90 if (Cholesky<T>(L, B, size, temp))
108 for (uint j = 0; j != size; ++j)
110 for (uint k = 0; k < j; ++k)
112 B[j][k] = A[j][k] * rho + C[j][k] * (T(1) - rho);
118 for (uint j = 0; j != size; ++j)
120 for (uint k = 0; k < j; ++k)
122 B[j][k] = A[j][k] * rho;
126 Cholesky<T>(L, B, size, temp);
132 if (++compteur > maxLoopCount)