**Pages:** 1 2 **3** 4 5 6 7 8 9 10 11 12 13
We could add a new player in the list : numworks

for n=10000, 16s with the sum function, 8s with a python script.

for n=100000, the sum function doesn't work anymore, we have to do the job with a python script. The script takes 84s.

(12-26-2017 03:45 AM)BobVA Wrote: [ -> ].

(12-26-2017 05:43 AM)mfleming Wrote: [ -> ].

(12-26-2017 09:11 AM)wawa Wrote: [ -> ].

Thanks!

Observations. Woah the 41CL is like a ti89! Not bad at all! Impressive.

And also numworks is pretty fast, although I was thinking it was faster than the prime for those "simple" tasks. Instead the prime is just a monster. (until the next generation of calculators)

Has anyone tried doing this in SysRPL on the 50g?

(12-26-2017 11:40 AM)grsbanks Wrote: [ -> ]Has anyone tried doing this in SysRPL on the 50g?

Not that I know.

As wrote, though. SysRPL, hpgcc, ASM on the 50g. ASM on several platforms. Lua on the nspire are possible ways to optimize the speed of the execution of this particular test but they cannot be really used during common usage of the calculator. The best reference for me is something that can be quickly assembled on the calculator itself.

Of course I would be interested as well by those optimizations. I strongly believe that lua on the nspire would close in to the prime and give the dust to numworks.

Further note. SysRPL may end up using already optimized functions so may not be that faster than userRPL. Maybe only the loop may be faster. Or could be that the absence of error checks may speed up everything greatly. I don't really know (therefore I ask the sysRPL experts to give it a shoot. Maybe DavidM, gerald H, 3298, Joe Horn and others).

Although I'm no SysRPL expert I;ve just given this a shot myself. I'm surprised to note that the speed increase is only about 10%.

If anyone wants to pick holes in it and optimize it further, this is the SysRPL code I used. Note that this is the "loop and add" approach rather than the built-in summation function. I can't see any point in converting the latter to SysRPL.

Code:

`::`

CK1NOLASTWD

CK&DISPATCH1

BINT1 ::

%IP>#

%0

SWAP

CLKTICKS

%3 %1/

{ NULLLAM NULLLAM }

BIND

#1+_ONE_DO

INDEX@

UNCOERCE

%ATAN

%SIN

%EXP

1GETLAM %^

%+

LOOP

CLKTICKS

2GETLAM

bit-

HXS>%

% 8192

%/

ABND

;

;

(12-26-2017 02:39 PM)grsbanks Wrote: [ -> ]Although I'm no SysRPL expert I;ve just given this a shot myself. I'm surprised to note that the speed increase is only about 10%.

Code:

%ATAN

%SIN

%EXP

%3 %1/ %^

%+

10% means? (in seconds)

Anyway I think the quoted part of the code is where most of the time is spent. And those are firmware based functions, so hard to speed up. (unless one moves on ARM optimized functions)

(12-26-2017 02:48 PM)pier4r Wrote: [ -> ]10% means? (in seconds)

Timings in seconds for 100 / 1000 / 10000 iterations on the HP 50g:

Using the 'Σ' function: 2.7 / 25.6 / 242.8

Using a SysRPL program: 2.81 / 26.57 / 260.41

Using a UserRPL program: 3.38 / 33.27 / 309.74

(12-26-2017 02:48 PM)pier4r Wrote: [ -> ]Anyway I think the quoted part of the code is where most of the time is spent. And those are firmware based functions, so hard to speed up. (unless one moves on ARM optimized functions)

Very likely. In fact I rewrote the SysRPL program to remove the repeated calculation of 1/3 and have updated the code in my previous post to reflect this. As a result, the gap between UserRPL and SysRPL has been widened to 15-20% depending on which figures you look at.

For reference, this is the UserRPL program I was using:

Code:

`\<< ABS IP \-> n`

\<< TICKS 0. 1. n

FOR n n ATAN SIN EXP 3. INV ^ +

NEXT TICKS ROT - B\->R 8192. /

\>>

\>>

Very odd. I keyed in a solution in RPN on my new DM-42 (S/N 217) and locked the machine up. Ooops. Had to do a hard reset and deleted everything.

I will try it again and see what happens. It had run the 42S manual TVM solver program fine yesterday.

I will post the program I used (inefficiencies and all) if it locks me up again.

