Latest LQ Deal: Linux Power User Bundle
 Home Forums HCL Reviews Tutorials Articles Register Search Today's Posts Mark Forums Read
 LinuxQuestions.org Calculate e^x in Java
 Programming This forum is for all programming questions. The question does not have to be directly related to Linux and any language is fair game.

Notices

 07-24-2007, 12:45 AM #1 ckoniecny Member   Registered: Oct 2005 Posts: 162 Rep: Calculate e^x in Java I'm trying to calculate e^x, without any built-in functions such as Math.exp. This is what I have so far: Code: ``` public static double math_ex(int iter, int x) { double ex = 0; int i = 1; while(i <= iter) { if (i == 1) { ex += x; } else { ex += Math.pow(x,(double)i/factorial(i)); } i++; } ex += 1; return ex; }``` My input is: Code: ```Enter iterations: 6 Enter x: 3 e^3 = 11.989024``` But when I use the calculator to figure it out, it is 20.0855........ Can you see anything thats wrong with my function? Thanks.
 07-24-2007, 07:06 AM #2 Wim Sturkenboom Senior Member   Registered: Jan 2005 Location: Roodepoort, South Africa Distribution: Slackware 10.1/10.2/12, Ubuntu 12.04, Crunchbang Statler Posts: 3,786 Rep: Not a java programmer, but if Math.exp is a built=in function, I assume that Math.pow is as well. Don't know what is wrong with your code, but is simple multiplying in a loop not easier. something like Code: ```result=1; while(iter--) result *= x; return result;``` This is not bug free.  OK, it's still vague but the factorial is probably to calculate e; so calculate e first and fill it in in place of x. Will be a bit faster as well as you only have to calculate e once.[/edit] Last edited by Wim Sturkenboom; 07-24-2007 at 07:20 AM.
07-24-2007, 07:29 AM   #3
oami
LQ Newbie

Registered: Nov 2006
Location: Russia
Distribution: OpenSuSE 10.2
Posts: 1

Rep:
Quote:
 Originally Posted by ckoniecny Code: ` ex += Math.pow(x,(double)i/factorial(i));`
This line should be
Code:
`             ex += Math.pow(x,(double)i)/factorial(i);`
according to the series e^x=1+x+x^2/2!+...+x^n/n!
(not x^(n/n!) )

 07-24-2007, 07:31 AM #4 pixellany LQ Veteran   Registered: Nov 2005 Location: Annapolis, MD Distribution: Arch/XFCE Posts: 17,802 Rep: What is the algorithm that you intended to code? (I just ran the numbers by hand and it clearly is not converging on the right answer)
07-24-2007, 11:22 PM   #5
Dan04
Member

Registered: Jun 2006
Location: Texas
Distribution: Ubuntu
Posts: 207

Rep:
Quote:
 Originally Posted by pixellany What is the algorithm that you intended to code? (I just ran the numbers by hand and it clearly is not converging on the right answer)
It looks like it's supposed to be the MacLaurin series sum(x**n / n! for n in {0, 1, 2, ...}).

 07-24-2007, 11:27 PM #6 Dan04 Member   Registered: Jun 2006 Location: Texas Distribution: Ubuntu Posts: 207 Rep: BTW, what type does your factorial function use? Because of overflow, "int" is only accurate up to n=12, and even "long" only gets you to n=20.
 07-25-2007, 11:28 AM #7 jiml8 Senior Member   Registered: Sep 2003 Posts: 3,171 Rep: In addition to changing it as oami specified, you have to either start i at 0 or add one to the result.

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is Off HTML code is Off Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post epsharma Linux - Software 4 07-02-2006 11:45 AM psychobyte Linux - Hardware 1 08-11-2005 03:59 AM Ephracis Linux - General 1 12-16-2004 12:11 PM JJX Linux - Networking 7 10-22-2004 03:38 AM Half_Elf Linux - General 4 05-18-2003 08:53 PM

LinuxQuestions.org

All times are GMT -5. The time now is 11:49 AM.

 Contact Us - Advertising Info - Rules - LQ Merchandise - Donations - Contributing Member - LQ Sitemap -