<script LANGUAGE="javascript">
<!--
function numval(val,digits,minval,maxval)
{
if (val == "" || isNaN(val)) val = 0;
val = parseFloat(val);
if (!digits) digits = 0;
var dec = Math.pow(10,digits);
val = (Math.round(val * dec))/dec;
if (minval != null && val < minval) val = minval;
if (maxval != null && val > maxval) val = maxval;
return parseFloat(val);
}
function zeroBlanks(formname)
{
var i, ctrl;
for (i = 0; i < formname.elements.length; i++)
{
ctrl = formname.elements[i];
if (ctrl.type == "text")
{
if (ctrl.value == "" || isNaN(ctrl.value))
ctrl.value = "0";
}
}
}
function futureValue(pv,r,y)
{
return pv*Math.pow(1+r,y);
}
function presentValue(fv,r,y)
{
return fv/Math.pow(1+r,y);
}
function geomSeries(z,m,n)
{
var amt;
if (z == 1.0) amt = n + 1;
else amt = (Math.pow(z,n + 1) - 1)/(z - 1);
if (m >= 1) amt -= geomSeries(z,0,m-1);
return amt;
}
function fYTM(z,p,c,b,y)
{
return (c + b)*Math.pow(z,y+1) - b*Math.pow(z,y) - (c+p)*z + p;
}
function dfYTM(z,p,c,b,y)
{
return (y+1)*(c + b)*Math.pow(z,y) - y*b*Math.pow(z,y - 1) - (c+p);
}
function bondYTM(p,r,b,y)
{
var z = r;
var c = r*b;
var i;
var E = .00001;
for (i = 0; i < 100; i++)
{
if (Math.abs(fYTM(z,p,c,b,y)) < E) break;
while (Math.abs(dfYTM(z,p,c,b,y)) < E) z+= .1;
z = z - (fYTM(z,p,c,b,y)/dfYTM(z,p,c,b,y));
}
if (Math.abs(fYTM(z,p,c,b,y)) >= E) return -1; // error
return (1/z) - 1;
}
function initForm(which)
{
which = (which) ? which : 0;
if (window.focus != null) window.focus();
document.mainform.elements[which].focus();
}
-->
</script>