Example #1
0
 public override bool Equals(object x)
 {
     if (x == null)
     {
         return(false);
     }
     if (x is Int32)
     {
         return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1));
     }
     if (x is UInt32)
     {
         return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1));
     }
     if (x is Int64)
     {
         return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1));
     }
     if (x is UInt64)
     {
         return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1));
     }
     if (x is BigInteger)
     {
         return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1));
     }
     if (x is MiniRational)
     {
         return(Numerator.Equals(((MiniRational)x).Numerator) && Denominator.Equals(((MiniRational)x).Denominator));
     }
     throw new ApplicationException();
 }
Example #2
0
        /// <summary>
        /// Serialize to a JSON object
        /// </summary>
        public new void SerializeJson(Utf8JsonWriter writer, JsonSerializerOptions options, bool includeStartObject = true)
        {
            if (includeStartObject)
            {
                writer.WriteStartObject();
            }
            ((fhirCsR4.Models.Element) this).SerializeJson(writer, options, false);

            if (Numerator != null)
            {
                writer.WritePropertyName("numerator");
                Numerator.SerializeJson(writer, options);
            }

            if (Denominator != null)
            {
                writer.WritePropertyName("denominator");
                Denominator.SerializeJson(writer, options);
            }

            if (includeStartObject)
            {
                writer.WriteEndObject();
            }
        }
Example #3
0
        public override int GetHashCode()
        {
            int nhash = Numerator.GetHashCode();
            int dhash = Denominator.GetHashCode();

            return((nhash + dhash) / dhash);
        }
Example #4
0
        // methods
        public decimal DecimalEquivalent()
        {
            decimal deciNumerator   = decimal.Parse(Numerator.ToString());
            decimal deciDenominator = decimal.Parse(Denominator.ToString());

            return(deciNumerator / deciDenominator);
        }
Example #5
0
        public Size GetSize()
        {
            if (null == Molecule && null == Denominator)
            {
                //返回默认分数大小
                return(new Size(FontManager.Instance.FontSize, FontManager.Instance.FontSize * 2.4));
            }
            else
            {
                double maxWidth  = 0;
                double maxHeight = 0;
                if (null == Molecule && null != Denominator)
                {
                    maxWidth  = FontManager.Instance.FontSize > Denominator.GetSize().Width ? FontManager.Instance.FontSize : Denominator.GetSize().Width;
                    maxHeight = FontManager.Instance.FontSize * 1.4 + Denominator.GetSize().Height;
                    return(new Size(maxWidth, maxHeight));
                }

                if (null != Molecule && null == Denominator)
                {
                    maxWidth  = FontManager.Instance.FontSize > Molecule.GetSize().Width ? FontManager.Instance.FontSize : Molecule.GetSize().Width;
                    maxHeight = FontManager.Instance.FontSize * 1.4 + Molecule.GetSize().Height;
                    return(new Size(maxWidth, maxHeight));
                }

                var topSize    = Molecule.GetSize();
                var bottomSize = Denominator.GetSize();

                maxWidth = topSize.Width > bottomSize.Width ? topSize.Width : bottomSize.Width;
                return(new Size(maxWidth, topSize.Height + bottomSize.Height + FontManager.Instance.FontSize * 0.4));
            }
        }
Example #6
0
        public int CompareTo(Rational other)
        {
            var sign = Sign.CompareTo(other.Sign);

            if (sign != 0)
            {
                return(sign);
            }

            if ((IsNaN && other.IsNaN) || (IsInfinity && other.IsInfinity))
            {
                return(0);
            }
            if (IsNaN || other.IsNaN)
            {
                return(Denominator.CompareTo(other.Denominator));
            }
            if (IsPositiveInfinity || other.IsNegativeInfinity)
            {
                return(1);
            }
            if (IsNegativeInfinity || other.IsPositiveInfinity)
            {
                return(-1);
            }

            var diff = this - other;

            return(diff.Sign);
        }
Example #7
0
        public IBlock FindNodeById(string id)
        {
            if (id == ID)
            {
                return(this);
            }
            else
            {
                if (null != Molecule)
                {
                    var node = Molecule.FindNodeById(id);
                    if (null != node)
                    {
                        return(node);
                    }
                }

                if (null != Denominator)
                {
                    var deNode = Denominator.FindNodeById(id);
                    if (null != deNode)
                    {
                        return(deNode);
                    }
                }

                return(null);
            }
        }
Example #8
0
        public Point GotoNextPart(Point caretLocation)
        {
            /*1.当前输入分子;2.当前输入分母*/
            bool isInputMolecule = IsContainCaretLocation(Molecule, caretLocation);

            if (isInputMolecule)
            {
                if (null == Denominator)
                {
                    if (null == Molecule)
                    {
                        return(new Point(this.Location.X, this.Location.Y + FontManager.Instance.FontSize * 1.4));
                    }
                    else
                    {
                        return(new Point(this.Location.X, this.Location.Y + Molecule.GetSize().Height + FontManager.Instance.FontSize * 0.4));
                    }
                }
                else
                {
                    var denominatorSize = Denominator.GetSize();

                    return(new Point(Denominator.Location.X + denominatorSize.Width, Denominator.Location.Y));
                }
            }
            else
            {
                var fractionSize = GetSize();
                MessageManager.Instance.OnInputParentChanged(ParentId);
                return(new Point(Location.X + fractionSize.Width, Location.Y + Molecule.GetSize().Height - FontManager.Instance.FontSize * 0.3));
            }
        }
