コード例 #1
0
ファイル: Constant.cs プロジェクト: mmyydd/reko
        public Constant Negate()
        {
            PrimitiveType p = (PrimitiveType)DataType;
            var           c = GetValue();

            if ((p.Domain & (Domain.SignedInt | Domain.UnsignedInt)) != 0)
            {
                p = PrimitiveType.Create(Domain.SignedInt, p.Size);
                if (p.BitSize <= 8)
                {
                    return(Constant.Create(p, -Convert.ToSByte(c)));
                }
                if (p.BitSize <= 16)
                {
                    return(Constant.Create(p, -Convert.ToInt32(c) & 0xFFFF));
                }
                if (p.BitSize <= 32)
                {
                    return(Constant.Create(p, -Convert.ToInt32(c)));
                }
                return(Constant.Create(p, -Convert.ToInt64(c)));
            }
            else if (p == PrimitiveType.Real32)
            {
                return(Constant.Real32(-ToFloat()));
            }
            else if (p == PrimitiveType.Real64)
            {
                return(Constant.Real64(-ToDouble()));
            }
            else
            {
                throw new InvalidOperationException(string.Format("Type {0} doesn't support negation.", p));
            }
        }
コード例 #2
0
ファイル: Constant.cs プロジェクト: tgiphil/reko
 public static Constant Log2()
 {
     // log(10) of 2
     return(Constant.Real64(0.30102999566398119521373889472449));
 }
コード例 #3
0
ファイル: Constant.cs プロジェクト: tgiphil/reko
 public static Constant Ln2()
 {
     return(Constant.Real64(0.69314718055994530941723212145818));
 }
コード例 #4
0
ファイル: Constant.cs プロジェクト: tgiphil/reko
 public static Constant LgE()
 {
     // log(2) of e.
     return(Constant.Real64(1.4426950408889634073599246810019));
 }
コード例 #5
0
ファイル: Constant.cs プロジェクト: tgiphil/reko
 public static Constant Lg10()
 {
     // log(2) of 10.
     return(Constant.Real64(3.3219280948873623478703194294894));
 }
コード例 #6
0
ファイル: Constant.cs プロジェクト: tgiphil/reko
 public static Constant Pi()
 {
     return(Constant.Real64(Math.PI));
 }
コード例 #7
0
ファイル: Constant.cs プロジェクト: tgiphil/reko
 public static Constant DoubleFromBitpattern(long bits)
 {
     return(Constant.Real64(BitConverter.Int64BitsToDouble(bits)));
 }