public Complex Value(ParyX x, int pow) { int Xk = x.ElementAt(k); Dictionary <int, Complex> pows; if (values.ContainsKey(Xk)) { pows = values[Xk]; if (values[Xk].ContainsKey(pow)) { return(values[Xk][pow]); } } else { pows = new Dictionary <int, Complex>(); if (!values.ContainsKey(Xk)) { values.Add(Xk, pows); } } double PK = 1d / Pk; double phi = 2d * Math.PI * Xk * pow * PK; Complex value = new Complex(Math.Cos(phi), Math.Sin(phi)); if (!pows.ContainsKey(pow)) { pows.Add(pow, value); } return(value); }
public Complex Value(ParyX x) { lock (syncLock) { if (cache.ContainsKey(x)) { return(cache[x]); } Complex value = ONE_RE; for (int j = 0; j < Rj.Count; j++) { value *= (Rj[j].Value(x, n.Ak(Rj[j].GetK()))); } cache.Add(x, value); return(value); } }
public Complex Value(ParyX x) { return(Value(x, 1)); }