Omnimaga
Calculator Community => HP Calculators => Topic started by: supergems on June 06, 2016, 08:50:42 am
-
Thnaks to John H Meyers for these marvel programs https://groups.google.com/forum/#!topic/comp.sys.hp48/Ud03tImdu-w:
%%HP: T(3)A(R)F(.); @ HP49 ONLY! - downloadable file (use Kermit)
@ Programs ENG-> and ENG<- accept REAL numbers (no units),
@ changing the exponent by 3 each time (displaying as a string);
@ use NORM to change string back to the original real number:
\<< { * - } ENGX \>> 'ENG\->' STO
\<< { / + } ENGX \>> 'ENG\<-' STO
\<< STR\-> \>> 'NORM' STO
@ Subroutine (not for direct use):
\<< LIST\-> DROP RCLF \-> a b f \<<
{ { 514. DOERR } { 3. EXP ENG \->STR { DROP DROP } ENGX }
{ DUP "E" POS DUP2 1. + OVER SIZE SUB UNROT 1. - 1. SWAP SUB
DUP STR\-> 3. ALOG a EVAL STD \->STR DUP "E" POS { DROP SWAP }
{ SWAP DROP SWAP STR\-> 3. b EVAL \->STR
1. OVER SIZE 1. - SUB } IFTE "E" SWAP + + } } { 0. 2. }
3. PICK TYPE POS 1. + GET EVAL f STOF \>> \>> 'ENGX' STO
@ Programs U-> and U<- accept UNIT objects only,
@ transforming them to other equivalents
@ using different unit prefixes, e.g. 123.4_m = .1234_km
\<< 0. UU \>> 'U\->' STO
\<< 1. UU \>> 'U\<-' STO
@ Subroutine (not for direct use):
\<< \<<
"yzafpn\Gmm.kMGTPEZYYc.d.Dkhk"
"YZEPTGMk.m\Gmnpfazyyh.D.dmcm"
IFTE DUP ROT POS 1. + DUP SUB \>> \-> d p
\<< DUP TYPE 13. \=/ { 514. DOERR } IFT DUP
:INNERCOMP: #54AFh SYSEVAL :{}N: #5459h SYSEVAL
DUP 2. GET "1" SAME 3. 2. IFTE DUP2 GET
IF DUP TYPE 24. == THEN :CHR>$: #37AA5h SYSEVAL d p EVAL NUM
IF DUP 46. \=/ THEN :COERCE: #262F1h SYSEVAL
:#>CHR: #5A75h SYSEVAL 1. \->LIST REPL
ELSE DROP DUP2 1. SWAP 1. - SUB UNROT DUP2 1. + GET
UNROT 3. + OVER SIZE SUB + + END
ELSE UNROT DUP2 1. SWAP 1. - SUB UNROT 1. + OVER SIZE SUB
ROT "." d p EVAL NUM :COERCE: #262F1h SYSEVAL
:#>CHR: #5A75h SYSEVAL SWAP :umP: #2D76Dh SYSEVAL 3. \->LIST
SWAP + + END :INNERCOMP: #54AFh SYSEVAL
:EXTN: #5481h SYSEVAL CONVERT \>> \>> 'UU' STO
{ ENG\-> ENG\<- NORM ENGX U\-> U\<- UU } ORDER
@ End of HP49 downloadable file (EVALuate it to install programs)
examples
0.01 'ENG\->' 10.E-3 'ENG\->' 10000.E-6 'ENG\->' 10000000.E-9 'ENG\->' 10000000000.E-12
0.01 'ENG\<-' 10.E-3 'ENG\<-' .01E0 'ENG\<-' .00001E3 'ENG\<-' .00000001E6 'ENG\<-' .00000000001E9
5000.E-3 'NORM' --> 5.
examples with units
'1_m' 'U\->' '1000._mm' 'U\->' '1000000._\Gmm' ('\Gm' = 'μ')
'1_m' 'U\<-' '.001_km' 'U\<-' '.000001_Mm'