Пример #1
0
 public static RationalNumber operator *(RationalNumber a, RationalNumber b)
 {
     RationalNumber result = new RationalNumber();
     result.M = a.M * b.M;
     result.N = a.N * b.N;
     return reduction(result);
 }
Пример #2
0
 public static RationalNumber operator /(RationalNumber a, RationalNumber b)
 {
     RationalNumber result = new RationalNumber();
     result.M = a.M * Convert.ToUInt32(b.N);
     result.N = a.N * Convert.ToInt32(b.M);
     return reduction(result);
 }
Пример #3
0
 public static RationalNumber createFromString(string initialString)
 {
     Regex slash = new Regex("/");
     string[] two_numbers = slash.Split(initialString);
     RationalNumber result = new RationalNumber(Convert.ToInt32(two_numbers[0]),
                                                Convert.ToUInt32(two_numbers[1]));
     return result;
 }
Пример #4
0
 public static RationalNumber reduction(RationalNumber initial)
 {
     RationalNumber result = new RationalNumber(initial.N, initial.M);
     for (int divider = 2; divider <= result.M; divider++)
     {
         if (result.N % divider == 0 &&  result.M % divider == 0)
         {
             result.N /= divider;
             result.M /= Convert.ToUInt32(divider);
             return reduction(result);
                 break;
         }
     }
     return result;
 }
        public void Test(string text, int num, int denom, int lp, int p, bool detectEqual)
        {
            var e  = new RationalNumber(num, denom);
            var sb = new StringBuilder();

            var detector   = new LargeRepetitionDetector(sb, e, detectEqual);
            var repetition = new Repetition(0, 0);

            foreach (var c in text)
            {
                sb.Append(c);
                if (detector.TryDetect(out repetition))
                {
                    break;
                }
            }

            Assert.That(repetition, Is.EqualTo(new Repetition(lp, p)));
        }
Пример #6
0
    public static void Main(string[] args)
    {
        List<RationalNumber> curious = new List<RationalNumber>();

        for (uint numerator = 10; numerator < 98; numerator++)
        {
          for (uint denominator = numerator + 1; denominator < 100; denominator++)
          {
        RationalNumber rn = new RationalNumber(numerator, denominator);
        if (rn.IsCurious())
        {
          Console.WriteLine("Curious: " + rn);
          curious.Add(rn);
        }
          }
        }

        Console.WriteLine("Result: {0}", (curious[0] * curious[1] * curious[2] * curious[3]).Reduce().Denominator);
    }
        public static RationalNumber Sqrt(this RationalNumber x, RationalNumber epsilon)
        {
            if (x < 0)
            {
                throw new OverflowException("Cannot calculate square root from a negative number");
            }
            RationalNumber current = (decimal)Math.Sqrt((double)x.ToDecimal()), previous;

            do
            {
                previous = current;
                if (previous == 0)
                {
                    return(0);
                }
                current = (previous + (x / previous)) / 2;
            }while ((previous - current).Abs() > epsilon);
            return(current);
        }
Пример #8
0
 public RationalNumber Exprational(int power)
 {
     if (power > 0)
     {
         this.Numerator   = (int)Math.Pow(this.Numerator, power);
         this.Denominator = (int)Math.Pow(this.Denominator, power);
     }
     else if (power < 0)
     {
         RationalNumber nab = Abs();
         this.Numerator   = (int)Math.Pow(nab.Denominator, power);
         this.Denominator = (int)Math.Pow(nab.Numerator, power);
     }
     else //power = 0
     {
         this.Numerator   = 1;
         this.Denominator = 1;
     }
     return(this.Reduce());
 }
        public void Subtr(RationalNumber r)
        {
            if (r.p == 0)
            {
                return;
            }

            if (p == 0)
            {
                p = -r.p;
                q = r.q;

                return;
            }

            p  = (p * r.q) - (q * r.p);
            q *= r.q;

            Normalize();
        }
        public void Add(RationalNumber r)
        {
            if (r.p == 0)
            {
                return;
            }

            if (p == 0)
            {
                p = r.p;
                q = r.q;

                return;
            }

            p  = (p * r.q) + (q * r.p);
            q *= r.q;

            Normalize();
        }
        public void Mult(RationalNumber r)
        {
            if (r.p == 0)
            {
                p = 0;
                q = 1;

                return;
            }

            if (p == 0)
            {
                return;
            }

            p *= r.p;
            q *= r.q;

            Normalize();
        }