Example #9
0
        private Line CreateFractionLine()
        {
            Line separateLine = new Line();

            separateLine.Uid    = ID;
            separateLine.Stroke = Brushes.Black;
            separateLine.X1     = Location.X;
            double maxLineWidth = 0;

            if (null != Molecule)
            {
                separateLine.Y1 = Location.Y + Molecule.GetSize().Height + FontManager.Instance.FontSize * 0.2;
                maxLineWidth    = Molecule.GetSize().Width;
                separateLine.X2 = Location.X + maxLineWidth;
            }
            else
            {
                separateLine.Y1 = Location.Y + FontManager.Instance.FontSize * 1.2;
                separateLine.X2 = Location.X + FontManager.Instance.FontSize;
            }

            if (null != Denominator)
            {
                var denominatorMaxLineWidth = Denominator.GetSize().Width;
                if (denominatorMaxLineWidth > maxLineWidth)
                {
                    separateLine.X2 = Location.X + denominatorMaxLineWidth;
                }
            }

            separateLine.Y2 = separateLine.Y1;
            _separateLineY  = separateLine.Y1;

            return(separateLine);
        }
Example #10
0
        public void SetBlockLocation(double locationX, double alignmentCenterY, double rowY)
        {
            double moleculeY = 0;

            if (null != Molecule)
            {
                var maxMoleculeCenter = Molecule.GetVerticalAlignmentCenter();
                var locationY         = alignmentCenterY - Molecule.GetSize().Height - FontManager.Instance.FontSize * 0.2;
                Location          = new Point(locationX, locationY);
                Molecule.Location = new Point(locationX, locationY);
                Molecule.SetBlockLocation(locationX, locationY + maxMoleculeCenter, rowY);
                moleculeY = locationY;
            }
            else
            {
                var locationY = alignmentCenterY - FontManager.Instance.FontSize * 1.2;
                Location  = new Point(locationX, locationY);
                moleculeY = locationY;
            }
            if (null != Denominator)
            {
                var maxDenominatorCenter = Denominator.GetVerticalAlignmentCenter();
                Denominator.Location = new Point(locationX, alignmentCenterY + FontManager.Instance.FontSize * 0.2);
                Denominator.SetBlockLocation(locationX, Denominator.Location.Y + maxDenominatorCenter, rowY);
            }
        }
Example #11
0
        public override int GetHashCode()
        {
            int h1 = Numerator.GetHashCode();
            int h2 = Denominator.GetHashCode();

            return(((h1 << 5) + h1) ^ h2);
        }
Example #12
0
 public override int GetHashCode()
 {
     unchecked
     {
         return((Numerator.GetHashCode() * 397) ^ Denominator.GetHashCode());
     }
 }
Example #13
0
        public string ToString(IFormatProvider provider)
        {
            if (IsIndeterminate)
            {
                return("Indeterminate");
            }

            if (IsPositiveInfinity)
            {
                return("PositiveInfinity");
            }

            if (IsNegativeInfinity)
            {
                return("NegativeInfinity");
            }

            if (IsZero)
            {
                return("0");
            }

            if (IsInteger)
            {
                return(Numerator.ToString(provider));
            }

            var sb = new StringBuilder();

            sb.Append(Numerator.ToString(provider));
            sb.Append('/');
            sb.Append(Denominator.ToString(provider));

            return(sb.ToString());
        }
        public override void CascadeStyle(string name, string value)
        {
            base.CascadeStyle(name, value);

            Numerator.CascadeStyle(name, value);
            Denominator.CascadeStyle(name, value);
        }
Example #15
0
 public override bool Equals(object?obj)
 {
     return(obj is Number number &&
            Numerator.Equals(number.Numerator) &&
            Denominator.Equals(number.Denominator) &&
            State == number.State);
 }
Example #16
0
 /// <summary>
 /// Validate that this RTO meets minimum conformance criteria
 /// </summary>
 public override bool Validate()
 {
     return((NullFlavor != null) ^ (Denominator != null || Numerator != null) &&
            ((Numerator != null && Denominator != null && Denominator.Validate() && Numerator.Validate()) ||
             (Numerator == null && Denominator == null)) &&
            UncertainRange == null);
 }
Example #17
0
        private void Update(EvaluationContext context)
        {
            var n = Numerator.GetValue(context);
            var d = Denominator.GetValue(context);

            Result.Value = (d == 0) ? 1 : n / d;
        }
