hi,

In many programs, I need to know how many *digits* are in reg x.

For instance : 88209 are 5 digits, 81 are 2 and 5 are only one digit.

Me I do like this (for ex 88209) :

g LG give me 4,9455....

f IP give me 4

and 1 + give me the number of the digits of the reg x.

I have readed all manuals that people said me to read, but not a such function is. I think it would be good to put it in a future firmware, may be ?

Regards

d

.

On the WP 34s you can do: g LG CEIL (in h X.FCN)

(11-22-2015 04:58 PM)Didier Lachieze Wrote: [ -> ]On the WP 34s you can do: g LG CEIL (in h X.FCN)

Yes it is very tricky, thre steps economised !

Thank you

(11-22-2015 04:58 PM)Didier Lachieze Wrote: [ -> ]On the WP 34s you can do: g LG CEIL (in h X.FCN)

Not correct for powers of 10: 10, 100, 1000 ...

Franz

(11-22-2015 05:40 PM)fhub Wrote: [ -> ] (11-22-2015 04:58 PM)Didier Lachieze Wrote: [ -> ]On the WP 34s you can do: g LG CEIL (in h X.FCN)

Not correct for powers of 10: 10, 100, 1000 ...

Good catch! You can still do g LG IP INC X

(11-22-2015 04:58 PM)Didier Lachieze Wrote: [ -> ]On the WP 34s you can do: g LG CEIL (in h X.FCN)

Sure you can do this – but you'll get the wrong result for all integer powers of 10. #-)

10000 LG gives 4, and CEIL(4) is ....4 again. Remember: CEIL is not just IP+1.

But there is another way that does not require logs at all: EXPT. The number of digits (again, for x≥1) is simply EXPT+1. So EXPT INC X does it. Or SDL 1 EXPT.

EXPT also is faster than methods with logs. And, more important, there are no problems with cases where roundoff errors may spoil the result. Try 9,999999999999999 in SP mode and LG returns a plain 1 (which is correctly rounded up) so that even the 1+IP(LG x) method will fail.

So EXPT is the way to go. That's why this command exists. As well as its companion MANT. ;-)

Dieter

(11-22-2015 05:43 PM)Marcus von Cube Wrote: [ -> ] (11-22-2015 05:40 PM)fhub Wrote: [ -> ]Not correct for powers of 10: 10, 100, 1000 ...

Good catch! You can still do g LG IP INC X

...and get errors due to roundoff errors for x very close to integer powers of 10.

The 34s has a better option: EXPT, cf. my respective post which I wrote before Franz and you responded. #-)

Dieter

(11-22-2015 05:49 PM)Dieter Wrote: [ -> ]The 34s has a better option: EXPT, cf. my respective post which I wrote before Franz and you responded. #-)

I just read your post and must admit that I could have known...

(11-22-2015 05:43 PM)Marcus von Cube Wrote: [ -> ] (11-22-2015 05:40 PM)fhub Wrote: [ -> ]Not correct for powers of 10: 10, 100, 1000 ...

Good catch! You can still do g LG IP INC X

Yes, I overlooked the powers of 10...

Here is another solution in two steps: EXPT INC X

(11-22-2015 05:56 PM)Didier Lachieze Wrote: [ -> ]Here is another solution in two steps: EXPT INC X

I adopte this, economy of one step, your are cunning like a Sioux, we say in french !

I was not thinking in 10 powered, because in Kaprekar number it is not possible (I think).

My solution was walking with 10 powered, but one step is one step. Once upon a time, when machine has no mutch memory, we search to short routine.

(11-22-2015 06:33 PM)ggauny@live.fr Wrote: [ -> ]I was not thinking in 10 powered, because in Kaprekar number it is not possible (I think).

You're right, powers of 10 are no Kaprekar numbers by definition.

BTW, here's my final version for Kaprekar numbers - different to my first version that I've sent you via PM (with 22 steps, optimized for size), this version is MUCH faster, but has 37 steps (now also showing the first number 1, without 1 you could even save 3 more steps 0004-0006).

Code:

/*

Next Kaprekar number

Input: X:n (start number: 0<=n<999999)

Output: X:k (next Karprekar number k>n)

R/S --> next number ...

*/

