public Digit(Monoid <V> m, U u1, U u2, U u3) { M = m; Digits.Add(u1); Digits.Add(u2); Digits.Add(u3); }
public Node(Monoid <V> m, U u1, U u2) { ConcreteMonoid = m; Nodes.Add(u1); Nodes.Add(u2); PreCalcMeasure = ConcreteMonoid.BinaryOperator(u1.Measure(), u2.Measure()); }
public Node(Monoid <V> m, List <U> uu) { ConcreteMonoid = m; Nodes = uu; PreCalcMeasure = ConcreteMonoid.Zero; foreach (var u in Nodes) { PreCalcMeasure = ConcreteMonoid.BinaryOperator(PreCalcMeasure, u.Measure()); } }
public static FingerTree <T, M> FromSequence(IEnumerable <T> sequence, Monoid <M> m) { var sequenceEnum = sequence.GetEnumerator(); FingerTree <T, M> r = new EmptyFingerTree <T, M>(m); while (sequenceEnum.MoveNext()) { r = r.PushRight(sequenceEnum.Current); } return(r); }
public Node(Monoid <V> m, U u1, U u2, U u3) { ConcreteMonoid = m; Nodes.Add(u1); Nodes.Add(u2); Nodes.Add(u3); PreCalcMeasure = ConcreteMonoid.Zero; foreach (var u in Nodes) { PreCalcMeasure = ConcreteMonoid.BinaryOperator(PreCalcMeasure, u.Measure()); } }
public static List <Node <T, M> > ListOfNodes(Monoid <M> m, List <T> tt) { var list = new List <Node <T, M> >(); Node <T, M> next = null; if (tt.Count < 4) { next = new Node <T, M>(m, tt); list.Add(next); return(list); } next = new Node <T, M>(m, new List <T>(tt.GetRange(0, 3))); list.Add(next); list.AddRange(ListOfNodes(m, tt.GetRange(3, tt.Count - 3))); return(list); }
public DeepFingerTree(Monoid <M> m, Digit <T, M> f, FingerTree <Node <T, M>, M> ft, Digit <T, M> b) { if (f.Digits.Count > 0) { _m = m; _leftDigits = f; _fingerTree = ft; _rightDigits = b; PreCalcMeasure = _m.Zero; PreCalcMeasure = _m.BinaryOperator(PreCalcMeasure, f.Measure()); PreCalcMeasure = _m.BinaryOperator(PreCalcMeasure, ft.Measure()); PreCalcMeasure = _m.BinaryOperator(PreCalcMeasure, b.Measure()); } else { throw new Exception("oops"); } }
public SingleFingerTree(Monoid <M> m, T t) { _m = m; _t = t; }
public EmptyFingerTree(Monoid <M> m) { _m = m; }
public Digit(Monoid <V> m, List <U> uu) { M = m; Digits = uu; }
public Digit(Monoid <V> m, U u1) { M = m; Digits.Add(u1); }