public bool ValueAtPoints(IMom[] par, bool[] cpar, MomEdit res) { if (!cpar[1]) { return(false); } res.CopyValue(par[0]); return(true); }
public void Divide(IMom[] par, MomEdit res) { if (par[0].Real == 0) { res.Error = par[0].Error; } if (par[1].Real != 0) { res.Real = par[0].Real / par[1].Real; } else { AddError(res, "Деление на ноль"); } }
public void MultiplyReal(IMom[] par, MomEdit res) { double m0 = par[0].Real, m1 = par[1].Real; if (m0 == 0) { res.Error = par[0].Error; } if (m1 == 0) { res.Error = par[1].Error; } if (m0 == 0 && m1 == 0) { res.Error = MinError(par); } res.Real = m0 * m1; }
public void MultiplyInt(IMom[] par, MomEdit res) { int m0 = par[0].Integer, m1 = par[1].Integer; if (m0 == 0) { res.Error = par[0].Error; } if (m1 == 0) { res.Error = par[1].Error; } if (m0 == 0 && m1 == 0) { res.Error = MinError(par); } res.Integer = m0 * m1; }
//Добавляет к значению res мгновенную ошибку с текстом text protected void AddError(MomEdit res, string text) { res.MakeDefaultValue(); res.AddError(CalcParam.Project.ErrMomFactory.MakeError(CalcParam, text)); }
public void PlusInt(IMom[] par, MomEdit res) { res.Integer = par[0].Integer + par[1].Integer; }
public void UnaryMinusReal(IMom[] par, MomEdit res) { res.Real = -par[0].Real; }
public void PlusReal(IMom[] par, MomEdit res) { res.Real = par[0].Real + par[1].Real; }
public void MinusFromTime(IMom[] par, MomEdit res) { try { res.Date = par[0].Date.AddSeconds(-par[1].Real); } catch { res.Date = Different.MinDate; } }
public void MinusTime(IMom[] par, MomEdit res) { res.Real = par[0].Date.Subtract(par[1].Date).TotalSeconds; }
public void MinusReal(IMom[] par, MomEdit res) { res.Real = par[0].Real - par[1].Real; }
public void MinusInt(IMom[] par, MomEdit res) { res.Integer = par[0].Integer - par[1].Integer; }
public void PlusString(IMom[] par, MomEdit res) { res.String = par[0].String + par[1].String; }
public void PlusToTime(IMom[] par, MomEdit res) { try { res.Date = par[0].Date.AddSeconds(par[1].Real); } catch { res.Date = Different.MaxDate; } }
private bool MomFun(IMom[] par, bool[] cpar, MomEdit res) { _scalarCalculate(par, res); return(true); }
//Вычисление значения функции public override ISingleVal CalculateSingle(ISingleVal[] par) { var mpar = new IMom[par.Length]; var cpar = new bool[par.Length]; for (int i = 0; i < par.Length; i++) { cpar[i] = false; } var lists = new List <MList>(); bool isMom = true; for (int i = 0; i < par.Length; i++) { var mom = par[i] as Mom; if (mom != null) { mpar[i] = mom; } else { isMom = false; var moms = ((MomList)par[i]).Moments; if (moms.Count == 0 && this is ScalarFunction) { return(new MomList(DataType)); } lists.Add(new MList(moms, i)); } } if (isMom)//Одно значение { var mres = new MomEdit(DataType, MaxError(mpar)); MomCalculate(mpar, cpar, mres); return(mres.ToMom()); } //Список значений var rlist = new MomList(DataType); bool e = true; while (e) { e = false; DateTime ctime = Different.MaxDate; foreach (var list in lists) { if (list.NextTime < ctime) { ctime = list.NextTime; } } if (ctime < Different.MaxDate) { e = true; for (int i = 0; i < cpar.Length; i++) { cpar[i] = false; } foreach (var list in lists) { if (list.NextTime == ctime) { list.Pos++; cpar[list.Num] = true; } mpar[list.Num] = ((MomList)par[list.Num]).Interpolation(CalcParam.Interpolation, list.Pos, ctime); } var temp = new MomEdit(DataType, ctime, MinError(mpar)); if (MomCalculate(mpar, cpar, temp)) { rlist.AddMomClone(temp); } } } return(rlist); }
public void UnaryMinusInt(IMom[] par, MomEdit res) { res.Integer = -par[0].Integer; }