private double GetCoefficient() { return(CoefficientsLine .Skip(myCoefSublineStart) .OrderBy(_ => Math.Abs(_.Value)) .Sum(_ => _.Value)); }
internal override EquationParserState HandleClosingBracketOverride(Bracket bracket, int charIndex) { var bracketYieldsConstants = CoefficientsLine .Skip(bracket.CoefficientOrder) .All(_ => _.Type == CoefficientType.Constant); return(bracketYieldsConstants ? new CoefficientYieldedFromBracketState(VariableAggregator, BracketsLine, CoefficientsLine, bracket.CoefficientOrder) : (EquationParserState) new AwaitSummandState(VariableAggregator, BracketsLine, CoefficientsLine)); }
internal override EquationParserState HandleClosingBracketOverride(Bracket bracket, int charIndex) { // fixing variable coefficient, because it is not added yet myCoefficient *= bracket.BracketMultiplier; AddVariable(); var bracketYieldsConstants = CoefficientsLine .Skip(bracket.CoefficientOrder) .All(_ => _.Type == CoefficientType.Constant); return(bracketYieldsConstants ? (EquationParserState) new CoefficientYieldedFromBracketState(VariableAggregator, BracketsLine, CoefficientsLine, bracket.CoefficientOrder) : new AwaitSummandState(VariableAggregator, BracketsLine, CoefficientsLine)); }
private void FixCoefficients() { // all zero ranked coefficients after opening bracket should be removed now for (var i = CoefficientsLine.Count - 1; i >= myCoefSublineStart; i--) { var coefficient = CoefficientsLine[i]; // OPTIMIZATION: // we just make the value of coefficients equal to 0 // it will automatically fix variable with zero rank // // no need in this: // var zeroRankVariable = VariableAggregator[...]; // zeroRankVariable.Coefficients.Remove(coefficient); coefficient.Value = 0.0; CoefficientsLine.RemoveAt(i); } }