// need to use end
function getFV(pv, ir, n)
{
   return pv * Math.pow(1 + ir, n);
}

function getFVAnnuity(pv, ir, pmt, n)
{
   return getFV(pv, ir, n) + ((Math.pow(1 + ir, n) - 1)/ir) * pmt;
}

function getFVAnnuityDue(pv, ir, pmt, n)
{
   return getFV(pv, ir, n) + ((Math.pow(1 + ir, n) - 1)/ir) * (pmt * (1 + ir));
}

function getNBeginning(pv, fv, ir, pmt)
{
   var numerator = (-fv * ir + pmt * ir + pmt) / (ir * pmt + pmt + ir * pv);
   var denominator = ir + 1;

   return Math.log(numerator) / Math.log(denominator);
}

function getNEnd(pv, fv, ir, pmt)
{
   var numerator = (pmt-fv*ir) / (pmt + ir * pv);
   var denominator = ir + 1;

   return Math.log(numerator) / Math.log(denominator);
}

function getPmtBeginning(pv, fv, ir, n)
{
   var numerator = ir * (pv * Math.pow(ir + 1, n) + fv)
   var denominator = (ir + 1) * (Math.pow(ir + 1, n) - 1);

   return -numerator  / denominator;
}

function getPmtEnd(pv, fv, ir, n)
{
   var numerator = ir * (pv * Math.pow(ir + 1, n) + fv)
   var denominator = Math.pow(ir + 1, n) - 1;

   return -numerator  / denominator;
}