internal static Tuple <RankedTree <a>, FSharpList <RankedTree <a> > > removeMinTree <a>(IComparer <a> comparer, FSharpList <RankedTree <a> > heap) { FSharpList <RankedTree <a> > fsharpList1 = heap; if (fsharpList1.get_TailOrNull() == null) { throw new InvalidOperationException("The heap is empty."); } FSharpList <RankedTree <a> > fsharpList2 = fsharpList1; if (fsharpList2.get_TailOrNull().get_TailOrNull() == null) { return(new Tuple <RankedTree <a>, FSharpList <RankedTree <a> > >(fsharpList2.get_HeadOrDefault(), FSharpList <RankedTree <a> > .get_Empty())); } FSharpList <RankedTree <a> > tailOrNull = fsharpList2.get_TailOrNull(); RankedTree <a> headOrDefault = fsharpList2.get_HeadOrDefault(); Tuple <RankedTree <a>, FSharpList <RankedTree <a> > > tuple = BinomialHeap.removeMinTree <a>(comparer, tailOrNull); FSharpList <RankedTree <a> > fsharpList3 = tuple.Item2; RankedTree <a> rankedTree = tuple.Item1; FSharpChoice <Unit, Unit, Unit> fsharpChoice = BinomialHeap.LTGTEQ(comparer.Compare(BinomialHeap.root <a>(headOrDefault), BinomialHeap.root <a>(rankedTree))); if (fsharpChoice is FSharpChoice <Unit, Unit, Unit> .Choice1Of3 || fsharpChoice is FSharpChoice <Unit, Unit, Unit> .Choice3Of3) { return(new Tuple <RankedTree <a>, FSharpList <RankedTree <a> > >(headOrDefault, tailOrNull)); } return(new Tuple <RankedTree <a>, FSharpList <RankedTree <a> > >(rankedTree, FSharpList <RankedTree <a> > .Cons(headOrDefault, fsharpList3))); }
public static Frame <c, a> frame <a, b, c>(IEnumerable <Tuple <TLeft, TRight> > columns) where b : ISeries <c> { Tuple <a[], b[]> tuple1 = ArrayModule.Unzip <TLeft, TRight>((Tuple <M0, M1>[])ArrayModule.OfSeq <Tuple <TLeft, TRight> >((IEnumerable <M0>)columns)); b[] values = tuple1.Item2; a[] keys = tuple1.Item1; Tuple <FSharpList <IVectorBuilder>, FSharpList <IIndexBuilder> > tuple2 = new Tuple <FSharpList <IVectorBuilder>, FSharpList <IIndexBuilder> >((FSharpList <IVectorBuilder>)ListModule.OfSeq <IVectorBuilder>(SeqModule.Distinct <IVectorBuilder>((IEnumerable <M0>)SeqModule.ToList <IVectorBuilder>((IEnumerable <M0>) new FFrameextensions.vbs <b, c>(values, default(b), (IEnumerator <b>)null, 0, (IVectorBuilder)null)))), (FSharpList <IIndexBuilder>)ListModule.OfSeq <IIndexBuilder>(SeqModule.Distinct <IIndexBuilder>((IEnumerable <M0>)SeqModule.ToList <IIndexBuilder>((IEnumerable <M0>) new FFrameextensions.ibs <b, c>(values, default(b), (IEnumerator <b>)null, 0, (IIndexBuilder)null))))); Tuple <IVectorBuilder, IIndexBuilder> tuple3; if (tuple2.Item1.get_TailOrNull() != null) { FSharpList <IVectorBuilder> fsharpList1 = tuple2.Item1; if (fsharpList1.get_TailOrNull().get_TailOrNull() == null && tuple2.Item2.get_TailOrNull() != null) { FSharpList <IIndexBuilder> fsharpList2 = tuple2.Item2; if (fsharpList2.get_TailOrNull().get_TailOrNull() == null) { tuple3 = new Tuple <IVectorBuilder, IIndexBuilder>(fsharpList1.get_HeadOrDefault(), fsharpList2.get_HeadOrDefault()); goto label_5; } } } tuple3 = new Tuple <IVectorBuilder, IIndexBuilder>(FVectorBuilderimplementation.VectorBuilder.Instance, FIndexBuilderimplementation.IndexBuilder.Instance); label_5: Tuple <IVectorBuilder, IIndexBuilder> tuple4 = tuple3; IVectorBuilder vectorBuilder = tuple4.Item1; return(FrameUtils.fromColumns <c, a, b>(tuple4.Item2, vectorBuilder, new Series <TLeft, TRight>(keys, values))); }
public static FSharpList <RankedTree <a> > insertTree <a>(IComparer <a> comparer, RankedTree <a> t, FSharpList <RankedTree <a> > ts) { while (true) { FSharpList <RankedTree <a> > fsharpList1 = ts; if (fsharpList1.get_TailOrNull() != null) { FSharpList <RankedTree <a> > fsharpList2 = fsharpList1; FSharpList <RankedTree <a> > tailOrNull = fsharpList2.get_TailOrNull(); RankedTree <a> headOrDefault = fsharpList2.get_HeadOrDefault(); if (BinomialHeap.rank <a>(t) >= BinomialHeap.rank <a>(headOrDefault)) { IComparer <a> comparer1 = comparer; RankedTree <a> rankedTree = BinomialHeap.link <a>(comparer, t, headOrDefault); ts = tailOrNull; t = rankedTree; comparer = comparer1; } else { goto label_3; } } else { break; } } return(FSharpList <RankedTree <a> > .Cons(t, FSharpList <RankedTree <a> > .get_Empty())); label_3: return(FSharpList <RankedTree <a> > .Cons(t, ts)); }
public static FSharpList <RankedTree <a> > mergeTrees <a>(IComparer <a> comparer, FSharpList <RankedTree <a> > _arg1_0, FSharpList <RankedTree <a> > _arg1_1) { Tuple <FSharpList <RankedTree <a> >, FSharpList <RankedTree <a> > > tuple = new Tuple <FSharpList <RankedTree <a> >, FSharpList <RankedTree <a> > >(_arg1_0, _arg1_1); FSharpList <RankedTree <a> > fsharpList1; if (tuple.Item2.get_TailOrNull() != null) { FSharpList <RankedTree <a> > fsharpList2 = tuple.Item2; if (tuple.Item1.get_TailOrNull() != null) { FSharpList <RankedTree <a> > fsharpList3 = tuple.Item1; FSharpList <RankedTree <a> > tailOrNull1 = fsharpList2.get_TailOrNull(); FSharpList <RankedTree <a> > fsharpList4 = tuple.Item2; FSharpList <RankedTree <a> > tailOrNull2 = fsharpList3.get_TailOrNull(); FSharpList <RankedTree <a> > fsharpList5 = tuple.Item1; RankedTree <a> headOrDefault1 = fsharpList2.get_HeadOrDefault(); RankedTree <a> headOrDefault2 = fsharpList3.get_HeadOrDefault(); int num1 = BinomialHeap.rank <a>(headOrDefault2); int num2 = BinomialHeap.rank <a>(headOrDefault1); FSharpChoice <Unit, Unit, Unit> fsharpChoice = BinomialHeap.LTGTEQ(num1 >= num2 ? (num1 > num2 ? 1 : 0) : -1); if (fsharpChoice is FSharpChoice <Unit, Unit, Unit> .Choice2Of3) { return(FSharpList <RankedTree <a> > .Cons(headOrDefault1, BinomialHeap.mergeTrees <a>(comparer, fsharpList5, tailOrNull1))); } if (!(fsharpChoice is FSharpChoice <Unit, Unit, Unit> .Choice3Of3)) { return(FSharpList <RankedTree <a> > .Cons(headOrDefault2, BinomialHeap.mergeTrees <a>(comparer, tailOrNull2, fsharpList4))); } return(BinomialHeap.insertTree <a>(comparer, BinomialHeap.link <a>(comparer, headOrDefault2, headOrDefault1), BinomialHeap.mergeTrees <a>(comparer, tailOrNull2, tailOrNull1))); } fsharpList1 = tuple.Item2; } else { fsharpList1 = tuple.Item1; } return(fsharpList1); }