What is the command to do a power of a value

X

xvictoryeohx

From: (e-mail address removed)

C=L(1+i/100)power of n

i am stuck here
for example square root is Math.sqrt(x) How do i do Power of a value?

--- 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
 
G

glen herrmannsfeldt

To: xvictoryeohx
From: glen herrmannsfeldt <[email protected]>

C=L(1+i/100)power of n
i am stuck here
for example square root is Math.sqrt(x)
How do i do Power of a value?

Math.pow().

-- glen

--- 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
 
X

xvictoryeohx

To: glen herrmannsfeldt
From: (e-mail address removed)

Math.pow().



-- glen

Thanks!

--- 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
 
R

Roedy Green

To: xvictoryeohx
From: Roedy Green <[email protected]>

C=L(1+i/100)power of n

i am stuck here
for example square root is Math.sqrt(x)
How do i do Power of a value?

see http://mindprod.com/jgloss/power.html
--
Roedy Green Canadian Mind Products
http://mindprod.com
The greatest shortcoming of the human race is our inability to understand the
exponential function.
~ Dr. Albert A. Bartlett (born: 1923-03-21 age: 89)

--- 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
 
A

Andreas Leitgeb

To: Roedy Green
From: Andreas Leitgeb <[email protected]>

C=L(1+i/100)power of n

x ^ n = exp ( log(x) * n ) | x = (1 + i/100)
= exp ( log( 1 + i/100 ) * n)
= exp ( log1p ( i/100 ) * n)

If you're doing more calculations with same interest-rate but different
periods, then you may want to calculate
double logBase = Math.log1p( i / 100 );
once, and use that for the individual calculations:
C = L * Math.exp( logBase * n )

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(double)

--- 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
 
P

Patricia Shanahan

To: Andreas Leitgeb
From: Patricia Shanahan <[email protected]>

x ^ n = exp ( log(x) * n ) | x = (1 + i/100)
= exp ( log( 1 + i/100 ) * n)
= exp ( log1p ( i/100 ) * n)

If you're doing more calculations with same interest-rate but
different periods, then you may want to calculate
double logBase = Math.log1p( i / 100 );
once, and use that for the individual calculations:
C = L * Math.exp( logBase * n )

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(double%2 9

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. Results must be
semi-monotonic." (From the pow description). Or do you know of cases where
Math.pow gets an over-large rounding error?

Note that I am not disagreeing with your method for calculating a power of a
number slightly greater than 1, just questioning whether doing it explicitly
gets more precise answers than using Math.pow.

Patricia

--- 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
 
G

glen herrmannsfeldt

(snip, someone wrote)
(snip)

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.
Results must be semi-monotonic." (From the pow description).
Or do you know of cases where Math.pow gets an over-large
rounding error?

I didn't know about the log1p function. (Does Java have one?)

As x gets small log(1+x) loses precision. Consider:

log(1+1e-60)

The x87 instruction set has an instruction for evaluating log(1+x)
and one for evaluating exp(x-1). Most HLLs don't.

-- glen
 
A

Andreas Leitgeb

To: Patricia Shanahan
From: Andreas Leitgeb <[email protected]>

Patricia Shanahan said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,767
Messages
2,569,570
Members
45,045
Latest member
DRCM

Latest Threads

Top