Пример #12
0
    private static RationalNumber Reduce(RationalNumber n)
    {
        int divider = (n.N >= n.D) ? n.N : n.D;

        while (n.N % divider != 0 || n.D % divider != 0)
        {
            divider--;
        }
        if (n.N > 0 && n.D < 0)
        {
            n.N *= -1;
            n.D  = Math.Abs(n.D);
        }
        else if (n.N < 0 && n.D < 0)
        {
            n.N = Math.Abs(n.N);
            n.D = Math.Abs(n.D);
        }
        return(new RationalNumber(n.N / divider, n.D / divider));
    }
        private static int BinarySearch(RationalNumber E, int alphabetSize, bool detectEqual)
        {
            int l = 0, r = alphabetSize;

            if (DetectsRepetition(detectEqual, new RationalNumber(r + 1, r), E))
            {
                throw new InvalidProgramStateException("Inconsistent exponent and alphabet values");
            }
            while (l + 1 < r)
            {
                var m = (r + l) / 2;
                if (DetectsRepetition(detectEqual, new RationalNumber(m + 1, m), E))
                {
                    l = m;
                }
                else
                {
                    r = m;
                }
            }
            return(l);
        }
Пример #14
0
        public bool IfSolutionExists()
        {
            RunGaussElimination();

            for (long i = m - 1; i >= 0; i--)
            {
                RationalNumber lastColumnCoeff = A.Get(i, lastColumnIndex);
                RationalNumber bVectorElem     = A.Get(i, bVectorIndex());

                if (!lastColumnCoeff.IsEqualsTo0())
                {
                    break;
                }

                if (lastColumnCoeff.IsEqualsTo0() && !bVectorElem.IsEqualsTo0())
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #15
0
        private static void GenerateSquare()
        {
            var Runs    = new[] { 100 };
            var lengths = new[] { 100000 };

            using (var outputStream = File.Open("D:\\statistics\\square4.txt", FileMode.Create))
                using (var output = new StreamWriter(outputStream))
                {
                    for (var i = 0; i < Runs.Length; ++i)
                    {
                        var logger = new ConsoleTextLengthLogger(1000);
                        var text   = new StringBuilder();

                        var e              = new RationalNumber(2);
                        var generator      = new RandomNotLastCharGenerator(text, 4);
                        var detector       = new RepetitionDetector(text, e, true);
                        var removeStrategy = new RemoveBorderStrategy();

                        Calculate(Runs[i], detector, lengths[i], removeStrategy, generator, logger, output);
                    }
                }
        }
Пример #16
0
        public static object Divide(object obj1, object obj2)
        {
            if (IsFixnum(obj1) && IsFixnum(obj2))
            {
                return(RationalNumber.Create(Convert.ToInt64(obj1), Convert.ToInt64(obj2)));
            }

            if (obj1 is RationalNumber)
            {
                RationalNumber number1 = (RationalNumber)obj1;

                if (IsFixnum(obj2))
                {
                    return(number1.DivideBy(Convert.ToInt64(obj2)));
                }

                if (obj2 is RationalNumber)
                {
                    return(number1.DivideBy((RationalNumber)obj2));
                }

                obj1 = number1.Value;
            }

            if (obj2 is RationalNumber)
            {
                RationalNumber number2 = (RationalNumber)obj2;

                if (IsFixnum(obj1))
                {
                    return(number2.DivideTo(Convert.ToInt64(obj1)));
                }

                obj2 = number2.Value;
            }

            return(Operators.DivideObject(obj1, obj2));
        }
        public void Test(int num, int denom, string text, int expectedLeftPosition, int expectedPeriod, bool detectEqual, bool result)
        {
            var e  = new RationalNumber(num, denom);
            var sb = new StringBuilder();

            var detector = new SmallRepetitionDetector(sb, e, detectEqual);

            Repetition repetition = new Repetition(0, 0);
            var        detected   = false;

            for (var i = 0; i < text.Length; ++i)
            {
                sb.Append(text[i]);
                if (detector.TryDetect(out repetition))
                {
                    detected = true;
                    break;
                }
            }

            Assert.That(detected, Is.EqualTo(result));
            Assert.That(repetition, Is.EqualTo(new Repetition(expectedLeftPosition, expectedPeriod)));
        }
Пример #18
0
    public static RationalNumber operator *(RationalNumber r1, RationalNumber r2)
    {
        var result = new RationalNumber((r1.num * r2.num), (r1.den * r2.den));


        if (result.num == 0)
        {
            result = new RationalNumber(result.num, (result.den / result.den));
        }
        else if (result.num == result.den)
        {
            result = new RationalNumber((result.num / result.num), (result.den / result.den));
        }
        else if (result.num % (GCD(r1, r2)) == 0)
        {
            result = new RationalNumber((result.num / (GCD(r1, r2))), (result.den / (GCD(r1, r2))));
        }

        Console.WriteLine("result is equal to: {0}", result.num);


        return(result);
    }
        private ICharGenerator GetCharGenerator(StringBuilder text, RationalNumber E, bool detectEqual)
        {
            int alphabetSize;

            if (!int.TryParse(TextBoxAlphabet.Text, out alphabetSize))
            {
                Raise("Alphabet size must be integer");
            }
            var index = ComboBoxCharGenerator.SelectedIndex;

            if (index < 0 || index > 1)
            {
                Raise("Select char generator");
            }
            switch (index)
            {
            case 0:
                return(new RandomCharGenerator(alphabetSize));

            default:
                return(new CleverCharGenerator(text, alphabetSize, E, detectEqual));
            }
        }
Пример #20
0
        /// <summary>
        /// 将字符串输入转化为矩阵
        /// </summary>
        /// <param name="data">一个以空格分割列元素,换行符分割行元素的字符串</param>
        /// <returns></returns>
        public static Mathematics.Matrix StringToMatrix(string data)
        {
            data = Regex.Replace(data, @"[ ]+", " ");

            string[]      rowsData = data.Split('\n');
            List <string> rows     = new List <string>();

            foreach (string row in rowsData)
            {
                if (string.IsNullOrEmpty(row))
                {
                    continue;
                }
                rows.Add(row.Trim());
            }

            int rowSize    = rows.Count;
            int columnSize = rows[0].Split(' ').Length;

            Mathematics.Matrix matrix = new Matrix(rowSize, columnSize);
            for (int row = 0; row < rowSize; row++)
            {
                List <string> elements = new List <string>();
                elements.AddRange(rows[row].Split(' '));
                while (elements.Count < columnSize)
                {
                    elements.Add("0/1");
                }

                for (int col = 0; col < columnSize; col++)
                {
                    matrix[row, col] = new RationalNumber(elements[col]);
                }
            }

            return(matrix);
        }
Пример #21
0
        private static void Generate3_7d4_plus()
        {
            using (var outputStream = File.Open("D:\\statistics\\binary_3_7d4+.txt", FileMode.Create))
                using (var output = new StreamWriter(outputStream))
                {
                    var Runs        = new[] { 100, 100, 100, 100, 100 };
                    var lengths     = new[] { 100, 200, 300, 400, 500 };
                    var e           = new RationalNumber(7, 4);
                    var detectEqual = false;

                    for (var i = 0; i < Runs.Length; ++i)
                    {
                        var length = lengths[i];
                        Console.WriteLine("Calculating conversion for length = {0}", length);
                        var text = new StringBuilder();

                        var generator      = new CleverCharGenerator(text, 3, e, detectEqual);
                        var detector       = new RepetitionDetector(text, e, detectEqual);
                        var removeStrategy = new RemoveBorderStrategy();

                        Calculate(Runs[i], detector, lengths[i], removeStrategy, generator, null, output);
                    }
                }
        }
        private RationalNumber GetExponent()
        {
            int numerator, denominator;

            if (!int.TryParse(TextBoxNumerator.Text, out numerator))
            {
                Raise("Numerator must be integer");
            }
            if (!int.TryParse(TextBoxDenominator.Text, out denominator))
            {
                Raise("Denominator must be integer");
            }
            if (denominator == 0)
            {
                Raise("Denominator can't be equal to 0");
            }
            var result = new RationalNumber(numerator, denominator);

            if (result <= new RationalNumber(1))
            {
                Raise("Exponent must be greater than 1");
            }
            return(result);
        }
Пример #23
0
    public RationalNumber Reduce()
    {
        bool isNegative = false;

        if (denominator < 0)
        {
            isNegative = true;
        }
        var i = Math.Abs(denominator);

        while (true)
        {
            if (numerator % i == 0 && denominator % i == 0)
            {
                break;
            }
            i--;
        }
        var newNum = (isNegative ? -numerator : numerator) / i;
        var newDen = (isNegative ? Math.Abs(denominator) : denominator) / i;
        var result = new RationalNumber(newNum, newDen);

        return(result);
    }
 public static VideoFormatDescription Match(Size imageSize, RationalNumber frameRate, RationalNumber sar, bool interlaced)
 {
     var result = Descriptions.Values.FirstOrDefault((v) => v.ImageSize.Equals(imageSize)
                                                         && (v.FrameRate.Equals(frameRate) || frameRate.Equals(RationalNumber.Zero))
                                                         && (v.SAR.Equals(sar) || sar.Equals(RationalNumber.Zero))
                                                         && v.Interlaced == interlaced);
     return result != null ? result : new VideoFormatDescription(imageSize, frameRate, sar, interlaced);
 }
Пример #25
0
        private void RunGaussElimination()
        {
            ITPLOptions tplOptions            = configuration.Get <ITPLOptions>();
            uint        gaussElimRunnersCount = tplOptions.GaussElimRunnersCount;

            long s = 0;

            long[] rowsToSubtract = new long[gaussElimRunnersCount];

            for (long k = 0; k < m; k++)
            {
                long i_max = -1;

                while (true)
                {
                    if (k + s == n)
                    {
                        return;
                    }

                    for (long i = k; i < m; i++)
                    {
                        if (!(A.Get(i, k + s).IsEqualsTo0()))
                        {
                            i_max = i;
                        }
                    }

                    if (i_max == -1)
                    {
                        s++;
                    }
                    else
                    {
                        break;
                    }
                }

                A.SwapRows(k, i_max);

                long p = k + s;

                SortedDictionary <long, RationalNumber> Mk = A.GetRow(k);
                RationalNumber Mkp = SparseMatrix.Get(Mk, p);

                long   rowsToProcessCount = m - (k + 1);
                long[] rowsToProcess      = new long[m];

                for (long w = 0; w < rowsToProcessCount; w++)
                {
                    long d = w + (k + 1);
                    rowsToProcess[d] = d;
                }

                long from = k + 1;

                while (true)
                {
                    SelectRows(
                        rowsToProcess,
                        from,
                        gaussElimRunnersCount,
                        rowsToSubtract,
                        out long rowsToSubtractCount);

                    if (rowsToSubtractCount == 0)
                    {
                        break;
                    }

                    Task[] tasks = new Task[rowsToSubtractCount];
                    List <RowSubtractorSparceMThreads> rowSubtractors = new();

                    for (int i = 0; i < rowsToSubtractCount; i++)
                    {
                        long row = rowsToSubtract[i];
                        RowSubtractorSparceMThreads rowSubtractor = new();

                        rowSubtractor.A        = A;
                        rowSubtractor.rowIndex = row;
                        rowSubtractor.m        = m;
                        rowSubtractor.n        = n;
                        rowSubtractor.p        = p;
                        rowSubtractor.Mk       = Mk;
                        rowSubtractor.Mkp      = Mkp;

                        rowSubtractors.Add(rowSubtractor);
                    }

                    TPLCollectionRunner <RowSubtractorSparceMThreads> rowSubtractorsRunner = new
                                                                                             (
                        rowSubtractors,
                        gaussElimRunnersCount,
                        WaitMethod.WaitAll,
                        _ => default !
Пример #26
0
 public void Divide()
 {
     Assert.AreEqual(2, Numbers.Divide(4, 2));
     Assert.AreEqual(4 / 3.0, Numbers.Divide(4, 3.0));
     Assert.AreEqual(RationalNumber.Create(3, 2), Numbers.Divide(3, 2));
     Assert.AreEqual(RationalNumber.Create(3, 4), Numbers.Divide(RationalNumber.Create(3, 2), 2));
     Assert.AreEqual(RationalNumber.Create(4, 3), Numbers.Divide(2, RationalNumber.Create(3, 2)));
     Assert.AreEqual(2.0 / (3.0 / 2), Numbers.Divide(2.0, RationalNumber.Create(3, 2)));
     Assert.AreEqual((3.0 / 2) / 2.0, Numbers.Divide(RationalNumber.Create(3, 2), 2.0));
     Assert.AreEqual(RationalNumber.Create(21, 10), Numbers.Divide(RationalNumber.Create(3, 2), RationalNumber.Create(5, 7)));
 }
Пример #27
0
        private bool FoundRepetition(Repetition repetition)
        {
            var exponent = new RationalNumber(text.Length - (repetition.LeftPosition + 1), repetition.Period);

            return(detectEqual ? exponent >= e : exponent > e);
        }
 static int RationalNumberComparer(RationalNumber rn1, RationalNumber rn2)
 {
     return (Convert.ToInt32(rn1.Numerator) / Convert.ToInt32(rn1.Denominator)) - (Convert.ToInt32(rn1.Numerator) / Convert.ToInt32(rn1.Denominator));
 }
Пример #29
0
 public void Multiply()
 {
     Assert.AreEqual(2, Numbers.Multiply(1, 2));
     Assert.AreEqual(2.2, Numbers.Multiply(1.1, 2));
     Assert.AreEqual(3, Numbers.Multiply(RationalNumber.Create(3, 2), 2));
     Assert.AreEqual(3, Numbers.Multiply(2, RationalNumber.Create(3, 2)));
     Assert.AreEqual(3.0, Numbers.Multiply(RationalNumber.Create(3, 2), 2.0));
     Assert.AreEqual(3.0, Numbers.Multiply(2.0, RationalNumber.Create(3, 2)));
     Assert.AreEqual(RationalNumber.Create(15, 14), Numbers.Multiply(RationalNumber.Create(3, 2), RationalNumber.Create(5, 7)));
 }
Пример #30
0
 public static double Expreal(this int realNumber, RationalNumber r)
 {
     return(Math.Exp(Math.Log(realNumber) * r.Numerator / r.Denominator));
 }
Пример #31
0
 public static double Expreal(this int realNumber, RationalNumber r)
 {
     throw new NotImplementedException("You need to implement this extension method.");
 }
Пример #32
0
 public static double Expreal(this int realNumber, RationalNumber r)
 => r.Expreal(realNumber);
Пример #33
0
 public static double Expreal(this int realNumber, RationalNumber r)
 {
     return(Math.Pow((double)realNumber, (double)(r.n) / (r.d)));
 }
 private VideoFormatDescription(Size imageSize, RationalNumber frameRate, RationalNumber sar, bool interlaced)
 {
     Format = TVideoFormat.Other;
     Interlaced = interlaced;
     ImageSize = imageSize;
     FrameRate = frameRate;
     SAR = sar;
 }
Пример #35
0
    static void Main(string[] args)
    {
        Console.Write("Input first number: ");
        RationalNumber first = RationalNumber.createFromString(Console.ReadLine());
      
        RationalNumber second = new RationalNumber(20, 10);

        Console.WriteLine("First number: " + first.ToString());
        Console.WriteLine("Second number: " + second.ToString()); 

        Console.WriteLine(first.ToString()+ " + " + second.ToString()+ " = " + (first + second).ToString());
        Console.WriteLine(first.ToString() + " - " + second.ToString() + " = " + (first - second).ToString());
        Console.WriteLine(first.ToString() + " * " + second.ToString() + " = " + (first * second).ToString());
        Console.WriteLine(first.ToString() + " / " + second.ToString() + " = " + (first / second).ToString());
        
        Console.Write("Press any key to exit...");
        Console.ReadKey();
    }
Пример #36
0
    static void Main(string[] args)
    {
        del firstDel = new del(RationalNumber.noException);
        del secondDel = delegate(uint a)
        {   
            return a;
        };

        Func<uint, uint> anonM = RationalNumber.noException;


        RationalNumber first = RationalNumber.createFromString(Console.ReadLine());
        RationalNumber second = new RationalNumber(20, 0);

        Console.Write("Input first number: ");
        try
        {
            int i = first.N / Convert.ToInt32(first.M);
        }
        catch (DivideByZeroException)
        {   
            first.M = firstDel(1);
            //first.M = anonM(1);
        }

        try
        {
            int i = second.N / Convert.ToInt32(second.M);
        }
        catch (DivideByZeroException)
        {
            second.M = secondDel(1);
        }


        Console.WriteLine("\nFirst number: " + first.ToString());
        Console.WriteLine("Second number: " + second.ToString());
 

        Console.WriteLine(first.ToString()+ " + " + second.ToString()+ " = " + (first + second).ToString());
        Console.WriteLine(first.ToString() + " - " + second.ToString() + " = " + (first - second).ToString());
        Console.WriteLine(first.ToString() + " * " + second.ToString() + " = " + (first * second).ToString());
        Console.WriteLine(first.ToString() + " / " + second.ToString() + " = " + (first / second).ToString());
        
        Console.Write("Press any key to exit...");
        Console.ReadKey();
    }
Пример #37
0
 public RationalNumber Sub(RationalNumber r)
 => new RationalNumber(numerator * r.denominator - denominator * r.numerator, denominator * r.denominator).Reduce();
Пример #38
0
 private Expr _Canonicalize(RationalNumber n)
 {
     return n;
 }
Пример #39
0
 public RationalNumber Div(RationalNumber r)
 => new RationalNumber(numerator * r.denominator, r.numerator * denominator).Reduce();
Пример #40
0
 private Expr _Numericize(RationalNumber n)
 {
     return new DoubleNumber(n.Num.AsDouble());
 }
Пример #41
0
 public RationalNumber Div(RationalNumber r)
 {
     throw new NotImplementedException("You need to implement this function.");
 }
 private VideoFormatDescription(TVideoFormat format)
 {
     this.Format = format;
     switch (format)
     {
         case TVideoFormat.PAL_FHA:
             Interlaced = true;
             ImageSize = new Size(720, 576);
             FrameRate = new RationalNumber(25, 1);
             SAR = new RationalNumber(64, 45);
             break;
         case TVideoFormat.PAL:
             Interlaced = true;
             ImageSize = new Size(720, 576);
             FrameRate = new RationalNumber(25, 1);
             SAR = new RationalNumber(16, 15);
             break;
         case TVideoFormat.PAL_FHA_P:
             Interlaced = false;
             ImageSize = new Size(720, 576);
             FrameRate = new RationalNumber(25, 1);
             SAR = new RationalNumber(64, 45);
             break;
         case TVideoFormat.PAL_P:
             Interlaced = false;
             ImageSize = new Size(720, 576);
             FrameRate = new RationalNumber(25, 1);
             SAR = new RationalNumber(16, 15);
             break;
         case TVideoFormat.NTSC_FHA:
             Interlaced = true;
             ImageSize = new Size(640, 486);
             FrameRate = new RationalNumber(30, 1);
             SAR = new RationalNumber(40, 33);
             break;
         case TVideoFormat.NTSC:
             Interlaced = true;
             ImageSize = new Size(640, 486);
             FrameRate = new RationalNumber(30, 1);
             SAR = new RationalNumber(10, 11);
             break;
         case TVideoFormat.HD1080i5000:
             Interlaced = true;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(25, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080i5994:
             Interlaced = true;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(2997, 100);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080i6000:
             Interlaced = true;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(30, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080p2398:
             Interlaced = false;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(2398, 100);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080p2400:
             Interlaced = false;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(24, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080p2500:
             Interlaced = false;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(25, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080p2997:
             Interlaced = false;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(2997, 100);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080p3000:
             Interlaced = false;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(30, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080p5000:
             Interlaced = false;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(50, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080p5994:
             Interlaced = false;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(5994, 100);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD1080p6000:
             Interlaced = false;
             ImageSize = new Size(1920, 1080);
             FrameRate = new RationalNumber(60, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD2160p2398:
             Interlaced = false;
             ImageSize = new Size(3840, 2160);
             FrameRate = new RationalNumber(2398, 100);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD2160p2400:
             Interlaced = false;
             ImageSize = new Size(3840, 2160);
             FrameRate = new RationalNumber(24, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD2160p2500:
             Interlaced = false;
             ImageSize = new Size(3840, 2160);
             FrameRate = new RationalNumber(25, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD2160p2997:
             Interlaced = false;
             ImageSize = new Size(3840, 2160);
             FrameRate = new RationalNumber(2997, 100);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD2160p3000:
             Interlaced = false;
             ImageSize = new Size(3840, 2160);
             FrameRate = new RationalNumber(30, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD720p2500:
             Interlaced = false;
             ImageSize = new Size(1440, 720);
             FrameRate = new RationalNumber(25, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD720p5000:
             Interlaced = false;
             ImageSize = new Size(1440, 720);
             FrameRate = new RationalNumber(50, 1);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD720p5994:
             Interlaced = false;
             ImageSize = new Size(1440, 720);
             FrameRate = new RationalNumber(5994, 100);
             SAR = new RationalNumber(1, 1);
             break;
         case TVideoFormat.HD720p6000:
             Interlaced = false;
             ImageSize = new Size(1440, 720);
             FrameRate = new RationalNumber(60, 1);
             SAR = new RationalNumber(1, 1);
             break;
     }
 }
 public static double Expreal(this int realNumber, RationalNumber r)
 {
     return(r.Expreal(realNumber));
 }
Пример #44
0
    public RationalNumber Reduce()
    {
        RationalNumber result;

        UInt32 gcd = GCD(numerator, denominator);
        result = new RationalNumber(numerator/gcd, denominator/gcd);

        return result;
    }