Post Reply 
ln and e^x on the 16C?
03-22-2016, 05:44 PM
Post: #1
ln and e^x on the 16C?
I got a DM-16L (to go with my 41L) to keep handy for integer math. It can do some floating point operations, but to say it's limited is an understatement; floating point mode has barely more functionality than a four-function with square roots and scientific notation.

If I could add some programs to calculate ln(x) or e^x, then I could at least get powers and roots in place for those occasions when it's needed. Before I go reinventing the wheel (with a clumsy Taylor series or something), has anybody already tackled this problem on the 16?
Visit this user's website Find all posts by this user
Quote this message in a reply
03-22-2016, 10:07 PM
Post: #2
RE: ln and e^x on the 16C?
(03-22-2016 05:44 PM)Dave Britten Wrote:  ... to say it's limited is an understatement; floating point mode has barely more functionality than a four-function with square roots and scientific notation.

..and yet HP managed to fill each and every key position with useful functions. I guess it would have had to acquire a third shift key in order to accommodate more floating-point stuff. Perhaps the WP-34S is the calculator of choice in this case, since it contains all the 16C functionality within its firmware.

In case it is of interest, a presentation was made at the HHC2011 conference in San Diego, mapping out all the 16C functions to the 34S. Info on that is available here and here.

Jake
Find all posts by this user
Quote this message in a reply
03-22-2016, 11:51 PM
Post: #3
RE: ln and e^x on the 16C?
(03-22-2016 10:07 PM)Jake Schwartz Wrote:  ..and yet HP managed to fill each and every key position with useful functions. I guess it would have had to acquire a third shift key in order to accommodate more floating-point stuff. Perhaps the WP-34S is the calculator of choice in this case, since it contains all the 16C functionality within its firmware.

In case it is of interest, a presentation was made at the HHC2011 conference in San Diego, mapping out all the 16C functions to the 34S. Info on that is available here and here.

Jake

I probably would use my 34S for that if the 30b keyboard weren't so unreliable. Mine has at least 2 keys that often don't respond without some extra force. It's a shame that such good software is held back by the mechanics of the package.

And yes, HP definitely crammed a ton of functionality onto the 16C keyboard, and that's the functionality I mainly wanted the 16L for. It just would be nice to have a little bit more general-purpose scientific functionality. Just some basic powers and logs, and maybe integer/fractional part functions.
Visit this user's website Find all posts by this user
Quote this message in a reply
03-23-2016, 12:25 AM
Post: #4
RE: ln and e^x on the 16C?
Hi Dave,

Here's a crude algo I developed for 4 -bangers with memory. It might be a start.
Natural log ln(v)
0.6 to 1.65, 6 digits, 39 keystrokes

y = -(v - 1)/(v + 1) = -((v + 1) - 2)/(v + 1)
ln(v) = ((((5y^2/7) - 1)^(-1) X 42 - 8)y^2 / 75 - 2)y
for v < 0.6 multiply by e n times until in range; subtract n at end
for v > 1.65 divide by e n times until in range; add n at end

Exponential e^v
-1 to +1, 7 digits, 36 keystrokes

e^v = ((((v^2 + 42)/98)^(-1) X v + v - 20)v/40 + 1)^(-1) X v + 1
Find all posts by this user
Quote this message in a reply
03-23-2016, 01:38 AM
Post: #5
RE: ln and e^x on the 16C?
(03-23-2016 12:25 AM)Bob Patton Wrote:  Here's a crude algo I developed for 4 -bangers with memory. It might be a start.
Natural log ln(v)
0.6 to 1.65, 6 digits, 39 keystrokes

y = -(v - 1)/(v + 1) = -((v + 1) - 2)/(v + 1)
ln(v) = ((((5y^2/7) - 1)^(-1) X 42 - 8)y^2 / 75 - 2)y

Since √x is available on the HP-16C, the following might be an option, for this level of precision:

Code:

000- g LBL A
002- g SQRT
003- g SQRT
004- g SQRT
005- g SQRT
006- g SQRT
007- g SQRT
008- g SQRT
009- g SQRT
010- g SQRT
011-   2
012-   *
013-   1
014-   -
015- g SQRT
016-   1
017-   -
018-   5  
019-   1
020-   2
021-   *
022- g RTN

0.600 GSB A -> -0.510825830

1.125 GSB A --> 0.117783552

1.650 GSB A --> 0.500775424
Find all posts by this user
Quote this message in a reply
03-26-2016, 06:31 AM (This post was last modified: 03-26-2016 06:37 AM by Tugdual.)
Post: #6
RE: ln and e^x on the 16C?
I was checking CORDIC but if the exponential is indeed there the log is missing.
Surprising, wonder how'it was done in early calculators.
Find all posts by this user
Quote this message in a reply
03-26-2016, 08:41 AM
Post: #7
RE: ln and e^x on the 16C?
(03-26-2016 06:31 AM)Tugdual Wrote:  I was checking CORDIC but if the exponential is indeed there the log is missing.
Surprising, wonder how'it was done in early calculators.

You'll find some detailed descriptions of the CORDIC algorithm used on hp 35 and the Briggs method to calculate logarithms at Jacques Laporte's site.
Find all posts by this user
Quote this message in a reply
03-26-2016, 11:52 AM
Post: #8
RE: ln and e^x on the 16C?
(03-26-2016 06:31 AM)Tugdual Wrote:  I was checking CORDIC but if the exponential is indeed there the log is missing.
Surprising, wonder how'it was done in early calculators.

