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)); } }
public static Constant Log2() { // log(10) of 2 return(Constant.Real64(0.30102999566398119521373889472449)); }
public static Constant Ln2() { return(Constant.Real64(0.69314718055994530941723212145818)); }
public static Constant LgE() { // log(2) of e. return(Constant.Real64(1.4426950408889634073599246810019)); }
public static Constant Lg10() { // log(2) of 10. return(Constant.Real64(3.3219280948873623478703194294894)); }
public static Constant Pi() { return(Constant.Real64(Math.PI)); }
public static Constant DoubleFromBitpattern(long bits) { return(Constant.Real64(BitConverter.Int64BitsToDouble(bits))); }