HP Forums
DB48X: HP48-like RPL implementation for DM42 - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: Not HP Calculators (/forum-7.html)
+--- Forum: Not quite HP Calculators - but related (/forum-8.html)
+--- Thread: DB48X: HP48-like RPL implementation for DM42 (/thread-20157.html)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24


RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-05-2024 09:02 PM

(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.


RE: DB48X: HP48-like RPL implementation for DM42 - grbrum - 11-05-2024 09:13 PM

(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.


RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-05-2024 09:15 PM

(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.


RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-05-2024 09:18 PM

(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-2040?variant=40036912595027

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.



RE: DB48X: HP48-like RPL implementation for DM42 - badacktor - 11-06-2024 09:24 AM

(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..."


RE: DB48X: HP48-like RPL implementation for DM42 - raprism - 11-06-2024 09:54 AM

(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.


RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-06-2024 12:11 PM

(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.


RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-06-2024 12:12 PM

(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.


RE: DB48X: HP48-like RPL implementation for DM42 - Dashier - 11-06-2024 01:26 PM

I think this link should work: https://www.facebook.com/groups/hpcalc/posts/10161076017404690

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



RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-06-2024 11:50 PM

(11-06-2024 01:26 PM)Dashier Wrote:  I think this link should work: https://www.facebook.com/groups/hpcalc/posts/10161076017404690

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.



RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-06-2024 11:52 PM

Hacker News has a thread about DB48x.


RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-06-2024 11:58 PM

(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.


Stuttgart video - c3d - 11-07-2024 08:22 PM

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.






RE: DB48X: HP48-like RPL implementation for DM42 - nickapos - 11-08-2024 05:16 AM

Hi Christophe,

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?


RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-08-2024 11:14 AM

(11-08-2024 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.


RE: DB48X: HP48-like RPL implementation for DM42 - nickapos - 11-08-2024 12:47 PM

Thank you very much Christophe, 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


Long Name Menus - usability - grbrum - 11-08-2024 07:47 PM

Hello Christophe,
i am playing with equation library. specially here, the long names in the menu boxes are harder to read.
this is not a inconvenience most of the time, but I noticed in this scenario more often.
when changing the screens, the names in the menu boxes are sometimes in the middle of the scroll already.

I would like to suggest that when changing screen the name start from the left again. I hope you understand what I mean.

thanks


RE: DB48X: HP48-like RPL implementation for DM42 - LinusSch - 11-09-2024 09:39 AM

(11-07-2024 08:22 PM)c3d Wrote:  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.

Enjoyed. I don't use a google account and I don't use social media, I stick to forums focussed on a special interest, so I don't really have someone to tell about it that you haven't already told yourself.

But I can think and I can start to focus on trying to help out.

Reflection: this project truly is a 51, the next RPL calculator. It may draw more heavily on the 48, but it is not recreation, it is evolution. This is the first calculator that has me thinking "there is a better one" when I use my 50g, which is calculator home to me - the one I learned my craft on, the one that may be irreplaceable.

RPL manipulation of symbolic expressions is key to me. Immediate simplification when doing this to an equation will help me do math without pen and paper. Automatically having parenthesis and equals on primary keys when entering an expression is a good step forward.

Having a better way to extend the unit system is very welcome! Defining conversion cycles is good innovation, an extremely quick way to access a really large amount of common conversions, fully customizable.

I got a 32sii to complement the 50g, for pocketability, and I thought that a DM32 would be my solution for that going forward. But this makes that two-pronged approach unnecessary, now we can get RPL power and pocketability in the same calculator. And with immediate or quite immediate access to a LOT of often-used functionality!

So much progress! The future looks bright for RPL enthusiasts, finally.


RE: DB48X: HP48-like RPL implementation for DM42 - c3d - 11-09-2024 09:08 PM

(11-09-2024 09:39 AM)LinusSch Wrote:  Reflection: this project truly is a 51, the next RPL calculator. It may draw more heavily on the 48, but it is not recreation, it is evolution. This is the first calculator that has me thinking "there is a better one" when I use my 50g, which is calculator home to me - the one I learned my craft on, the one that may be irreplaceable.

To be honest, while I believe your statement is fair today, when I started the project, I never thought I would be able to even reach that point where I would be even remotely comparable to the HP50. I thought the HP48 was ambitious enough, and I was quite dubious that I would be able to get remotely close on DM42 hardware.

If I restarted it today, I might restart it as DB51X, but I've grown accustomed to the name DB48X ;-) And there is something about "paying homage" to my favorite calculator.


RE: DB48X: HP48-like RPL implementation for DM42 - LinusSch - 11-09-2024 10:37 PM

(11-09-2024 09:08 PM)c3d Wrote:  If I restarted it today, I might restart it as DB51X, but I've grown accustomed to the name DB48X ;-) And there is something about "paying homage" to my favorite calculator.

Both quite good reasons to keep the name at this point! And as you've said previously, it probably helps with discoverability. I would consider using 48 for project, website, identity while using 51 for this specific calculator firmware, the flagship version with all features enabled, especially if cut-down simplified versions are in the plans. But that's just me, and I don't even "get" the x suffix, so what do I know about names.

Most importantly, this project is very much yours moreso than ours for a long while yet, the way I see it. So how you think about it is what sets the name (according to my internal principles of names).