Exemplo n.º 1
0
 public bool ValueAtPoints(IMom[] par, bool[] cpar, MomEdit res)
 {
     if (!cpar[1])
     {
         return(false);
     }
     res.CopyValue(par[0]);
     return(true);
 }
Exemplo n.º 2
0
 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, "Деление на ноль");
     }
 }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
 //Добавляет к значению res мгновенную ошибку с текстом text
 protected void AddError(MomEdit res, string text)
 {
     res.MakeDefaultValue();
     res.AddError(CalcParam.Project.ErrMomFactory.MakeError(CalcParam, text));
 }
Exemplo n.º 6
0
 public void PlusInt(IMom[] par, MomEdit res)
 {
     res.Integer = par[0].Integer + par[1].Integer;
 }
Exemplo n.º 7
0
 public void UnaryMinusReal(IMom[] par, MomEdit res)
 {
     res.Real = -par[0].Real;
 }
Exemplo n.º 8
0
 public void PlusReal(IMom[] par, MomEdit res)
 {
     res.Real = par[0].Real + par[1].Real;
 }
Exemplo n.º 9
0
 public void MinusFromTime(IMom[] par, MomEdit res)
 {
     try { res.Date = par[0].Date.AddSeconds(-par[1].Real); }
     catch { res.Date = Different.MinDate; }
 }
Exemplo n.º 10
0
 public void MinusTime(IMom[] par, MomEdit res)
 {
     res.Real = par[0].Date.Subtract(par[1].Date).TotalSeconds;
 }
Exemplo n.º 11
0
 public void MinusReal(IMom[] par, MomEdit res)
 {
     res.Real = par[0].Real - par[1].Real;
 }
Exemplo n.º 12
0
 public void MinusInt(IMom[] par, MomEdit res)
 {
     res.Integer = par[0].Integer - par[1].Integer;
 }
Exemplo n.º 13
0
 public void PlusString(IMom[] par, MomEdit res)
 {
     res.String = par[0].String + par[1].String;
 }
Exemplo n.º 14
0
 public void PlusToTime(IMom[] par, MomEdit res)
 {
     try { res.Date = par[0].Date.AddSeconds(par[1].Real); }
     catch { res.Date = Different.MaxDate; }
 }
Exemplo n.º 15
0
 private bool MomFun(IMom[] par, bool[] cpar, MomEdit res)
 {
     _scalarCalculate(par, res);
     return(true);
 }
Exemplo n.º 16
0
        //Вычисление значения функции
        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);
        }
Exemplo n.º 17
0
 public void UnaryMinusInt(IMom[] par, MomEdit res)
 {
     res.Integer = -par[0].Integer;
 }