Here is a LOG program for HP 12C

Find the LOG in any base of any number: LOGь X: X > 0, b > 1

01 LN

02 R↓

03 LN

04 R↓

05 R↓

06 R↓

07 ÷

08 GTO 00

Example:

LOG₃ 9 = 2 9 ENTER 3 R/S 2

LOG₈₁ 3 = ⅟₄ 3 ENTER 81 R/S 0.25

LOG₁₀₀₀ 10 = ⅓ 10 ENTER 1000 R/S 0.33

Gamo

Here is my version. Not exactly faster, better or more accurate, only three steps shorter:

01 LN

02 1/x

03 y^x

04 LN

05 GTO 00

Best regards,

Gerson.

--------

PS:

Or, in a more conventional way, but one step longer:

01 LN

02 x<>y

03 LN

04 /

05 1/x

06 GTO 00

EDIT: Rats, Gerson was faster and shorter. :-) Is either method more accurate?

Good idea!

How about:

LN

X<>Y

LN

X<>Y

/

GTO 00

(08-30-2017 02:07 AM)Gene Wrote: [ -> ]How about:

LN

X<>Y

LN

X<>Y

/

GTO 00

Better than my 6-step version above (register swap is faster than 1/x). Faster than the 5-step one too!

Gerson.

Thanks for more alternative ways of LOG program.

Just wondering about the compute functions like 1/x or y^x will take more time to calculate than just using Rv or X<>Y

Gamo

(08-30-2017 04:22 AM)Gamo Wrote: [ -> ]Just wondering about the compute functions like 1/x or y^x will take more time to calculate than just using Rv or X<>Y

Rv and x<>y are simple operations involving transfer of contents between internal registers. y^x alone requires a call to LN and another to e^x, both transcendental functions that take a lot a shift and add operations plus access to external tables in ROM. On slow calculators like the original HP-12C the difference in speed is quite noticeable, even without a stopwatch.

The choice of which solution to use depends on what amount of free memory you have. The five-step version would make sense if those were the last remaining free steps on you 12C.

Gerson.