Example #18
0
        /// <summary>
        /// Provides formatted ToString functionality. Format strings can be any of the following, optionally
        /// appended by a number format string to be used:
        /// <list type="bullet">
        /// <item><term>G</term><description>A General format string, e.g. 1/3, 17/4, -8/3, 5</description></item>
        /// <item><term>M</term><description>A Mixed Fraction format string, e.g. 1/3, 4 1/4, -2 2/3, 5</description></item>
        /// <item><term>R</term><description>A Ratio format string, e.g. 1:3, 17:4, -8:3, 5:1</description></item>
        /// </list>
        /// </summary>
        /// <param name="format">The format string to be used, defaults to "G"</param>
        /// <param name="formatProvider">The formatProvider to use, defaults to the current culture</param>
        /// <returns>The formatted string</returns>
        public string ToString(string format, IFormatProvider formatProvider)
        {
            if (string.IsNullOrEmpty(format))
            {
                format = "G";
            }
            if (format.Length == 1)
            {
                format += "G";
            }
            if (formatProvider == null)
            {
                formatProvider = CultureInfo.CurrentCulture;
            }

            // Indeterminates
            if (Denominator == 0)
            {
                return(IndeterminateTypeName(Numerator));
            }

            switch (format.Substring(0, 1).ToUpper())
            {
            case "M":                     // Mixed Fraction
                return(MixedFractionToString(format.Substring(1), formatProvider));

            case "R":                     // Ratio
                return(Numerator.ToString(format.Substring(1), formatProvider) + ":"
                       + Denominator.ToString(format.Substring(1), formatProvider));

            default:                     // General 'G'
                return(GeneralToString(format.Substring(1), formatProvider));
            }
        }
Example #19
0
        private string MixedFractionToString(string format, IFormatProvider formatProvider)
        {
            // Whole Part
            string mixedFraction = "";
            long   wholePart     = Numerator / Denominator;

            if (wholePart != 0)
            {
                mixedFraction += wholePart.ToString(format, formatProvider) + " ";
            }

            // Proper Remainder
            long remainder = Numerator - (wholePart * Denominator);

            if (remainder != 0)
            {
                if (wholePart != 0)
                {
                    remainder = Math.Abs(remainder);
                }
                mixedFraction += remainder.ToString(format, formatProvider) + "/"
                                 + Denominator.ToString(format, formatProvider);
            }
            return(mixedFraction.Trim());
        }
Example #20
0
        public Rational Add(Rational val)
        {
            BigInteger num  = Numerator.Multiply(val.Denominator).Add(Denominator.Multiply(val.Numerator));
            BigInteger deno = Denominator.Multiply(val.Denominator);

            return(new Rational(num, deno));
        }         /* Rational.add */
Example #21
0
 public override string ToString()
 {
     checked
     {
         return(Numerator.ToString() + "/" + Denominator.ToString() + ":" + (Denominator == 0 ? "undef" : ((double)Numerator / (double)Denominator).ToString()));
     }
 }
 /// <summary>
 /// Serves as the default hash function.
 /// </summary>
 /// <returns>A hash code for the current object.</returns>
 public override int GetHashCode()
 {
     return(base.GetHashCode() ^ Numerator.GetHashCode() ^
            Denominator.GetHashCode() ^
            ClocksPerClick.GetHashCode() ^
            NumberOf32ndNotesPerBeat.GetHashCode());
 }
Example #23
0
        public override int GetHashCode()
        {
            var hash = 17;

            hash = hash * 23 + Numerator.GetHashCode();
            hash = hash * 23 + Denominator.GetHashCode();
            return(hash);
        }
Example #24
0
 public override int GetHashCode()
 {
     if (Initialized == false)
     {
         throw new Exception();
     }
     return(Denominator.GetHashCode());
 }
Example #25
0
 public override string ToString()
 {
     if (Numerator != null && Denominator != null)
     {
         return(String.Format("{0}/{1}", Numerator.ToString(), Denominator.ToString()));
     }
     return(String.Empty);
 }
Example #26
0
        public override int GetHashCode()
        {
            var hashCode = -1534900553;

            hashCode = hashCode * -1521134295 + Numerator.GetHashCode();
            hashCode = hashCode * -1521134295 + Denominator.GetHashCode();
            return(hashCode);
        }
Example #27
0
        private static Denominator CalculateDenominator(double sigma, double t)
        {
            Denominator denominator = new Denominator();

            denominator.Result.Value = sigma * Math.Sqrt(t);

            return(denominator);
        }
Example #28
0
        public override int GetHashCode()
        {
            ReduceImplementation(ref this);

            int numeratorHash   = Numerator.GetHashCode();
            int denominatorHash = Denominator.GetHashCode();

            return(numeratorHash ^ denominatorHash);
        }
Example #29
0
        // Object.ToString
        public override String ToString()
        {
            StringBuilder ret = new StringBuilder();

            ret.Append(m_numerator.ToString("R", CultureInfo.InvariantCulture));
            ret.Append(c_solidus);
            ret.Append(Denominator.ToString("R", CultureInfo.InvariantCulture));
            return(ret.ToString());
        }
Example #30
0
 private string GeneralToString(string format, IFormatProvider formatProvider)
 {
     if (Denominator == 1)
     {
         return(Numerator.ToString(format, formatProvider));
     }
     return(Numerator.ToString(format, formatProvider) + "/"
            + Denominator.ToString(format, formatProvider));
 }