ok, locked again. :-( The program below was entered on a MEMORY LOST DM-42. Please be gentle if I did something really really stupid here.

DM-42 S/N 217. Opened yesterday!

Program:

Code:

`LBL AA`

CLX

STO 00

1000

STO 01

LBL 00

RCL 01

ATAN

SIN

E^X

3

1/X

Y^X

STO+00

DSE 01

GTO 00

RCL 01

END

When it crashed, display was showing this:

L: 478

Y, Z and T showing 1.3956

X showing 89.8801

(12-26-2017 05:55 PM)Gene Wrote: [ -> ]ok, locked again. :-( The program below was entered on a MEMORY LOST DM-42. Please be gentle if I did something really really stupid here.

DM-42 S/N 217. Opened yesterday!

Gene,

There is a thread over at SwissMicros for this exact issue:

Bug Report - Hang Detection
Michael and David are more likely to see your input in their forums.

FWIW, I tried unsuccessfully to reproduce this crash over the span of an hour.

Warmest holiday greetings,

Mark Hardman

Thanks, Mark. Posted this over there.

I am VERY impressed with the DM-42. This crash is concerning :-( but the only other item of ANY kind is that the square root symbol on the key is markedly to the left of centered. It's pretty obvious that it is off-center. Love my little machine. Time to get .raw files of any and all HP 41 programs in a file area so they can be loaded...especially BIG long game files.

Well, games and math functions not built into the DM-42. Think statistical distributions and a lot of the material in Sandmath for the 41.

Ok this loop hangs too. Keyed 1000 then R/S at LBL 00. Posted to the DM-42 forum as well.

Code:

`LBL 00`

STO 00

CLST

STO 01

LBL 01

RCL 00

LN

E^X

LOG

10^X

SQRT

X^2

STO+01

RCL 00

RCL 01

DSE 00

GTO 01

When it hangs, display shows Z and T showing 583. Y shows 330,847 and X shows 582. L shows 2.7649.

Interestingly, rearranging the code this way does **not** hang. Same 1000 R/S inputs. The only differences are doing the powers before roots, the antilogs before logs.

Odd!

Code:

`LBL 00`

STO 00

CLST

STO 01

LBL 01

RCL 00

E^X

LN

10^X

LOG

X^2

SQRT

STO+01

RCL 00

RCL 01

DSE 00

GTO 01

(12-26-2017 07:18 PM)Gene Wrote: [ -> ]Ok this loop hangs too. Keyed 1000 then R/S at LBL 00. Posted to the DM-42 forum as well.

FWIW, I do not think this is related to the code – it should run fine. According to the given stack contents one can say that the crash happened after executing the 10^x instruction when the loop counter in R00 was 582. For the previous example it's the ATAN instruction when R00 is 478. But all this should run without problems, so I think you should follow the thread on the Swiss Micros forum.

Dieter

Yep, I agree. I am glad to have found so quickly another loop that crashes. Might help when you have more than one item that -> crashes the machine. :-)

(12-26-2017 05:43 AM)mfleming Wrote: [ -> ] (12-26-2017 03:45 AM)BobVA Wrote: [ -> ]HP-41CL / x50 speed: 100 iterations (139.2926) 15s

I get something different. 41CL, v5 board, TURBO 50. Using the Sigma+ function to accumulate intermediate values because it has the advantage of returning the index X each invocation. Twelve instructions from the loop header label to the bottom GTO with no instructions other than the 41C/CV/CX defaults:

Nice!

I used the ISG register increment and a STO+ register operation to accumulate the results. (I think it's the first HP-41 code I've written in about 15 years.

Nice diversion to leaf through the manual again, but I probably came up with the slowest imaginable implementation!)

Ok, another set of hang tests.

LBL AA

STO 01

CLX

STO 00

LBL 00

RCL 01

LOG

10^X

STO+00

DSE 01

GTO 00

RCL 00

END

Hangs with 348 showing in the display in X. L contains 2.5416.

Interestingly, the LOG and 10^X steps if replaced with LN and e^X do not hang. Neither does a one step 1/x in the loop.

But LOG and 10^X hang.

NOTE: Runs fine on USB connection, but hangs while on battery.

little update

Still missing

- 12C (recent and old)

- 71B

- Some sharp PC

- other capable (programmable or with sum function) calculators

(01-02-2018 10:30 AM)pier4r Wrote: [ -> ]till missing

- 12C (recent and old)

This one will stay missing for quite a while because it lacks the trig functions that are required.

One way round it is to use the fact that \( sin(atan(x)) = { x \over \sqrt(1+x^2) } \)

That, however, doesn't benchmark the trig functions, so any results obtained would not be relevant to this particular test.

(01-02-2018 10:57 AM)grsbanks Wrote: [ -> ][

This one will stay missing for quite a while because it lacks the trig functions that are required.

Oh. I know that the 12C was a business model but I thought that the basic trig/exp were there. My bad. Removing.

Thanks for the observation!

still missing

- 71B

- Some sharp PC

- other capable (programmable or with sum function) calculators

**Pages:** 1 2 **3** 4 5 6 7 8 9 10 11 12 13