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