public MicroString(EncodedFlow encFlow, ValueFlowCoder vfc) { _encFlow = encFlow; _targets = encFlow.Targets; _vfc = vfc; if (_encFlow.NumSymbols == 0) { SelWidth = 0; } else { SelWidth = MathExt.CeilLog2(_encFlow.NumSymbols); } }
public MergedFlow(EncodedFlow encFlow0, EncodedFlow encFlow1) { Debug.Assert(encFlow0.NumSymbols > 1); Debug.Assert(encFlow1.NumSymbols > 1); _encFlow0 = encFlow0; _encFlow1 = encFlow1; Targets = encFlow0.Targets.Concat(encFlow1.Targets).ToArray(); int[] encMap0, encMap1; EncodedSymbols = MicrocodeAlgorithms.EncodeTogether( encFlow0.EncodedSymbols, encFlow0.NumSymbols, encFlow1.EncodedSymbols, encFlow1.NumSymbols, out encMap0, out encMap1); _encMap0 = encMap0; _encMap1 = encMap1; NumSymbols = _encMap0.Length; Score = MathExt.CeilLog2(encFlow0.NumSymbols) + MathExt.CeilLog2(encFlow1.NumSymbols) - Math.Log(NumSymbols, 2.0); }
public MicroString(EncodedFlow encFlow, ValueFlowCoder vfc) { _encFlow = encFlow; _targets = encFlow.Targets; _vfc = vfc; if (_encFlow.NumSymbols == 0) SelWidth = 0; else SelWidth = MathExt.CeilLog2(_encFlow.NumSymbols); }
public MergedFlow(EncodedFlow encFlow0, EncodedFlow encFlow1) { Debug.Assert(encFlow0.NumSymbols > 1); Debug.Assert(encFlow1.NumSymbols > 1); _encFlow0 = encFlow0; _encFlow1 = encFlow1; Targets = encFlow0.Targets.Concat(encFlow1.Targets).ToArray(); int[] encMap0, encMap1; EncodedSymbols = MicrocodeAlgorithms.EncodeTogether( encFlow0.EncodedSymbols, encFlow0.NumSymbols, encFlow1.EncodedSymbols, encFlow1.NumSymbols, out encMap0, out encMap1); _encMap0 = encMap0; _encMap1 = encMap1; NumSymbols = _encMap0.Length; Score = MathExt.CeilLog2(encFlow0.NumSymbols) + MathExt.CeilLog2(encFlow1.NumSymbols) - Math.Log(NumSymbols, 2.0); }