• Status: Solved
• Priority: Medium
• Security: Public
• Views: 295

# APR calculation help

Hi, I want to calculate APR based on the inputs C, E, R and N.
Here is the math to solve:
http://www.efunda.com/formulae/finance/apr_calculator.cfm

I want to write in my php to calculate the APR.  But, I don't know how to solve this equation.
If not php, atleaset explain in whatever language you know, i can convert it to php.

Any help is appreciated.
Thanks.
0
CWS (haripriya)
• 4
• 4
1 Solution

Commented:
Use the following formula

P = (C+E)r((1+r)^N)/((1+r)^N)-1)

The "^" symbol is whatever you programming language uses for raising to a power
0

Author Commented:
Hi,
Thanks for the quick reply. P is Monthly payment. I want to calculate the APR, for which they have given a formula which should be solved using Newton Raphsons iterative method, that is where  i am stuck.
0

Commented:
I can't apply the Newton Raphsons iterative method.

Maybe someone else here can help.  I'll stay subscribed.
0

Author Commented:
ok.
0

Author Commented:
I solved my problem.
This is the equation I used for Newton - Raphson method.

while ((apr_next>apr+my_range_top)||(apr_next<apr)) {
apr=apr_next;
apr_next=P/loanamount*(Math.pow(1+parseFloat(apr),term)-1)/(Math.pow(1+parseFloat(apr),term));
}

This is not my code. I copied from a website.
Will close the question now.
1

Author Commented:
This the Javascript solution that worked for me. For you to work you should use your form variables in the function.
``````<script language="javascript">
function recalcapr(loantype, loanid)
{
if (document.forms.form1.aprtype.value=='Automatic')
{
if (document.forms.form1['intonly'+loanid].value=='1') var io=true;
else var io=false;
if (loantype=='c')
{
var rate=document.forms.form1['loan'+loanid+'conforming'].value;
document.forms.form1['loan'+loanid+loantype+'apr'].value=calc_apr(document.forms.form1.othercost_con.value, rate, document.forms.form1['loan'+loanid+'term'].value, io, document.forms.form1.loanamt_con.value);

}
else
{
var rate=document.forms.form1['loan'+loanid+'jumbo'].value;
document.forms.form1['loan'+loanid+loantype+'apr'].value=calc_apr(document.forms.form1.othercost_jum.value, rate, document.forms.form1['loan'+loanid+'term'].value, io, document.forms.form1.loanamt_jum.value);
}
}
}

function calc_apr(extracosts, rate,term, io,loanamount){
var apr=0;
var total=parseFloat(loanamount)+parseFloat(extracosts);
var P=calc_payment(total, rate, term, io);
rate=rate/1200;
var apr_next=rate;
var my_range_top=.00000005;
var message='';
var i=0;
//Newton-Raphson method
while ((apr_next>apr+my_range_top)||(apr_next<apr)) {
apr=apr_next;
apr_next=P/loanamount*(Math.pow(1+parseFloat(apr),term)-1)/(Math.pow(1+parseFloat(apr),term));
}
return (apr*1200).toFixed(3);
}

function calc_apr_payment(costs, rate, term, io){
var apr_payment=calc_payment(costs, rate, term);
return apr_payment;
}

function calc_payment(amount, rate, term, io){
r=rate/100/12;
r1=r+1;
t1=Math.pow(r1,term);
payment=t1/(t1-1)*r*amount;
return payment;
}

</script>
``````
0

Commented:
Okay.  Thanks

We're just waiting for the Community Support Moderator to close the question with points refunded and your posting 24012688 as the accepted solution.
0

Commented:
fine with me.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.