Post Reply 
DB48X: HP48-like RPL implementation for DM42
11-05-2024, 09:02 PM
Post: #381
RE: DB48X: HP48-like RPL implementation for DM42
(11-05-2024 06:18 PM)raprism Wrote:  
(11-05-2024 01:05 AM)LinusSch Wrote:  Early versions used the Intel decimal floating point library, current versions use a custom floating point library that saves a lot of code space as compared to the Intel one and provides arbitrary precision. If you set your precision low enough the current versions should be able to go faster than the early versions, but I do not know how low you'd need to set it for which cases.

Good hint. I remember that this was changed to get the envisaged functionality implemented on DM42.

To reduce the processing time to bit less than 1/2 minute for 10k loops, I have to set the precision to the minimum value of 3 (standard is 24). Any other means (without code optimizations) to increase the speed?

1) Use hardware floating point (enable HwFP and set precision to 7 or 16). That should run 10k loops in about 6.8s (32-bit FP, precision 7) or 8.9s (64-bit FP, precision 16).

2) Run it on an iPhone. On my iPhone 12, I run 10k loops at 36-digit in 4.3s with 0.8.3. It should be about 20% faster with 0.8.4.

DB48X,HP,me
Find all posts by this user
Quote this message in a reply
11-05-2024, 09:13 PM
Post: #382
RE: DB48X: HP48-like RPL implementation for DM42
(11-05-2024 08:07 PM)grbrum Wrote:  Finally, doing tests with MENU and TMENU I noticed that now I have a 1 in a box in top left corner, I could not find documentation about this, is this a flag that I accidentally set?
thank you.

Something was running - I ran KILL and it stopped.
Find all posts by this user
Quote this message in a reply
11-05-2024, 09:15 PM
Post: #383
RE: DB48X: HP48-like RPL implementation for DM42
(11-05-2024 08:07 PM)grbrum Wrote:  Hello Christophe, I love the implementation of CST. Thank you very much for that.
I also love that you made it possible for different CST within each directory like the HP48.

I don't have a HP48 on me while I am traveling for work, but if I remember right, I could store the CST menu anywhere (directory), and if there was no CST variable in current directory, it would use the CST menu of the parent directory. I may be wrong. I tried this on the DB48 and it only sees the CST in current directory (this may be accurate to the HP48 behavior though).

DB48x normally sees the CST menu fo the parent directory. The Demo.48s file shipping with db48x illustrates that: there is a CST in the root directory, and when you go into the subdirectories, VAR VAR shows that CST content, including a "Demos" that brings you back to the top of the Demos directory.


Quote:I would like to please request the following enhancements:

- Would it be possible to have a "blank" command to put in the CST variable? basically to have an empty field in the CST menu?
{ Name Value "Blank"}

You can, put something like { Item1 { "" «» } Item2 }. If you use this often, create a library item called Blank, and this can be { Item1 ⓁBlank Items2 } (where Ⓛ is the character that shows as "lib" in white on black in DB48x).

Quote:I am playing with the functionality of having shifted option for CST menu, and I think it is just easy to have the relevant menu items on top of each other (ie A, A> and >A) in CST menu.

I am considering a way to facilitate this kind of layout. I'm not settled on the solution yet.

Quote:- Would it be possible to implement this from HP48 manual page 30-3? "Also, instead of storing the list of objects itself in CST', you can optionally store the name of another variable that contains the list."

I thought this work, but evidently not.

Quote:Finally, doing tests with MENU and TMENU I noticed that now I have a 1 in a box in top left corner, I could not find documentation about this, is this a flag that I accidentally set?
thank you.

This is probably the debugger. Right now, the debugger activates by default when there is an error, but you are the second person confused by that feature, so I'll switch it off by default.

DB48X,HP,me
Find all posts by this user
Quote this message in a reply
11-05-2024, 09:18 PM
Post: #384
RE: DB48X: HP48-like RPL implementation for DM42
(10-30-2024 10:01 PM)LinusSch Wrote:  
(10-30-2024 12:55 PM)floppy Wrote:  So, please, we need now the calculator for the poor, and not only calculators for the rich.

Noted and seconded.

Seconded. The calculator for the poor is http://48calc.org ;-)

As for cheap hardware, maybe we should start with this one, with some additional keyboard. https://shop.pimoroni.com/products/tufty...6912595027

Quote:I have a spare 50g so that makes sense to me, but those are getting harder and harder to come by. I could get my hands on some cheap TI hardware and theoretically I could have a go at making it work. But there are many things I want to spend my time on and few things I actually end up spending time on. No promises.

DB48X,HP,me
Find all posts by this user
Quote this message in a reply
11-06-2024, 09:24 AM
Post: #385
RE: DB48X: HP48-like RPL implementation for DM42
(11-05-2024 09:18 PM)c3d Wrote:  The calculator for the poor is http://48calc.org ;-)

That reminds me of a totally unimportant and silly thing I've been meaning to ask, but in the web application, where's the battery voltage value coming from? Every time I see it, I joke to myself "uh oh, gonna have to replace the cmos battery soon..."

