Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!news-in-01.newsfeed.easynews.com!easynews.com!easynews!news-out.news.tds.net!newsreading01.news.tds.net!53ab2750!not-for-mail From: "Andreas Leitgeb" Subject: Re: What is the command to do a power of a value Message-ID: <50182C81.55843.calajapr@time.synchro.net> X-Comment-To: Patricia Shanahan Newsgroups: comp.lang.java.programmer In-Reply-To: <50181D61.55738.calajapr@time.synchro.net> References: <50181D61.55738.calajapr@time.synchro.net> X-FTN-AREA: COMP.LANG.JAVA.PROGRAMMER X-FTN-MSGID: 1:261/38 13a6f5f3 X-FTN-REPLY: 1:261/38 0a3527a5 Content-Type: text/plain; charset=IBM437 Content-Transfer-Encoding: 8bit X-Gateway: time.synchro.net [Synchronet 3.16a-Win32 NewsLink 1.98] Lines: 42 Date: Tue, 31 Jul 2012 20:07:05 GMT NNTP-Posting-Host: 69.21.70.65 X-Complaints-To: news@tds.net X-Trace: newsreading01.news.tds.net 1343765225 69.21.70.65 (Tue, 31 Jul 2012 15:07:05 CDT) NNTP-Posting-Date: Tue, 31 Jul 2012 15:07:05 CDT Organization: tds.net X-Received-Bytes: 2761 Xref: csiph.com comp.lang.java.programmer:16877 To: Patricia Shanahan From: "Andreas Leitgeb" To: Patricia Shanahan From: Andreas Leitgeb Patricia Shanahan wrote: > On 7/30/2012 6:22 AM, Andreas Leitgeb wrote: >> The gist of this response is, that for the kind of base (1+i/100), >> you better separate the pow operation out into log and exp, and >> actually use log1p on (i/100) instead of log on (1+i/100) for >> efficiency's and precision's sake. >> For "Math.log1p" see: >> http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html#log1p%28double% 29 > > I am curious about why you expect this to be more precise than: "The > computed result must be within 1 ulp of the exact result. ..." Well, one ulp of i/100 is likely smaller than one ulp of 1+i/100 (at least it is for 0 <= i <= 100, the typical range for interest rates). It's like calculating sin(0.0) versus sin(Math.PI), where sin() makes the same promise wrt precision up to an ulp. If the OP had been interested in the interest value alone, i.e. in I = L*( (1+i/100)^n ) - L then using log1p() and expm1() probably would beat the precision of pow() by, um, a few decimal digits, depending of course on the values of i and n. Anyway, I think it's good to know that log1p() and expm1() exist, even if the example at hand doesn't now seem to cry out for them as loudly as I thought it did on first read. -+- BBBS/Li6 v4.10 Dada-1 + Origin: Prism bbs (1:261/38) -+- Synchronet 3.16a-Win32 NewsLink 1.98 Time Warp of the Future BBS - telnet://time.synchro.net:24 --- BBBS/Li6 v4.10 Dada-1 * Origin: Prism bbs (1:261/38) --- Synchronet 3.16a-Win32 NewsLink 1.98 Time Warp of the Future BBS - telnet://time.synchro.net:24