public static void Main()
var allocatedAmount = 3500123.33M;
var exponent = (tenor / rateBasis);
var baseValue = 1 + rate;
var doubleResult = Math.Pow((double)baseValue, (double)exponent);
Console.WriteLine(string.Format("{0,-30}", "Math.Pow = ") + doubleResult);
var decimalResult = DecimalMath.DecimalEx.Pow(baseValue, exponent);
Console.WriteLine(string.Format("{0,-30}", "DecimalMath.DecimalEx.Pow = ") + decimalResult);
var doubleMultiplier = 1D / doubleResult;
var decimalMultiplier = 1M / decimalResult;
Console.WriteLine(doubleMultiplier);
Console.WriteLine(decimalMultiplier);
var doublePP = (double)allocatedAmount * doubleMultiplier;
Console.WriteLine(string.Format("{0,-30}", "Double PurchasePrice = ") + doublePP);
var decimalPP = allocatedAmount * decimalMultiplier;
Console.WriteLine (string.Format("{0,-30}", "Decimal Purchase Price = ") + decimalPP);