HP: 15CE, 16C, 28s, 48SX, 71B, 200LX, DM41X, DM42
TI: 66, 74, 95, 92 Plus / Casio: fx-603p / Sharp: PC-1262, PC-G850V
Find all posts by this user
Quote this message in a reply
11-06-2024, 09:54 AM (This post was last modified: 11-06-2024 09:54 AM by raprism.)
Post: #386
RE: DB48X: HP48-like RPL implementation for DM42
(11-05-2024 09:02 PM)c3d Wrote:  
(11-05-2024 06:18 PM)raprism Wrote:  Good hint. I remember that this was changed to get the envisaged functionality implemented on DM42.

To reduce the processing time to bit less than 1/2 minute for 10k loops, I have to set the precision to the minimum value of 3 (standard is 24). Any other means (without code optimizations) to increase the speed?

1) Use hardware floating point (enable HwFP and set precision to 7 or 16). That should run 10k loops in about 6.8s (32-bit FP, precision 7) or 8.9s (64-bit FP, precision 16).

2) Run it on an iPhone. On my iPhone 12, I run 10k loops at 36-digit in 4.3s with 0.8.3. It should be about 20% faster with 0.8.4.

1) is the right hint (2) is not an option for me.). Thanks, Linus.

Finally I've come across 6-performance.md on SumTest. This answers a lot ...

Btw Prec 24 and hwfp needs about 182.1s for 10k loops.

Btw the help files (db48x.md, db50x.md) are not up-to-date in section Decimal Numbers.
Find all posts by this user
Quote this message in a reply
11-06-2024, 12:11 PM
Post: #387
RE: DB48X: HP48-like RPL implementation for DM42
(11-06-2024 09:24 AM)badacktor Wrote:  
(11-05-2024 09:18 PM)c3d Wrote:  The calculator for the poor is http://48calc.org ;-)

That reminds me of a totally unimportant and silly thing I've been meaning to ask, but in the web application, where's the battery voltage value coming from? Every time I see it, I joke to myself "uh oh, gonna have to replace the cmos battery soon..."

This is simply measuring the average battery voltage of all devices on the web. So if it gets too low, it means you need to change the batteries of the Internet. Fortunately, there is a large army of squirrels who do just that for you, so usually, when this happens, battery voltage goes right back up. Until next time.

You can thank the squirrels.

DB48X,HP,me
Find all posts by this user
Quote this message in a reply
11-06-2024, 12:12 PM
Post: #388
RE: DB48X: HP48-like RPL implementation for DM42
(11-06-2024 09:54 AM)raprism Wrote:  
(11-05-2024 09:02 PM)c3d Wrote:  1) Use hardware floating point (enable HwFP and set precision to 7 or 16). That should run 10k loops in about 6.8s (32-bit FP, precision 7) or 8.9s (64-bit FP, precision 16).

2) Run it on an iPhone. On my iPhone 12, I run 10k loops at 36-digit in 4.3s with 0.8.3. It should be about 20% faster with 0.8.4.

1) is the right hint (2) is not an option for me.). Thanks, Linus.

Finally I've come across 6-performance.md on SumTest. This answers a lot ...

Btw Prec 24 and hwfp needs about 182.1s for 10k loops.

hwfp is only active with precision below 16. For 8-16, it gives you double-precision (64-bit IEEE754). For 7 and below, it gives you single-precision (32-bit IEEE754).

Quote:Btw the help files (db48x.md, db50x.md) are not up-to-date in section Decimal Numbers.

Good point. I'll update it.

DB48X,HP,me
Find all posts by this user
Quote this message in a reply
11-06-2024, 01:26 PM
Post: #389
RE: DB48X: HP48-like RPL implementation for DM42
I think this link should work: https://www.facebook.com/groups/hpcalc/p...6017404690

BTW: While I have you...

What is the likelihood that the PROMPT command will be available soon? Or, if not, is there a different method to use in order to display a list of what items are needed on the stack (and in what order) for a given program? I tend to write programs that I use on rare occasions, and often forget what they need in terms of parameters. The ability to display a dialog would also be great.

Cheers,
--David

(11-05-2024 08:53 PM)c3d Wrote:  
(11-04-2024 09:36 PM)Dashier Wrote:  There's a Facebook thread regarding a test of calculator accuracy based on an exam question that results in:

Code:
 (SQRT(2)-1)^10 = 3363-2378*SQRT(2)

Can you share the link to the Facebook thread? I could not find it with a quick search. Thanks.

Quote:There are a number of comments regarding the accuracy of various calculators.

I elected to set the DB50X to 2000 digits precision and test it. The difference between the LHS and RHS was 2.15651x10^-1997

Nice job Christophe!

Post script: doing the LHS as a series of multiplications gives virtually the same results. Setting the precision to 6400 digits, yields of a difference of: 9.59198x10^-6397
Find all posts by this user
Quote this message in a reply
11-06-2024, 11:50 PM
Post: #390
RE: DB48X: HP48-like RPL implementation for DM42
(11-06-2024 01:26 PM)Dashier Wrote:  I think this link should work: https://www.facebook.com/groups/hpcalc/p...6017404690

