public Iδ3ParameterElement Calculate( Iδ3ParameterElementFactory δ3ParameterElementFactory, IdIndexElement dIndexElement, IrIndexElement rIndexElement, IsIndexElement sIndexElement, It t, IW W, Iβ β, Iγ γ) { int value = 0; int γSum = t.GetNthElementsAt( dIndexElement.Value.Value.Value, t.GetT() - W.Value.Value.Value + dIndexElement.Value.Value.Value, W.Value.Value.Value) .Select( y => γ.GetElementAtAsint( rIndexElement, y)) .Sum(); int βAsint = β.GetElementAtAsint( sIndexElement, rIndexElement, dIndexElement); if (βAsint > 0) { // Case (i) if ((γSum % βAsint) == 0) { value = γSum / βAsint; } else if ((γSum % βAsint) != 0) { // Case (ii) if (βAsint < (γSum / 2)) { value = (int)Math.Floor( (decimal)(γSum / βAsint)); } // Case (iii) else if ((βAsint > (γSum / 2)) && (βAsint < γSum)) { value = (int)Math.Floor( (decimal)(γSum / (γSum - βAsint))); } } } return(δ3ParameterElementFactory.Create( sIndexElement, rIndexElement, dIndexElement, value)); }
public Iδ3ParameterElementFactory Createδ3ParameterElementFactory() { Iδ3ParameterElementFactory factory = null; try { factory = new δ3ParameterElementFactory(); } catch (Exception exception) { this.Log.Error( exception.Message, exception); } return(factory); }
public Iδ3 Calculate( Iδ3ParameterElementFactory δ3ParameterElementFactory, Iδ3Factory δ3Factory, Iδ3ParameterElementCalculation δ3ParameterElementCalculation, Isrd srd, It t, IW W, Iβ β, Iγ γ) { return(δ3Factory.Create( srd.Value .Select(x => δ3ParameterElementCalculation.Calculate( δ3ParameterElementFactory, x.dIndexElement, x.rIndexElement, x.sIndexElement, t, W, β, γ)) .ToImmutableList())); }