What is the command to do a power of a value

X

xvictoryeohx

From: "xvictoryeohx" <xvictoryeohx@1:261/38.remove-dpk-this>

From: "xvictoryeohx" <xvictoryeohx@1:261/38.remove-rf4-this>

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

-+- 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
 
B

bugbear

To: xvictoryeohx
From: "bugbear" <bugbear@1:261/38.remove-dpk-this>

To: xvictoryeohx
From: "bugbear" <bugbear@1:261/38.remove-rf4-this>

To: xvictoryeohx
From: bugbear <bugbear@trim_papermule.co.uk_trim>

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?

I have a dim memory from Numerical Analysis that the "obvious" way to evaluate
that is inaccurate for small "i" and large "n".

BugBear

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

--- 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" <glen.herrmannsfeldt@1:261/38.remove-dpk-this>

To: xvictoryeohx
From: "glen herrmannsfeldt" <glen.herrmannsfeldt@1:261/38.remove-rf4-this>

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

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

xvictoryeohx

To: glen herrmannsfeldt
From: "xvictoryeohx" <xvictoryeohx@1:261/38.remove-dpk-this>

To: glen herrmannsfeldt
From: "xvictoryeohx" <xvictoryeohx@1:261/38.remove-rf4-this>

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

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

Roedy Green

To: xvictoryeohx
From: "Roedy Green" <roedy.green@1:261/38.remove-dpk-this>

To: xvictoryeohx
From: "Roedy Green" <roedy.green@1:261/38.remove-rf4-this>

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

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

Andreas Leitgeb

To: Roedy Green
From: "Andreas Leitgeb" <andreas.leitgeb@1:261/38.remove-dpk-this>

To: Roedy Green
From: "Andreas Leitgeb" <andreas.leitgeb@1:261/38.remove-rf4-this>

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

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

Patricia Shanahan

To: Andreas Leitgeb
From: "Patricia Shanahan" <patricia.shanahan@1:261/38.remove-dpk-this>

To: Andreas Leitgeb
From: "Patricia Shanahan" <patricia.shanahan@1:261/38.remove-rf4-this>

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

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

Patricia Shanahan

To: Patricia Shanahan
From: "Patricia Shanahan" <patricia.shanahan@1:261/38.remove-dpk-this>

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

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

2

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.

I've thought about this some more, and I think I get it now.

If i is reasonably small compared to 100, the 1 + i/100 addition loses several
bits of precision.

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

--- 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: Patricia Shanahan
From: "glen herrmannsfeldt" <glen.herrmannsfeldt@1:261/38.remove-dpk-this>

To: Patricia Shanahan
From: glen herrmannsfeldt <[email protected]>


(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

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

Patricia Shanahan

To: glen herrmannsfeldt
From: "Patricia Shanahan" <patricia.shanahan@1:261/38.remove-dpk-this>

To: glen herrmannsfeldt
From: Patricia Shanahan <[email protected]>

On 7/30/2012 3:26 PM, glen herrmannsfeldt wrote: ...
I didn't know about the log1p function. (Does Java have one?)

It's in java.lang.Math, since 1.5.

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

--- 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: glen herrmannsfeldt
From: "Andreas Leitgeb" <andreas.leitgeb@1:261/38.remove-dpk-this>

To: glen herrmannsfeldt
From: Andreas Leitgeb <[email protected]>

glen herrmannsfeldt said:
and one for evaluating exp(x-1).

That is exp(x)-1, not exp(x-1), just for the record ;-)

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

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

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top