I was thinking the Sinclair Scientific would be an excellent candidate, but the algorithm used there appears to require a means of separating the mantissa and exponent.
Visit this user's website Find all posts by this user
Quote this message in a reply
03-27-2016, 04:31 PM
Post: #9
RE: ln and e^x on the 16C?
(03-26-2016 11:52 AM)Dave Britten Wrote:  
(03-26-2016 06:31 AM)Tugdual Wrote:  I was checking CORDIC but if the exponential is indeed there the log is missing.
Surprising, wonder how'it was done in early calculators.

I was thinking the Sinclair Scientific would be an excellent candidate, but the algorithm used there appears to require a means of separating the mantissa and exponent.
Interesting reading.
However 10^x = 10*.99^(229.15*(1-x)) appears to be wrong.
I think it is a typo cuz the "magic" constant is -1/log(.99) that is 229.105
Find all posts by this user
Quote this message in a reply
01-28-2018, 08:52 PM (This post was last modified: 01-28-2018 08:54 PM by Gerson W. Barbosa.)
Post: #10
RE: ln and e^x on the 16C?
(03-22-2016 05:44 PM)Dave Britten Wrote:  If I could add some programs to calculate ln(x) or e^x, then I could at least get powers and roots in place for those occasions when it's needed. Before I go reinventing the wheel (with a clumsy Taylor series or something), has anybody already tackled this problem on the 16?

If you haven’t come up with anything better and you’re still interested, you might want to try this, if reduced accuracy isn’t a problem:

01 LBL A ; ln(x)
02 1
03 EEX
04 CHS
05 3
06 CF 1
07 1
08 +
09 STO I
10 CLx
11 LASTx
12 x<>y
13 x<=y
14 GSB 2
15 LBL 0
16 √x
17 RCL I
18 x>y
19 GTO 1
20 Rv
21 x<>y
22 ENTER
23 +
24 x<>y
25 GTO 0
26 LBL 1
27 Rv
28 ENTER
29 +
30 1
31 -
32 √x
33 x<>y
34 ENTER
35 +
36 *
37 LASTx
38 -
39 F? 1
40 CHS
41 RTN
42 LBL 2
43 SF 1
44 1/x
45 RTN
46 LBL B ; e^x
47 1
48 3
49 STO I
50 Rv
51 8
52 1
53 9
54 2
55 +
56 LASTx
57 /
58 ENTER
59 *
60 1
61 +
62 2
63 /
64 LBL 4
65 ENTER
66 *
67 DSZ
68 GTO 4
69 RTN


Examples:


2 GSB A -> 0.693148000
GSB B -> 2.000013165

12345 GSB A -> 9.42101000
GSB B -> 12345.12104

6.789 EEX 79 GSB A -> 183.8196
GSB B -> 6.687315E79

0.12345 GSB A -> -2.091921000
GSB B -> 0.123449622

230 GSB B -> 7.496895E99
GSB A -> 229.9703000

1 GSB A -> 0.000000000
GSB B -> 1.000000000
GSB B -> 2.718292170
GSB B -> 15.15444181
GSB A -> 2.718294000
GSB A -> 1.000005000
GSB A -> 0.000005000

0.693147181 CHS GSB B -> 0.50000016

0 GSB A -> Error 0

2 CHS GSB A -> Error 0
Find all posts by this user
Quote this message in a reply
01-29-2018, 04:00 AM
Post: #11
RE: ln and e^x on the 16C?
(03-22-2016 10:07 PM)Jake Schwartz Wrote:  In case it is of interest, a presentation was made at the HHC2011 conference in San Diego, mapping out all the 16C functions to the 34S. Info on that is available here and here.

Jake

Gene: And this is still one of my favorite things you have done (out of SO many) at HHC conferences.

Useful, concise and something no one else had thought to do until you did it.

bravo!
Find all posts by this user
Quote this message in a reply
01-29-2018, 03:17 PM
Post: #12
RE: ln and e^x on the 16C?
(01-29-2018 12:47 PM)Mike (Stgt) Wrote:  Do not try to show your profound math knowledge on an HP-12C, that exp(n*ln(10)) is 10^n. Of course it is, but try with n=7.
10
LN
7
*
e^X

et voila!

What is wrong with 9999999.990? The absolute error might look high, but the relative error is very low. If 6.999999998 is acceptable for 1/(1/7) on all 10-digit HP calculators then that and all your other results surely are as well.

Incidentally that’s exactly the same example I’d already tried on the HP-16C yesterday, having stored ln(10) to full accuracy in register 9. I have to say I was pleased with the result ( 7 RCL 9 * GSB B -> 9 999 939.859 ). I was pleased even with my previous result ( 10 GSB A 7 * GSB B -> 9 999 776.098 ). BTW, I don’t claim a math knowledge beyond a skin-deep level (I wish I had been a braver math student, though).

Regards,

Gerson.
Find all posts by this user
Quote this message in a reply
01-29-2018, 03:27 PM
Post: #13
RE: ln and e^x on the 16C?
(03-22-2016 10:07 PM)Jake Schwartz Wrote:  In case it is of interest, a presentation was made at the HHC2011 conference in San Diego, mapping out all the 16C functions to the 34S. Info on that is available here and here.

Jake

I must have missed this when it originally came up, but this could prove quite useful since I just recently cleaned up the keyboard on my 34S to make it reliable enough for daily use.
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 2 Guest(s)