コード例 #1
0
        public static BigUInt <N> Sub(BigUInt <N> v1, BigUInt <N> v2)
        {
            BigUInt <N> ret = v1.Copy();

            ret.Sub(v2);

            return(ret);
        }
コード例 #2
0
        public static BigUInt <N> Add(BigUInt <N> v1, UInt32 v2)
        {
            BigUInt <N> ret = v1.Copy();

            ret.CarryAdd(0, v2);

            return(ret);
        }
コード例 #3
0
        public static BigUInt <N> RightBlockShift(BigUInt <N> n, int sft)
        {
            BigUInt <N> ret = n.Copy();

            ret.RightBlockShift(sft);

            return(ret);
        }
コード例 #4
0
        public static BigUInt <N> Add(BigUInt <N> v1, BigUInt <N> v2)
        {
            BigUInt <N> ret = v1.Copy();

            ret.Add(v2);

            return(ret);
        }
コード例 #5
0
        public static BigUInt <N> LeftShift(BigUInt <N> n, int sft)
        {
            BigUInt <N> ret = n.Copy();

            ret.LeftShift(sft);

            return(ret);
        }
コード例 #6
0
        public static BigUInt <N> RightRoundBlockShift(BigUInt <N> n, int sft)
        {
            BigUInt <N> ret = n.Copy();

            ret.RightBlockShift(sft);

            if (sft >= 1 && sft <= Length && n.value[sft - 1] > UIntUtil.UInt32Round)
            {
                ret.CarryAdd(0, 1);
            }

            return(ret);
        }
コード例 #7
0
        public static BigUInt <N> RightRoundShift(BigUInt <N> n, int sft)
        {
            BigUInt <N> ret = n.Copy();

            ret.RightShift(sft);

            if (sft >= 1 && sft <= Bits && UIntUtil.GetLSB(n.value, sft - 1) != 0)
            {
                ret.CarryAdd(0, 1);
            }

            return(ret);
        }
コード例 #8
0
 public Accumulator <N> Copy()
 {
     return(new Accumulator <N>(value.Copy()));
 }
コード例 #9
0
 public Mantissa <N> Copy()
 {
     return(new Mantissa <N>(value.Copy()));
 }