0001 ****LBL'KAP'

0002 LocR 003

0003 STO .00

0004 INC X

0005 x=1?

0006 RTN

0007 **LBL 00

0008 INC .00

0009 RCL .00

0010 # 009

0011 MOD

0012 x[<=]1?

0013 SKIP 002

0014 RCL- L

0015 STO- .00

0016 RCL .00

0017 x[^2]

0018 STO .02

0019 EXPT

0020 10[^x]

0021 SDL 001

0022 STO .01

0023 **LBL 01

0024 [cmplx]RCL .01

0025 SDR 001

0026 STO .01

0027 IDIV

0028 x[>=]? .00

0029 GTO 00

0030 [cmplx]RCL .01

0031 MOD

0032 x=0?

0033 GTO 00

0034 +

0035 x[!=]? .00

0036 GTO 01

0037 END

Franz

Hi,

I'm close to finish mine, I'll put after.

BTW congratulations, as usual !

(11-23-2015 11:58 AM)fhub Wrote: [ -> ]BTW, here's my final version for Kaprekar numbers - different to my first version that I've sent you via PM (with 22 steps, optimized for size), this version is MUCH faster, but has 37 steps (now also showing the first number 1, without 1 you could even save 3 more steps 0004-0006).

Franz

Hi,

Very impressive celerity even for numbers up after 999.999 !

I love your fashion to do because if a number is Kaprekar you stop and display it, and if it is not one you display the follow that is.

Well done, mine say only "yes" or "no". And many steps for this ! I have to master flowcharts and greats functions of our WP34s.

"Damned !" you win again (LOL) !

Your fully.

I was telling : on the emulator, of course a bit slowly on the truth WP34s,

but it retire nothing of what I said.

:-)

(11-24-2015 11:05 AM)ggauny@live.fr Wrote: [ -> ].. of course a bit slowly on the truth WP34s, ..

Yes, a calculator is just not the right tool for running longer programs.

Although I've already reduced the tested numbers by 80% (because only numbers n with n MOD 9 = 0 or 1 can be Kaprekar numbers), but up to 1 million this still makes 200000 numbers which have to be checked - a hard task for a real calculator.

BTW, removing the 2 labels LBL 00/01 and replacing the GTO 00/01 by BACK xx, you can even save 2 more steps ... (just in case you're a fan of minimalistic programs)

Franz

(11-24-2015 12:07 PM)fhub Wrote: [ -> ] (11-24-2015 11:05 AM)ggauny@live.fr Wrote: [ -> ].. of course a bit slowly on the truth WP34s, ..

Yes, a calculator is just not the right tool for running longer programs.

Although I've already reduced the tested numbers by 80% (because only numbers n with n MOD 9 = 0 or 1 can be Kaprekar numbers), but up to 1 million this still makes 200000 numbers which have to be checked - a hard task for a real calculator.

BTW, removing the 2 labels LBL 00/01 and replacing the GTO 00/01 by BACK xx, you can even save 2 more steps ... (just in case you're a fan of minimalistic programs)

Franz

Yes I understand now why you MOD by 9, I was not understood !

Yes too with my olds calculators, they say vintage now, as it is my way, I even today search for shorter routine, a old way for me.

In this moment I try to ported for WP34s a old program I love again to day, it is "Moon Roket Lander". With because of you and others I learned in good programmation, I think I bet.

Only miss me an instruction that is "PAUSE" in hp67, surely she exist in WP34s and I read IOP, at this moment,to catch she.

I use complex store, Locr and local flags, and I am sure in few days I will...

I hope. (I don't have said my last word, it is a sentence french, no know if have a sens in english)

Have a good evening, here it is GMT+1 = 20h02 at my watch relied atomic center

Frankfurt (Thank Dieter and Sylvain).

Franz,

I have finded, it is the same name "PSE" but in ticks, well, well I have what missed me. I know what tick is, I only multiplicate to have one second or many.

I think that "relied" is no english, I was think of "linked" yes ?

I have modified your program :

1/- 3 steps

2/- with back, it remember HP67 gto i, with i negative

Thank my freund.