/// <summary>
 /// Given a decomposition method, returns its name.
 /// </summary>
 /// <param name="decomposition"> The decomposition method </param>
 /// <returns> The name of the decomposition method (null if not found) </returns>
 public static string getDecompositionName <T1>(Decomposition <T1> decomposition)
 {
     if (decomposition == null)
     {
         return(null);
     }
     return(INSTANCE_NAMES[decomposition.GetType()]);
 }
 static DecompositionFactory()
 {
     STATIC_INSTANCES = new Dictionary <>();
     STATIC_INSTANCES[LU_COMMONS_NAME] = LU_COMMONS;
     STATIC_INSTANCES[QR_COMMONS_NAME] = QR_COMMONS;
     STATIC_INSTANCES[SV_COMMONS_NAME] = SV_COMMONS;
     INSTANCE_NAMES = new Dictionary <>();
     INSTANCE_NAMES[LU_COMMONS.GetType()] = LU_COMMONS_NAME;
     INSTANCE_NAMES[QR_COMMONS.GetType()] = QR_COMMONS_NAME;
     INSTANCE_NAMES[SV_COMMONS.GetType()] = SV_COMMONS_NAME;
 }