public static bool ResultNegative(LargeNumberStorage a, LargeNumberStorage b)
 {
     //basically a negative check
     if (b.number.Count > a.number.Count)
     {
         return(true);
     }
     if (a.number.Count == b.number.Count)
     {
         for (var i = 0; i < a.number.Count; i++)
         {
             if (a.number[i] > b.number[i])
             {
                 break;
             }
             else if (a.number[i] == b.number[i])
             {
                 continue;
             }
             else if (a.number[i] < b.number[i])
             {
                 return(true);
             }
         }
     }
     return(false);
 }
    public static List <int> operator +(LargeNumberStorage a, LargeNumberStorage b)
    {
        LargeNumberStorage larger  = (a.number.Count > b.number.Count) ? a : b;
        LargeNumberStorage smaller = (larger == a) ? b : a;

        for (int i = (larger.number.Count - smaller.number.Count); i < larger.number.Count; i++)
        {
            larger.number[i] = smaller.number[i - (larger.number.Count - smaller.number.Count)] + larger.number[i];
        }
        for (int i = larger.number.Count - 1; i > -1; i--)
        {
            if (larger.number[i] > 9)
            {
                int num   = larger.number[i];
                int carry = (int)num / 10;
                if (i != 0)
                {
                    larger.number[i - 1] += carry;
                    larger.number[i]      = larger.number[i] % 10;
                }
                else
                {
                    larger.number.Insert(0, carry);
                    larger.number[i + 1] = larger.number[i] % 10;
                }
            }
        }
        return(larger.number);
    }