/// <summary>
 /// Instancia uma nova instância de objectos do tipo <see cref="SymmetricLdlDecompLinearSystemAlgorithm{CoeffType}"/>.
 /// </summary>
 /// <param name="decompositionAlgorithm">O algoritmo da decomposição.</param>
 public SymmetricLdlDecompLinearSystemAlgorithm(
     ATriangDiagSymmMatrixDecomp <CoeffType> decompositionAlgorithm)
 {
     if (decompositionAlgorithm == null)
     {
         throw new ArgumentNullException("decompositionAlgorithm");
     }
     else
     {
         this.decompositionAlgorithm   = decompositionAlgorithm;
         this.independentVectorFactory = m => new ArrayMathVector <CoeffType>(m);
         this.basisVectorFactory       = (m, d) => new ArrayMathVector <CoeffType>(m, d);
     }
 }
 /// <summary>
 /// Instancia uma nova instância de objectos do tipo <see cref="SymmetricLdlDecompLinearSystemAlgorithm{CoeffType}"/>.
 /// </summary>
 /// <param name="decompositionAlgorithm">O algoritmo da decomposição.</param>
 /// <param name="independentVectorFactory">
 /// O delegado responsável pela criação da matriz associada ao vector independente da solução,
 /// devendo ser possível explicitar um valor por defeito.
 /// </param>
 /// <param name="basisVectorFactory">
 /// O delegado responsável pela criação das matrizes associadas aos vectores da base da solução.
 /// </param>
 public SymmetricLdlDecompLinearSystemAlgorithm(
     ATriangDiagSymmMatrixDecomp <CoeffType> decompositionAlgorithm,
     Func <int, IMathVector <CoeffType> > independentVectorFactory,
     Func <int, CoeffType, IMathVector <CoeffType> > basisVectorFactory)
 {
     if (decompositionAlgorithm == null)
     {
         throw new ArgumentNullException("decompositionAlgorithm");
     }
     else if (independentVectorFactory == null)
     {
         throw new ArgumentNullException("independentVectorFactory");
     }
     else if (basisVectorFactory == null)
     {
         throw new ArgumentNullException("basisVectorFactory");
     }
     else
     {
         this.decompositionAlgorithm   = decompositionAlgorithm;
         this.independentVectorFactory = independentVectorFactory;
         this.basisVectorFactory       = basisVectorFactory;
     }
 }