Example #1
0
        /// <summary>
        /// Creates a new Gamma which the ratio of two other Gammas
        /// </summary>
        /// <param name="numerator">numerator Gamma</param>
        /// <param name="denominator">denominator Gamma</param>
        /// <returns>Result</returns>
        public static Gamma operator /(Gamma numerator, Gamma denominator)
        {
            Gamma result = new Gamma();

            result.SetToRatio(numerator, denominator);
            return(result);
        }
Example #2
0
 /// <summary>
 /// Set this equal to numerator/denominator
 /// </summary>
 /// <param name="numerator"></param>
 /// <param name="denominator"></param>
 /// <param name="forceProper"></param>
 public void SetToRatio(TruncatedGamma numerator, TruncatedGamma denominator, bool forceProper = false)
 {
     if (numerator.IsPointMass)
     {
         if (denominator.IsPointMass)
         {
             if (numerator.Point.Equals(denominator.Point))
             {
                 SetToUniform();
             }
             else
             {
                 throw new DivideByZeroException();
             }
         }
         else
         {
             if (denominator.LowerBound < numerator.Point && numerator.Point < denominator.UpperBound)
             {
                 Point = numerator.Point;
             }
             else
             {
                 throw new DivideByZeroException();
             }
         }
     }
     else if (denominator.IsPointMass)
     {
         throw new DivideByZeroException();
     }
     else
     {
         if (numerator.LowerBound >= denominator.LowerBound && numerator.UpperBound <= denominator.UpperBound)
         {
             LowerBound = numerator.LowerBound;
             UpperBound = numerator.UpperBound;
             Gamma.SetToRatio(numerator.Gamma, denominator.Gamma, forceProper);
         }
         else
         {
             throw new DivideByZeroException();
         }
     }
 }