private void btnGeneratePolynom_Click(object sender, RoutedEventArgs e)
        {
            IPolynom p = null;

            if (sender == btnGenerateSecondDegree)
            {
                p = new SecondDegreePolynom();
                p.SetParameter("a", PrimesBigInteger.ValueOf(3));
                p.SetParameter("b", PrimesBigInteger.ValueOf(7));
                p.SetParameter("c", PrimesBigInteger.ValueOf(13));
                m_InputControlPolynom.SetText(InputRangeControl.FreeFrom, "0");
                m_InputControlPolynom.SetText(InputRangeControl.FreeTo, "49");

                m_InputControlPolynom.SetText(InputRangeControl.CalcFromFactor, "0");
                m_InputControlPolynom.SetText(InputRangeControl.CalcFromBase, "2");
                m_InputControlPolynom.SetText(InputRangeControl.CalcFromExp, "3");
                m_InputControlPolynom.SetText(InputRangeControl.CalcFromSum, "-1");
                m_InputControlPolynom.SetText(InputRangeControl.CalcToFactor, "1");
                m_InputControlPolynom.SetText(InputRangeControl.CalcToBase, "7");
                m_InputControlPolynom.SetText(InputRangeControl.CalcToExp, "2");
                m_InputControlPolynom.SetText(InputRangeControl.CalcToSum, "0");
            }
            else if (sender == btnGeneratePrimesEuler)
            {
                p = new EulerPolynom();
                m_InputControlPolynom.SetText(InputRangeControl.FreeFrom, "0");
                m_InputControlPolynom.SetText(InputRangeControl.FreeTo, "39");
            }
            if (p != null)
            {
                m_InputControlPolynom.Polynom = p;
                SetInputControl(m_InputControlPolynom);
            }
        }
        void m_InputControlPolynomRange_Execute(
            IPolynom p,
            PrimesBigInteger from,
            PrimesBigInteger to,
            PrimesBigInteger numberOfCalculations,
            PrimesBigInteger numberOfFormulars,
            IList <KeyValuePair <string, Primes.Library.Range> > parameters)
        {
            log.Clear();
            log.Columns                                 = 2;
            log.ShowCounter                             = false;
            m_PolynomRangeExecuter.From                 = from;
            m_PolynomRangeExecuter.To                   = to;
            m_PolynomRangeExecuter.Function             = p;
            m_PolynomRangeExecuter.Parameters           = parameters;
            m_PolynomRangeExecuter.NumberOfCalculations = numberOfCalculations;
            m_PolynomRangeExecuter.NumberOfFormulars    = numberOfFormulars;

            m_PolynomRangeExecuter.Execute();
        }
Пример #3
0
 public InputControlPolynom(IPolynom expression)
     : this()
 {
     Polynom = expression;
 }
 void m_InputControlPolynom_Execute(PrimesBigInteger from, PrimesBigInteger to, IPolynom p)
 {
     log.Clear();
     log.Columns     = 2;
     log.ShowCounter = true;
     m_ExpressionExecuter.Function = p;
     m_ExpressionExecuter.Execute(from, to);
 }
        void m_PolynomRangeExecuter_FunctionResult(IPolynom p, PrimesBigInteger primesCount, PrimesBigInteger primesCountReal, PrimesBigInteger counter)
        {
            int row = log.NewLine();

            log.Info(p.ToString(), 0, row);
            PrimesBigInteger percent        = primesCount.Multiply(PrimesBigInteger.ValueOf(100)).Divide(counter);
            PrimesBigInteger percentAbsolut = primesCountReal.Multiply(PrimesBigInteger.ValueOf(100)).Divide(counter);

            /*Most Primes*/
            if (m_MostPrimes == null)
            {
                m_MostPrimes = percent;
                m_ListMostPrimes.Add((p as SecondDegreePolynom).Clone() as IPolynom);
            }
            else
            {
                if (m_MostPrimes.Equals(percent))
                {
                    m_ListMostPrimes.Add((p as SecondDegreePolynom).Clone() as IPolynom);
                }
                else
                {
                    if (m_MostPrimes.CompareTo(percent) < 0)
                    {
                        m_MostPrimes = percent;
                        m_ListMostPrimes.Clear();
                        m_ListMostPrimes.Add((p as SecondDegreePolynom).Clone() as IPolynom);
                    }
                }
            }

            if (m_MostPrimesAbsolut == null)
            {
                m_MostPrimesAbsolut = percentAbsolut;
                m_ListMostPrimesAbsolut.Add((p as SecondDegreePolynom).Clone() as IPolynom);
            }
            else
            {
                if (m_MostPrimesAbsolut.Equals(percentAbsolut))
                {
                    m_ListMostPrimesAbsolut.Add((p as SecondDegreePolynom).Clone() as IPolynom);
                }
                else
                {
                    if (m_MostPrimesAbsolut.CompareTo(percentAbsolut) < 0)
                    {
                        m_MostPrimesAbsolut = percentAbsolut;
                        m_ListMostPrimesAbsolut.Clear();
                        m_ListMostPrimesAbsolut.Add((p as SecondDegreePolynom).Clone() as IPolynom);
                    }
                }
            }

            /*Least Primes*/
            if (m_LeastPrimes == null)
            {
                m_LeastPrimes = percent;
                m_ListLeastPrimes.Add((p as SecondDegreePolynom).Clone() as IPolynom);
            }
            else
            {
                if (m_LeastPrimes.Equals(percent))
                {
                    m_ListLeastPrimes.Add((p as SecondDegreePolynom).Clone() as IPolynom);
                }
                else
                {
                    if (m_LeastPrimes.CompareTo(percent) > 0)
                    {
                        m_LeastPrimes = percent;
                        m_ListLeastPrimes.Clear();
                        m_ListLeastPrimes.Add((p as SecondDegreePolynom).Clone() as IPolynom);
                    }
                }
            }

            m_ResultCounter  = m_ResultCounter.Add(counter);
            m_PrimesCounter  = m_PrimesCounter.Add(primesCount);
            m_PolynomCounter = m_PolynomCounter.Add(PrimesBigInteger.One);
            log.Info(string.Format(Primes.Resources.lang.WpfControls.Generation.PrimesGeneration.statGenerated, new object[] { primesCount, percent, primesCountReal }), 1, row);
        }