public List <double> GetSamplesForCOL(SymbolicValue COL) { if (SamplesForCOL.ContainsKey(COL)) { return(SamplesForCOL[COL]); } IEnumerable <double> samples = null; if (AmountByCOL.ContainsKey(COL)) { samples = AmountByCOL[COL]; } if (!COLEquivalencyMap.ContainsKey(COL)) { SamplesForCOL.Add(COL, samples.ToList <double>()); return(SamplesForCOL[COL]); } foreach (SymbolicValue EquivalentCOL in COLEquivalencyMap[COL]) { if (EquivalentCOL.Equals(COL)) { continue; } if (AmountByCOL.ContainsKey(EquivalentCOL)) { if (samples == null) { samples = AmountByCOL[EquivalentCOL]; } else { samples = samples.Zip(AmountByCOL[EquivalentCOL], (a, b) => a + b); } } } SamplesForCOL.Add(COL, samples.ToList <double>()); return(SamplesForCOL[COL]); }
public double this[SymbolicValue COL] { get { if (TotalGUForCOL.ContainsKey(COL)) { return(TotalGUForCOL[COL]); } double total = 0.0; if (AmountByCOL.ContainsKey(COL)) { total += AmountByCOL[COL].Zip(FactorArray, (x, y) => x * y).Sum(); } // @FACTORARRAY REPLACE //if (AmountByCOL.ContainsKey(COL)) // total += AmountByCOL[COL].Sum() * Factor; if (COLEquivalencyMap.ContainsKey(COL)) { foreach (SymbolicValue EquivalentCOL in COLEquivalencyMap[COL]) { if (EquivalentCOL.Equals(COL)) { continue; } if (AmountByCOL.ContainsKey(EquivalentCOL)) { total += AmountByCOL[EquivalentCOL].Zip(FactorArray, (x, y) => x * y).Sum(); // @FACTORARRAY REPLACE //total += AmountByCOL[EquivalentCOL].Sum() * Factor; } } } TotalGUForCOL.Add(COL, total); return(TotalGUForCOL[COL]); } }