BTW: While I have you...

What is the likelihood that the PROMPT command will be available soon?

Higher now that you requested it ;-)

Quote: Or, if not, is there a different method to use in order to display a list of what items are needed on the stack (and in what order) for a given program? I tend to write programs that I use on rare occasions, and often forget what they need in terms of parameters. The ability to display a dialog would also be great.

Cheers,
--David

(11-05-2024 08:53 PM)c3d Wrote:  Can you share the link to the Facebook thread? I could not find it with a quick search. Thanks.

DB48X,HP,me
Find all posts by this user
Quote this message in a reply
11-06-2024, 11:52 PM
Post: #391
RE: DB48X: HP48-like RPL implementation for DM42
Hacker News has a thread about DB48x.

DB48X,HP,me
Find all posts by this user
Quote this message in a reply
11-06-2024, 11:58 PM
Post: #392
RE: DB48X: HP48-like RPL implementation for DM42
(11-05-2024 08:07 PM)grbrum Wrote:  I would like to please request the following enhancements:

- Would it be possible to have a "blank" command to put in the CST variable? basically to have an empty field in the CST menu?
{ Name Value "Blank"}

In the next release, you will be able to add "" or {} to get a blank entry. Also adding { A } will be the same as adding A.

Quote:I am playing with the functionality of having shifted option for CST menu, and I think it is just easy to have the relevant menu items on top of each other (ie A, A> and >A) in CST menu.

I added support for that by using a matrix as input.

If you enter the matrix [[A B C] [D E F] [G H I]], it is now interpreted as meaning that you want three rows, the first row being A, B and C, the second row D, E and F, and the third row G, H and I. This works with 1xn, 2xn or 3xn matrices.

DB48X,HP,me
Find all posts by this user
Quote this message in a reply
Yesterday, 08:22 PM
Post: #393
Stuttgart video
I made a recording of my presentation for the Stuttgart meeting. Please enjoy, like, share, subscribe and use for the express purpose of total world domination.




DB48X,HP,me
Find all posts by this user
Quote this message in a reply
Today, 05:16 AM
Post: #394
RE: DB48X: HP48-like RPL implementation for DM42
Hi Christoph,

Thanks for the presentation it’s a great overview of the design philosophy and a show case of the functionality and the features. I have a question
I am trying to set up the following equation "'2*π*F*L=1/(2*π*F*C)'"
It works ok with one exception. π is not recognised as the constant, instead it is being recognised as a variable and the silver expects me to provide a value.

Is there anything special I need to do to indicate this is a constant?

When I edit this equation in the app itself I see that pi is defined as cst π and it becomes bold in the equation but how do I transfer that to the equations file?
Find all posts by this user
Quote this message in a reply
Today, 11:14 AM
Post: #395
RE: DB48X: HP48-like RPL implementation for DM42
(Today 05:16 AM)nickapos Wrote:  Hi Christoph,

Thanks for the presentation it’s a great overview of the design philosophy and a show case of the functionality and the features. I have a question
I am trying to set up the following equation "'2*π*F*L=1/(2*π*F*C)'"
It works ok with one exception. π is not recognised as the constant, instead it is being recognised as a variable and the silver expects me to provide a value.

Is there anything special I need to do to indicate this is a constant?

Yes. As you saw from the app, constants have a special marker, that shows up as a white on black [cst]. This is unicode character Ⓒ, so the constant for π must be written Ⓒπ in the files. You can copy/paste that from the simulator as I just did.

The rationale for constants requiring a prefix was that I did not want names like R, c or N to clash with variable names. I did consider making an exception for π and there is an exception for ⅈ due to the parsing of complex numbers.

Quote:When I edit this equation in the app itself I see that pi is defined as cst π and it becomes bold in the equation but how do I transfer that to the equations file?

I hope that the above helps.

Also please consider adding the proper unit to the variables. You need to do that only once per variable in a given equation. You need to put parentheses around the unit to avoid ambiguity with * and / .

Now, your particular equation looks like a resonant frequency, and this is already a system in the equation library called Resonant Frequency under Electricity. Specifically, this is the current system (illustrating the use of units I was referring to):

{
'Qs=1÷(R_Ω)·√((L_mH)÷(C_μF))'
'Qp=(R_Ω)·√((C_μF)÷(L_mH))'
'(ω0_r/s)=2·(Ⓒπ_r)·(f0_Hz)'
'(ω0_r/s)=(1_r)÷√((L_mH)·(C_μF))'
}

The help for that equation is not written yet I believe, though this may be in the patches that Jean Wilson submitted that I did not integrate yet.

DB48X,HP,me
Find all posts by this user
Quote this message in a reply
Today, 12:47 PM
Post: #396
RE: DB48X: HP48-like RPL implementation for DM42
Thank you very much Christop, yes my equation is used to calculate the properties of a resonant LC circuit when some of the properties are known.

I will try adding the units thanks for the suggestion
Find all posts by this user
Quote this message in a reply
Post Reply 




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