0% found this document useful (0 votes)
375 views406 pages

HP-28C Reference Manual WW

Graphs Software
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
0% found this document useful (0 votes)
375 views406 pages

HP-28C Reference Manual WW

Graphs Software
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 406
-PACKARD HEWLETT , HP-28C Reference Manual = . de em oe em ee mami lia eli el irl irl rl Cuecbwdad ™% — a — a — w — wo — ww — a rn, a a a — _ = » = ~ — _ = ” = _ _ a _ a — a — w w ue r e v HP-28C Reference Manual & HEWLETT PACKARD Edition 2 January 1987 Reorder Number 00028-90021 Notice The information contained in this document is subject to change without notice. Hewlett-Packard makes no warranty of any kind with regard to this mate- rial, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. Hewlett-Packard shall not be liable for errors contained herein or for incidental or consequential damages in connection with the furnishing, performance, or use of this material. Hewlett-Packard assumes no responsibility for the use or reliability of its soft- ware on equipment that is not furnished by Hewlett-Packard. © 1986 by Hewlett-Packard Co, This document contains proprietary information which is protected by copy- right. All rights are reserved. No part of this document may be photocopied, reproduced, or translated to another language without the prior written con- sent of Hewlett-Packard Company. Portable Computer Division 1000 N.E. Circle Blvd. Corvallis, OR 97330, U.S.A. Printing History Edition 1 September 1986 Mfg. No. 00028-90022 Edition 2 January 1987 Mfg. No. 00028-90051 ~~ m- waa Pe eeevuvwevr vrs uu vunTo goog & @ @ @ @ © Welcome to the HP-28C Congratulations! With the HP-28C you can easily solve complicated problems, including problems you couldn’t solve on a calculator be- fore. The HP-28C combines powerful numerical computation with a new dimension—symbolic computation. You can formulate a problem symbolically, find a symbolic solution that shows the global behavior of the problem, and obtain numerical results from the symbolic solution. The HP-28C offers the following features: ® Algebraic manipulation. You can expand, collect, or rearrange terms in an expression, and you can symbolically solve an equation for a variable. ™ Calculus. You can calculate derivatives, indefinite integrals, and definite integrals. ™ Numerical solutions. Using the HP-28C Solver, you can solve an expression or equation for any variable. You can also solve a sys- tem of linear equations. With multiple data types, you can use complex numbers, vectors, and matrices as easily as real numbers. ™ Plotting. You can plot expressions, equations, and statistical data. ® Unit conversion. You can convert between any equivalent combina- tions of the 120 built-in units. You can also define your own units. ™ Statistics. You can calculate single-sample statistics, paired-sample statistics, and probabilities. ™ Binary number bases. You can calculate with binary, octal, and hexadecimal numbers and perform bit manipulations. ™ Direct entry for algebraic formulas, plus RPN logic for interactive calculations. Welcome to the HP-28C 3 The HP-28C Getting Started Manual introduces your calculator and leads you through a sampling of examples. The HP-28C Reference Manual (this manual) gives specific information about commands and how the calculator works. The first two chap- ters explain the fundamentals and basic operations. The third chapter is a dictionary of menus, describing the concepts and commands for each menu. We recommend that you first work through the examples in Getting Started to get comfortable with the calculator. When you want to know more about a particular command, you can look up the com- mand in the Reference Manual. When you're familiar with the commands and want a broader understanding of the calculator’s op- eration, you can read the theoretical discussions in the Reference Manual. These manuals show you how to use the HP-28C to do math, but they don’t teach math. We assume that you're already familiar with the relevant mathematical principles. For example, to use the calculus features of the HP-28C effectively, you should know elementary calculus. On the other hand, you don’t need to understand all the math topics in the HP-28C to use those parts of interest to you. For example, you don’t need to understand calculus to use the statistical capabilities. 4 Welcome to the HP-28C a a a a a TUUCCCvecdcectddddbdd & — a — w —— ed w — a a — w we Ce we oe Contents 1 How To Use This Manual 12. How This Manual is Organized 13 How To Read Stack Diagrams 1 17 Fundamentals 17 Principle of Operation 18 Data Objects 19 Name Objects 19 Variables 20 Local Variables 241 Formal Variables 21 Procedure Objects 21 Programs 22 Expressions 23 Equations 23 Commands 24 The Stack 25 Modes 27 Annunciators 27 Flags 29 Errors and Exceptions 29 Errors in the Command Line 29 Errors in Programs 29 Mathematical Exceptions Contents ‘ 2 31. Basic Operations . 31 Object Entry 32 Entering Numbers 33 Backspace: [@] 33 Lower-Case Letters: [LC 33 Object Delimiters and Separators - 35 How the Cursor Indicates Modes ‘ 35 Entry Modes 38 The Cursor Menu: (4) 40 Enter Command Line: [ENTER 40 Viewing Objects: §§(View?), B(views) 41 Editing Existing Objects 41 Editing Level 1: §§(E0IT) 42 Editing a Variable or Stack Level: (Visit 42 Evaluating Objects 44 Names 44 Reserved Names 45 Quoted and Unquoted Names 45 Duplicate Names 45 Creating, Recalling, and Purging Variables 47 Recovery 48 Command Line Recovery: §§(COMMAND) ‘ 48 Stack Recovery: §§(UNDO} . 49 Last Arguments Recovery . 49 ~~ Low Memory . 50 Insufficient Memory ‘ 50 No Room for UNDO . 51 No Room To ENTER . 51 Low Memory! ‘ 51 No Room To Show Stack . 52 Out of Memory ‘ 53. System Operations 53 Attention: 53 Contrast Control: (ON)J, (ON](= 54 System Halt: (ON][a 54 Memory Reset: [ONJ[INS][> 55 Cancel Reset: [(ON)(DEL 55 System Test: (ON)(¥], (ONJ[4 6 Contents 1 ub reCdO OU dO ddd ded vb bb Ib bo veodbdid ddd 130 138 141 141 145 151 156 160 161 164 166 Dictionary Menus ALGEBRA (Algebraic manipulations) Algebraic Objects Functions of Symbolic Arguments Evaluation of Algebraic Objects Symbolic Constants: e, 7, i, MAXR, and MINR COLCT EXPAN SIZE FORM OBSUB EXSUB TAYLR ISOL QUAD SHOW OBGET EXGET ALGEBRA (FORM) FORM Operations FORM Operations Listed by Function Arithmetic ARRAY (Vector and matrix commands) Keyboard Functions ~ARRY ARRY+ PUT GET PUTI_ GETI SIZE RDM TRN CON IDN_~ RSD CROSS DOT DET ABS RNRM CNRM R+C CR RE IM CON] NEG BINARY (Base conversions, bit manipulations) DEC HEX OCT BIN STWS RCWS RL RR RLB RRB R+B B=R SL SR SLB SRB ASR AND OR XOR NOT Calculus Differentiation Integration Taylor Series CATALOG COMPLEX (Complex numbers) R-C C#R_ RE IM CONJ SIGN R+P P+R_— ABS NEG ARG Principal Branches and General Solutions Contents 7 174 174 180 181 181 184 187 187 193 194 198 198 201 202 203 204 204 207 210 212 215 215 216 217 218 221 223 224 224 226 230 232 234 234 236 238 242 8 = Contents LisT LIST LIST+ PUT GET PUTI GETI SUB SIZE LOGS (Logarithmic, exponential, and hyperbolic functions) LOG ALOG LN EXP LNP1 EXPM SINH ASINH COSH ACOSHTANH ATANH MODE (Display, angle, recovery, and radix modes) STD FIX scl ENG DEG RAD +CMD —CMD +LAST —LAST +UND —UND +ML —ML RDX. RDX, PRMD PLOT The Display Mathematical Function Plots Statistical Scatter Plots Interactive Plots Plot Parameters STEQ RCEQ PMIN PMAX INDEP DRAW PPAR RES AXES CENTR *W- >*H STOZ RCLE COLE SCLE DRWE CLLCD DISP PIXEL DRAX CLMF PRLCD PRINT Print Formats Faster Printing Configuring the Printer PRI PRST PRVAR PRLCD TRACE NORM PRSTC PRUSR PRMD CR Programs Evaluating Program Objects Simple and Complex Programs. Local Variables and Names User-Defined Functions PROGRAM BRANCH (Program branch structures) Tests and Flags Replacing GOTO IF IFERR THEN ELSE END START FOR NEXT STEP IFT IFTE DO UNTIL END WHILE REPEAT END rors vw? Tw oCCeCececcevdcwe — = — = — w@@g@ge@#snH#agutluw 243 243 245 249 252 252 255 257 262 264 265 266 269 270 272 275 276 285 287 290 290 291 293 296 297 300 302 305 309 309 313 314 315 315 321 PROGRAM CONTROL (Program control, halt, and single-step operations) Suspended Programs SST HALT ABORT KILL WAIT KEY BEEP CLLCD DISP) CLMF ERRN ERRM PROGRAM TEST (Flags, logical tests) Keyboard Functions SF CF FS? FC? FS?C_ -FC?C AND OR XOR NOT SAME == STOF RCLF TYPE REAL (Real numbers) Keyboard Functions NEG FACT RAND RDZ MAXR MINR ABS SIGN MANT XPON IP FP FLOOR CEIL RND MAX MIN MOD %T SOLVE (Numerical and symbolic solutions) Interactive Numerical Solving: The Solver (STEQ, RCEQ, SOLVR, ROOT) Symbolic Solutions (ISOL, QUAD, SHOW) General Solutions STACK (Stack manipulation) Keyboard Commands DUP OVER DUP2 DROP2 ROT LIST+ ROLLD PICK DUPN DROPN DEPTH +LIST STAT (Statistics and probability) z+ = NE’ CLE STOZ RCLE TOT MEAN SDEV_ VAR MAXS MINZ COLE CORR COV LR PREDV UTPC UTPF UTPN UTPT STORE (Storage arithmetic) STO+ STO— STO* STO/ SNEG SINV SCONJ STRING (Character strings) Keyboard Function =STR STR* CHR NUM POS __ DISP SUB SIZE Contents 322 322 326 329 332 334 335 343 343 346 346 TRIG (Trigonometry, rectangular/polar and degrees/radians conversion, Hour/Minute/Second arithmetic) SIN ASIN COS ACOS TAN — ATAN P+R R+P R*=C C+R_ ARG +HMS HMS+ HMS+ HMS— D-R- R+D UNITS Temperature Conversions The UNITS Catalog, User-Defined Units Unit Prefixes USER (Variables, user-memory commands) ORDER CLUSR MEM Appendixes, Glossary, Indexes 349 357 357 359 360 361 362 363 364 367 381 10 Contents A: Messages B: Notes for HP RPN Calculator Users The Dynamic Stack Stack-Lift Disable and ENTER Prefix Versus Postfix Registers Versus Variables LASTX Versus LAST C: Notes for Algebraic Calculator Users Getting Used to the HP-28C Glossary Operation Index ovr row eee VC eveedvee@e@ewvdveceddcdadcwwddCdt How To Use This Manual This manual contains general information about how the HP-28C works and specific information about how each operation works. For an overview of the manual, look through the Table of Contents. You can quickly find other types of information as follows. To Learn About: A particular operation, command, or function. A particular menu. Concepts and principles of HP-28C operation. How to perform general HP-28C operations. What a displayed message means. What an unfamiliar term means. Refer to: The Operation Index (page 381). All operations, commands, and func- tions are listed alphabetically. Each entry includes a brief description, a reference to a menu or topic in the Dictionary, and a page reference to the Dictionary. For background in- formation, refer to the menu or topic in the Dictionary (listed alphabeti- cally). For specific information, refer to the page number. Chapter 3, “Dictionary” (page 57). All menus are listed alphabetically. Chapter 1, “Fundamentals” (page 17). Chapter 2, “Basic Operations” (page 31). Appendix A, “Messages” (page 349). The Glossary (page 367). How To Use This Manual 1 How This Manual is Organized Chapters 1 and 2 contain general information. “Fundamentals” is an overview for the experienced user, describing how the HP-28C works. The next chapter, “Basic Operations’, describes how to enter objects in the command line, create variables, and perform system operations. Chapter 3, “Dictionary”, is the largest portion of the manual. Orga- nized by menus, it details each individual operation, command, and function. The action of each command and function is defined in a stack diagram. (Refer to “How To Read Stack Diagrams” later in this section.) Chapter 3 also includes major topics not related to a particular menu, There are entries for Arithmetic, Calculus, CATALOG, Programs, and UNITS. Appendix A, “Messages,” describes status and error messages you might encounter. Appendix B, “Notes for HP RPN Calculator Users,” and appendix C, “Notes for Algebraic Calculator Users,” compare the HP-28C with other types of calculators you might be familiar with. The Glossary defines terms used in this manual. The Operation Index is an alphabetical listing of all operations, com- mands, and functions in the HP-28C. Each entry includes a brief description, a reference to the chapter or menu heading in the manual where you can find background information, and a page reference where you can find specific information 12 How To Use This Manual reviews reoeOoeeCeveeveecwvececd¢eCeCed How to Read Stack Diagrams The action of a command is specified by the values and order of its arguments and results. An argument is an object that is taken from the stack, on which the command acts. The command then returns a re- sult to the stack. (A few commands affect modes, variables, flags, or the display, rather than returning, objects.) The description of each command includes a stack diagram, which provides a tabular listing of the arguments and results of the com- mand. A typical stack diagram looks like this: XMPL Example Function Level 2 Level 1 Level 1 obj; objp ® objg This diagram shows: ™@ The text name (which can appear in the command line) is “XMPL” ™ The descriptive name is “Example”. ® XMPL is a function (allowed in algebraic expressions). ® XMPL requires two arguments, obj; and obj2, taken from stack levels 2 and 1, respectively. @ XMPL returns one result, obj;, to level 1. The arrow # in the diagram separates the arguments (on the left) from the results (on the right). It is a shorthand notation for “with the pre- ceding arguments on the stack, executing XMPL returns the following results to the stack.” How To Use This Manual 13 The arguments and results are listed in various forms that indicate as much specific information about the objects as possible. Objects of specific types are shown within their characteristic delimiter symbols. Words or formulas included with the delimiters provide additional de- scriptions of the objects. Stack diagrams generally use the following terms. Terms Used in Stack Diagrams obj Oxy? crs 0) Hn " string" Carray] Cvector 1 Ematrix] CA-arrayI CC-array] tindex + ‘name' program® *symb! Term LL Description “| Any object. Real number. Real number in hours-minutes-seconds format. Positive integer real number. Real number, zero (false) or non-zero (true). Real or complex number. Complex number in rectangular form. Complex number in polar form. Binary integer. Character string. Real or complex vector or matrix. Real or complex vector. Real or complex matrix. Real vector or matrix. Complex vector or matrix. List of objects. List of one or two real numbers specifying an array element. List of one or two real numbers specifying the dimension(s) of an array. Name or local name. Program. Expression, equation, or a name treated as an algebraic. 14 How To Use This Manual TU eCPC eC eevee dvededededddedddddddddedcdwry The stack diagram for a command may contain more than one “argu- ment ® result” line, reflecting the various possible combinations of arguments and results. Where appropriate, results are written in a form that shows the mathematical combination of the arguments. For example, the stack diagram for + includes the following entries (among others). + Add Analytic Level 1 Level 1 zy 20 » Zy+2 Carray,] Carrayy] » — Carray, +arrayo z "symb' ® "z+ Csymb>" This diagram shows that: ™ Adding two real or complex numbers z, and 2) returns a third real or complex number with the value z;+2. ™ Adding two arrays Carray,] and Carray2] returns a third array Carray, +arrays1. ®@ Adding a real or complex number z and a symbolic object 'symb' returns a symbolic object 'z+¢symb>'. How To Use This Manual 15 Vid dP dP dP NVC UVbO BC bdPOdOd dd ddd bBUO OO b esa ee 1 Fundamentals The HP-28C is based on a few fundamental principles. These princi- ples are somewhat abstract, but their generality is the key to the power and flexibility of the calculator. You don’t need a deep under- standing of the calculator to use it, but a little understanding of its principles will make its full power available to you. If you haven't used the HP-28C, we recommend that you begin with Getting Started With the HP-28C. That manual gives you step-by-step instructions for solving typical problems, and it demonstrates the fundamentals of the calculator. When you have some experience, you can return here to learn how the calculator works in a more general context. This chapter begins with a general statement of how the calculator works, followed by sections that elaborate on the general statement. Later sections describe the stack, modes, and errors. Information about object entry, variables, and other basic topics appears in chapter 2, “Basic Operations.” Information about individual operations and commands, organized by menus, appears in chapter 3, “Dictionary.” Principle of Operation Calculator operation centers around the evaluation of objects on the stack, An object can be data, a name, or a procedure. To evaluate an object means to perform the action associated with that object. Data objects do nothing special (they are just data), name objects refer to other objects, and procedure objects process the objects and commands in their definitions. 1: Fundamentals 17 One benefit of this principle is uniformity. For operations such as en- tering, editing, copying, storing, and recalling, you treat all objects alike. This uniformity means fewer rules for you to remember. Another benefit is flexibility. You can use objects in any number of combinations to create the tools you need to solve a particular prob- lem. Because you can choose when, if ever, to evaluate a symbolic object, you can work on a problem both symbolically and numerically. Data Objects These objects represent data treated as logical units: numerical data, character strings, and lists of objects. Data Objects Type Object Description Real number Real number Real-valued decimal floating-point number. Complex Complex number | Complex-valued decimal floating-point number number. Binary integer | Binary integer 64-bit binary integer number. String String Character string. Real array Real vector n-element real vector. Real matrix nxm-element real matrix. Complex Complex vector n-element complex vector. array Complex matrix nxm-element complex matrix. List List List of objects. Evaluating a data object has no effect. If you put a data object on the stack and press [EVAL], the object simply remains on the stack. Note that the objects contained in a list aren’t evaluated when the list is evaluated. 18 1: Fundamentals ach ae bn a | el es TUCeCCcevw¢edC¢etcedc Vv Name Objects These objects name other objects stored in user memory. Local names can be created by procedures and are automatically deleted when the procedure has completed evaluation. Name Objects Object Description Type Name Name Refers to an object stored in user memory. Local name | Refers to an object temporarily held in local memory. Variables A variable is a combination of an arbitrary object and a name that are stored together. The name becomes the name of the variable; the other object is the value or contents of the variable. They are stored together in user memory, which is separate from the stack. HP-28C variables replace the numbered data registers and program memory found on most calculators. There are two aspects to the evaluation of variable names: what causes names to be evaluated and the result of evaluating a name. When is a name evaluated? @ The name on a USER menu label is evaluated when you press the menu key in immediate entry mode. @ An unquoted name in the command line is evaluated when the command line is evaluated. ™ An unquoted name in a procedure is evaluated when the procedure is evaluated. = A name contained in a variable is evaluated when the variable’s name is evaluated. @ A name in level 1 is evaluated when the EVAL command is executed. 1; Fundamentals 19 What happens when a name is evaluated? ™ Evaluating a name that corresponds to a variable puts the stored object on the stack and, if the object is a name or program, evalu- ates it. ™ Evaluating a name that doesn’t correspond to a variable puts the name back on the stack. Considering when and how a name is evaluated, note that: @ You can recall a data object contained in a variable simply by eval- uating the variable’s name ™ An unquoted name that refers to a program acts like a command to evaluate the program. m If a name refers to another name that refers to yet another name, and so on, evaluating the first name causes all of the names to be evaluated. 3 Do not create a variable whose value includes its own name, such as would happen if you execute Note ‘at tS" sTOor's+y¥' 'x' $Td. Evaluating such a variable causes an endless loop. To halt an endless loop, you must perform a system halt ( (4), described in “Basic Opera tions”), which also clears the stack. Similarly, do not create variables that reference one another in a cir- cular definition. Evaluating a variable included in a circular definition also causes an endless loop. Local Variables Local variables are used only within the program structure that cre- ates the variable. For example, user-defined functions and FOR...NEXT program structures use local variables. Names that iden- tify local variables are called local names and are described in “Programs.” Evaluating a local variable’s name simply puts the local variable’s contents on the stack. 20 = 1: Fundamentals CeCeveeveeceevcecdvec¢cCcrrrdy Formal Variables In symbolic calculations you can use name objects as variables (in the mathematical sense) before assigning values to the variables. If your goal is a symbolic result—say, the derivative of an expression—you might never assign values to the variables. Names used as mathematical variables, but not associated with stored objects, are called formal variables. We use this term only in a few cases when the distinction is important. Evaluating a formal variable leaves its name on the stack Procedure Objects These objects contain procedures—sequences of objects and com- mands that are processed when the procedure object is evaluated. A program object can contain any sequence of objects and commands, including those affecting the stack, user memory, or calculator modes. An algebraic object contains a limited number of object types and com- mands, and its syntax is similar to mathematical expressions and equations Procedure Objects Type Object Program | Program | Contains any sequence of objects. Algebraic | Expression | Contains a mathematical expression. Equation Contains a mathematical equation relating two expressions. Programs A program is essentially the object form of a command line. The ob- jects and commands you enter in the command line constitute a procedure. When you surround that procedure by the program delim- iters, you indicate that you want to treat the procedure as an object that will be evaluated later. 1: Fundamentals 241 When is a program evaluated? @ You can evaluate a program in level 1 by executing the EVAL command. ® A program stored in a variable is evaluated when the variable’s name is evaluated. ™ Commands such as DRAW, J, and ROOT repeatedly evaluate a program that is their argument. ™ A program that is the procedure part of a local variable structure is evaluated when the structure is evaluated. What happens when a program is evaluated? ® Evaluating a program puts each object on the stack and, if the ob- ject is a command or unquoted name, evaluates it. Considering when and how a program is evaluated, note that: = Suppose that a program contains an unquoted name that refers to another program, and that program contains an unquoted name re- ferring to yet another program, and so on. Evaluating the first program causes all of the programs to be evaluated. (The last one referenced is the first one completely evaluated.) ™ If you execute a command that evaluates a program, the commands in the program may overwrite the original command arguments stored in LAST. Expressions An expression is a procedure representing a mathematical expression that is entered and displayed in a syntax corresponding to ordinary mathematical forms. When is an expression evaluated? @ You can evaluate an expression by executing the EVAL command. (Evaluating expressions is the most common use of EVAL.) 22 1: Fundamentals = Commands such as DRAW, f, ROOT, TAYLR, and QUAD repeat- edly evaluate an expression that is their argument. ®@ An expression that defines a user-defined function is evaluated when the function is evaluated. What happens when an expression is evaluated? ™ Evaluating an expression puts each object on the stack and evalu- ates it. These objects are evaluated in RPN order (the order of the equivalent program), not in the order they appear in the expression. Considering when and how an expression is evaluated, note that: ™ Although evaluating a name that refers to a program evaluates the program, evaluating a name that refers to an expression puts the expression on the stack. @ If a name in an expression refers to a second expression, evaluating the first expression doesn't evaluate the second expression. Rather, the second expression is substituted for every occurrence of the name in the first expression. Equations Equations are two expressions related by an equals “=" sign. Evaluat- ing an equation produces a new equation. The new left-hand expression is the result of evaluating the original left-hand expression. The new right-hand expression is the result of evaluating the original right-hand expression. Commands Commands are built-in procedures that you can include in programs. You can consider a command name as it appears in the command line (for example, DROP or SIN) to be the unquoted name of a procedure object stored in the calculator. This is similar to the names and con- tents of your own variables. In practice, there’s no useful distinction between the unquoted name and the built-in procedure. 1: Fundamentals 23 We classify built-in procedures according to their uses: @ An operation is any procedure built into the calculator, such as EN- TER, CATALOG, or TRACE. ™ A command is a programmable operation, such as SWAP or STO. @ A function is a command allowed in algebraics, such as IP or MIN. @ An analytic function is a function for which the HP-28C provides a derivative and inverse, such as SIN or +. Built-in procedures are usually characterized by their highest capabil- ity. For example, SWAP is both a command and an operation, and IP is a function, a command, and an operation, but we characterize SWAP as a command and IP as a function. The Stack The stack is a sequence of numbered levels, each holding one object. Objects enter the stack in level 1, lifting objects already in the stack to higher levels. Objects also leave the stack from level 1, dropping the objects remaining on the stack to lower levels. All objects are treated identically—simply as objects—on the stack. The HP-28C provides commands to duplicate, delete, and reorder ob- jects on the stack. Several of these commands are found on the keyboard ((DROP], [SWAP], §§(ROLL), and §H(CLEAR)); others are in the STACK menu. Most commands take input objects (called arguments) from the stack and return output objects (called results) to the stack. The arguments must be present on the stack before the command is executed. The command removes its arguments and replaces them with its results. For example, the function SIN takes a value (a real or complex num- ber, or an algebraic) from level 1, computes its sine, and returns the result to level 1. The function + takes two values from the stack and returns their sum to the stack. 24 1: Fundamentals Soeocu nod a ar This type of logic, where the command comes after the arguments, is called postfix logic or RPN, for Reverse Polish Notation, named after the Polish logician Jan Lukasiewicz (1878-1956). (Note that these postfix-logic commands include operations that may use a prefix syntax on other RPN calculators. For example, to select FIX display mode with two digits after the radix on the HP-28C, you must execute the sequence 2 FIX. Similarly, to store the number 12 in a variable named FIRST, you must execute the sequence 12 'FIRST' STO.) Modes For many operations you can control the results by selecting a mode. For example, you can control whether the trigonometric functions in- terpret numbers as degrees or radians by selecting degrees angle mode or radians angle mode. The following table shows the modes in the HP-28C, grouped by sim- ilar topics. The default choice for each mode, selected when you perform a memory reset, is marked by an asterisk. Most modes are indicated by a flag, an annunciator, or a menu label. The third case occurs if a mode is selected by menu keys: the menu label for the current selection appears in black characters, not the in- verse video characters typical of menu labels. Pressing a menu key that changes a mode also changes the menu label from inverse to black characters. HP-28C Modes Mode Choices Indicator Angle Degrees*/radians MODE labels, flag 60 clear*/set, (27) annunciator Beeper Enabled*/disabled Flag 51 clear*/set Principal value Off*/on Fiag 34 clear*/set * Default choice. 1: Fundamentals 25 HP-28C Modes (Continued) Mode Choices Indicator General Entry and Display Entry mode Case Level 1 display Immediate*/Algebraic/ Alpha Upper*/lower Multi-line*/compact Real Number Entry and Display Radix Real number format Number of decimal digits Period” /comma Standard*/Fixed/ Scientific/Engineering O* through 11 Binary Integer Entry and Display Binary integer base Binary integer wordsize Recovery COMMAND UNDO LAST Evaluation Evaluation of symbolic constants Evaluation of functions Printer Printer trace Auto CR Faster print Decimal*/Hexadecimal/ Octal/Binary 1 through 64° Enabled*/disabled Enabled’ /disabled Enabled*/disabled Symbolic*/numeric Symbolic*/numeric Disabled*/enabled Enabled*/disabled Disabled*/enabled Cursor, @ annunciator None MODE labels, flag 45 set*/clear MODE labels, flag 48 clear*/set MODE labels, flags 49-50 Flags 53-56 BINARY labels, flags 43-44, Flags 37-42 MODE labels MODE labels MODE labels, flag 31 set*/clear Flag 35 set*/clear Flag 36 set*/clear PRINT labels, flag 32 clear*/set Flag 33 clear*/set Flag 52 clear*/set * Default choice. 26 1: Fundamentals Annunciators The annunciators at the top of the display indicate the angle mode, the entry mode, and other status information. Annunciators Annunciator Indication ° A program is suspended. > The shift key has been pressed. a Alpha entry mode is active. ((@)) The HP-28C is busy—that is, not ready for keyboard input. =I Low battery. (27) The current angle mode is radians. 9g The HP-28C is sending output to the printer. Flags A flag is a quantity that represents a truth value, either true or false. Flags occur as numeric flags and as user flags. Numeric Flags. On the stack, a non-zero real number represents true and the real number 0 represents false. Numeric flags are used with program branch structures, such as IF...THEN ...ELSE, and with logical tests, such as XOR. User Flags. A separate part of calculator memory contains user flags, each having two possible states: set (true) or clear (false). You store the value true in the flag by setting the flag, and you store the value false by clearing the flag. You can test the value of a flag, which returns the corresponding numeric flag, 0 (false) or 1 (true), to the stack. 14: Fundamentals 27 There are 64 user flags, numbered 1 through 64. Flags 1 through 30 are available for general use. Flags 31-64 have special meanings, as listed below—when you set or clear them you alter the modes associ- ated with the flags. Reserved User Flags Number Description Default 31 LAST enable Set 32 Printer trace Clear 33 Auto CR Clear 34 Principal value Clear 35 Symbolic evaluation of constants Set 36 Symbolic evaluation of functions Set 37-42 Binary integer wordsize Set 43-44 Binary integer base Clear 45 Level 1 display Set 46 Reserved Clear 47 Reserved Clear 48 Radix Clear 49-50 Real number format Clear 51 Beeper Clear 52 Faster print Clear 53-56 Number of decimal digits Clear 57 Under flow action Clear 58 Over flow action Clear 59 Infinite Result action Set 60 Angle Clear 61 Under f low- exception Clear 62 Under f low + exception Clear 63 Over f low exception Clear 64 Infinite Result exception Clear 28 1: Fundamentals a — — = — = ” PUuuuvuuvuUuEeuewu£w Errors and Exceptions When an error occurs, the calculator beeps and displays an error mes- sage in the top line of the display. Error messages are described in appendix A, “Messages.” If the error occurs during execution of a command that takes argu- ments from the stack, the arguments are restored to the stack if LAST is enabled, If LAST is disabled, the arguments are lost. Errors in the Command Line An error can occur during ENTER, while the calculator is processing the text in the command line. If so, the calculator beeps, displays Suntax Error, restores the command line, and attempts to indicate the problem. If the error resulted from illegal syntax, the incorrect text is displayed in inverse characters, followed by the cursor. If the error resulted from incomplete entry, the cursor is positioned at the end of the line, Errors in Programs If an error occurs in a program, the remainder of the program (not yet processed) is aborted. If the program's evaluation was started by an- other program, the remainder of that program is also aborted. Mathematical Exceptions Certain errors that can arise during ordinary real number calculations are classified as mathematical exceptions. An exception can act as an ordinary error and halt the calculation, or it can supply a default re- sult, allowing the calculation to proceed. You can choose how exceptions act by setting or clearing flags 57, 58, and 59. The follow- ing table describes the mathematical exceptions and the related flags. 1: Fundamentals 29 Mathematical Exceptions Infinite Result Overflow Under flow * Default choice. Desc This exception occurs when a calculation returns an infi- nite result. Examples include LN(0), TAN(90°), and dividing by zero. If flag 59 is set,” Infinite Result exceptions are errors. If flag 59 is clear, an Infinite Result exception returns the default result +MAXR and sets flag 64, the Infinite Result indicator. This exception occurs when a calculation would return a finite result whose absolute value is greater than the larg- est machine-representable number MAXR. Exampies include 9E499 + 9E499, EXP(5000), FACT(2000). If flag 58 is set, Over f low exceptions are errors. If flag 58 is clear,” an Qver f low exception returns the default result +MAXR and sets flag 63, the Over f low indicator. This exception occurs when a calculation returns a finite result whose absolute value is smaller than the smallest machine-representable number MINR. Examples include 1E-499/2 and EXP(-5000). If flag 57 is set, an Under f low exception acts like an error. It returns the error message Negative Under flow or Positive Under flow, depend- ing on the sign of the actual result. {f flag 57 is clear,” an Under f low exception returns the default result 0 and sets flag 62, the Under f low + indicator, or flag 61, the Under f low indicator, de- pending on the sign of the actual result. 30 20 1: Fundamentals oawue ——_ — —— 7 — a — = — ww _— = — ww — w —— ww — ww — ww — w w — ww — = _— - ~— w —— w —— ww w — ww — ww _— eo _— we oe — w — wo 2 Basic Operations This chapter describes how to enter objects in the command line, how to create, recall, and purge variables, how to recover previous com- mand lines, stacks, and arguments, how to deal with low memory conditions, and how to perform system operations. Object Entry When you press a key to begin entering new objects, the character on the key is entered into a command line. The command line can contain any number of objects, represented in text form. It appears at the bot- tom of the display (immediately above the menu labels, if present). The command line also appears when you use §§(EDIT] or §§(VisiT] to view or alter the contents of an existing object. The contents of the command line are processed when you press CENTER] (or any command or function key that automatically performs ENTER). The contents of the command line are evaluated as a pro- gram, and the command line disappears from the display. You can enter any number of characters into the command line. You can break the line into several rows by pressing [NEWLINE]. which inserts a “newline” character (line-feed) into the command line string at the current cursor position. Newline characters act as object separa- tors, but are otherwise ignored when the command line is evaluated. 2: Basic Operations 31 If you enter more than 23 characters into the command line, charac- ters scroll off the display to the left. An ellipsis (...) appears in the leftmost character position to indicate the undisplayed characters. If you try to move the cursor past the left end of the display, the leftmost characters scroll back into the display, and characters scroll off the display to the right. An ellipsis then appears at the right end of the display. When the command line contains multiple rows of text, all rows scroll left and right together. Entering Numbers Real numbers are entered by pressing the digit keys, [CHS] and [EEX] to produce the desired number. Digit keys always just add a single digit to the command line. Change Sign: « Pressing [CHS] changes the sign of a number in the command line. (If no command line is present, pressing [CHS] exe- cutes the command NEG, which negates the object in level 1. NEG is described in “Arithmetic.”) “Number” can be either the mantissa or the exponent of a number— the position of the cursor determines which is changed. If no sign is present, a minus sign (-) is inserted at the beginning of the number. If a plus sign (+) or minus sign is present, it is changed to the opposite sign. adds a If the cursor is not positioned at a valid number, pressing minus sign to the command line. To key in a negative number as the first object in the command line, in at least one digit, to create the command line, before In all other cases you can press [CHS] before, during, or after keying in the number. Enter Exponent: (££x). You can enter numbers that are quite large or small by using scientific notation. A number can be represented by a mantissa and an exponent, where the value of the number is the product of the mantissa and 10 raised to the power of the exponent. 32 2: Basic Operations Fd@@@ePedddddddddddddddddddcdd aad wy To key in a number in scientific notation, key in the mantissa, press EEX], and then key in the exponent. Pressing adds a character E to the command line, separating the mantissa from the exponent. If the cursor is not positioned at a valid number (or no command line is present), pressing [EEX] adds the characters 1£ to the command line. If the cursor is positioned at a number that already has an exponent, pressing [EEX] moves the cursor to the first digit in the exponent. Backspace: [¢ Pressing [@] deletes the character to the left of the cursor, moving the cursor (and any characters to the right) one space to the left. If you press and hold (@], the action is repeated until you release the key. Pressing [@) has no effect when the cursor is at the left end of a line. Lower-Case Letters: Pressing [CC] causes letter keys through to append the cor- responding lower case letters a through z to the command line. Lower-case entry continues until you press a second time, execute ENTER, or press to clear the command line. Object Delimiters and Separators The various object types are entered in the same form in which they are displayed. Successive objects or commands entered into the same command line must be separated from each other by one of the following: @ An object delimiter ¢, >, £, 1, 4, 3, #, ", ', @, 3. mA space or newline @ A period or comma, whichever is not currently the radix mark. (If flag 48 is clear, periods are radix marks and commas are separators; if flag 48 is set, commas are radix marks and periods are separators.) 2: Basic Operations 33 In algebraic objects, spaces are ignored (except with the operators AND, OR, XOR, and NOT) and arguments contained within paren- thesis (such as MOD(A,B)) must be separated by the current separator, either comma or period When you key in an object, you must follow the correct syntax for that object. Most object types begin and end with delimiters, special punctuation marks that identify the object. For example, strings are surrounded by double quotation marks, as in “Hi There" or "m*2", and vectors are surrounded by square brackets, as in C12 3 Jorl -5 6 7 -18.2 J. The calculator follows the same format rules when it displays the objects. The following table is an expanded version of the table printed above the left keyboard on the calculator. Both show the appropriate delim- iters for various objects. Object Formats Object Format Example Real number real -1,.234624 Complex number | (real, real) €1,23,4,56) Binary integer # digits # 123AF String "text" "HELLO" Real vector Creal real ... J C123 4] Real matrix CCreal real ... J cli 23 4] Creal real... 1 cs 6 7 8] i c3 612] Creal real ... 11 C3 45 631] Complex vector C Creal,reald ... 1 C¢1,2> ¢€3,49] Complex matrix CC creal,realo ... 7 CO¢i,2) ¢€3,493 J C¢S,6) ¢7,89]] CCreal,real> ... C Creal, reals ... J] List tobject object ... > 41 "HI" €1,293 34 2: Basic Operations Cid ddddbdddbbbdddddbbdddbbd dd baad Object Formats (Continued) Object Format Example Name ‘name! ‘FRED' Local name ‘name’ ‘FRED' Program € object object ... * « DUP 4 ROLL » Expression “ expression’ “ASB! Equation “ expression=expression ' "A+B=SINCX)' Any missing delimiters at the end of the command line are automati- cally added when you press How the Cursor Indicates Modes The shape of the cursor indicates the current entry mode and the cur- rent choice of insert/replace mode. (Entry modes are described next, followed by the cursor menu, which includes insert/replace modes.) The following table shows the six possible combinations of entry mode and insert/replace mode. Insert mode | Replace mode Immediate entry mode Algebraic entry mode Alpha entry mode Entry Modes There are three modes for entering different types of objects. In gen- eral, immediate entry mode is used to key in data objects, algebraic entry mode to key in name objects and algebraic objects, and alpha entry mode to key in programs and strings. You can always activate or deactivate alpha entry mode by pressing [a]; in some cases the entry mode changes automatically when you begin to key in a new object. 2: Basic Operations 35 The current entry mode primarily affects how keys associated with commands operate—whether pressing a key causes the command to execute, or whether the name of the command is added to the com- mand line. In this discussion “key” includes shifted keys such as [+] and assigned menu keys such as @¢6iRe. The following keys are unaffected by the current entry mode: ™ Keys associated with non-programmable operations, such as (ENTER), BBCCATALOG], or egy. Pressing an operation key always executes the operation. ™ All single-character keys on the left-hand keyboard. Pressing a character key always adds the character to the command line. (Al- though keys such as [>] correspond to the names of functions, they act as character keys.) @ Character keys [0] through (9], (), GJ, and §§) on the right-hand keyboard. Pressing a character key always adds the character to the command line. @ i§8%98 in the USER menu, 4 in the PROGRAM CONTROL (CTRL) menu, and any key in the PROGRAM BRANCH menu. Pressing one of these keys always adds the name of the command to the command line. Along with command keys, the menu keys assigned to variable names in the USER menu are affected by the current entry mode. The fol- lowing describes each entry mode and how it affects each type of key. The affected keys are all on the right-hand keyboard and are primar- ily menu keys. Immediate Entry Mode. This is the default entry mode—a new command line normally begins in this mode. The cursor appears as 0 or ¢. In immediate entry mode: ™ Pressing a command key (such as [STO]) executes the command, ™ Pressing a function key (such as [+]) executes the function. @ Pressing a variable key in the USER menu evaluates the variable name. 36 2: Basic Operations bed? Cdcddddd ddd ddddddddddddddddbb To save keystrokes, most command keys execute ENTER before exe- cuting the command. Exceptions to this rule are guest}, @222am, and 26688 in the MODE menu, and #2298, @2338, SEG, and seisR in the BINARY menu, which execute their command without executing ENTER--that is, without disturbing the command line. Algebraic Entry Mode. Pressing [*] to begin a name or algebraic, while in immediate entry mode, activates algebraic entry mode. The cursor appears as B or ¢. Pressing (*] a second time to complete the object reactivates immediate entry mode. In algebraic entry mode: ™ Pressing a command key executes the command, just as in immedi- ate entry mode. ™ Pressing a function key adds the function name to the command line. If the function takes its arguments in parentheses, such as SINCX), the opening parenthesis is also added. ® Pressing a variable key in the USER menu adds the variable name, unquoted, to the command line. Alpha Entry Mode. Pressing («] or §§(") to begin a program or string activates alpha entry mode, indicated by the @ annnunciator. The cursor appears as if or ¢. While in immediate or algebraic entry mode, pressing [a] activates alpha entry mode, and pressing [a] a second time reactivates the previous entry mode. At any time you can press W[eLOCK) to “lock” alpha entry mode indefinitely. To “unlock” the en- try mode, press [a]. In alpha entry mode: ™ Pressing a command key adds the command name to the command line. ® Pressing a function key adds the function name to the command line. ™ Pressing a variable key in the USER menu adds the variable name, unquoted, to the command line. If the cursor is in insert mode or positioned at the end of the com- mand line when you press any of the above keys, one space is added to the beginning and end of the appended text to separate commands. 2: Basic Operations 37 The Cursor Menu: (<> Pressing [#] assigns the cursor menu to the menu keys. No menu labels appear; instead, the action of the menu keys is indicated by the white labels above the menu keys. The cursor menu contains editing operations more elaborate than backspacing ((#]). Pressing [4] a sec- ond time reassigns the previous menu, whose menu labels reappear in the display. The cursor menu contains both shifted and unshifted keys. The unshifted keys are labeled in white above the corresponding menu keys, as illustrated. iS} pre a. a) | oa) ) } ) oe ES GS Ey fee The following table describes the operations associated with the unshifted cursor menu keys. If you press and hold any of these keys, except [INS], the operation is repeated until you release the key. 38 2: Basic Operations a a MR AR kok ey UUgs I — w —_ =~ — a —, a oot puouUuUt Unshifted Cursor Menu Keys Key INS Operation Switch between replace mode and insert mode. In replace mode, new characters replace existing characters; the cursor appears as QO, G. or Mf. In insert mode, new characters are inserted between existing characters; the cursor appears as 4, @, or #. Delete the character at the cursor position. Move the cursor up one line. Move the cursor down one line. Move the cursor left one space. Move the cursor right one space. The following table describes the operations associated with the shifted cursor menu keys. Except for these operations are equivalent to repetitions of the unshifted operations. Shifted Cursor Menu Keys Key INS Im L D1 A w ~ w) Delete all characters to the left of the cursor. Delete the character at the cursor position and all characters to the right. Move the cursor to the top row of the command line. Move the cursor to the bottom row of the command line. Move the cursor to the left end of the command line. Move the cursor to the right end of the command line. 2: Basic Operations 39 Enter Command Line: (ENTER Pressing (ENTER] evaluates the command line. (If no command line is present, pressing executes the command DUP, which dupli- cates the contents of level 1, DUP is described in “STACK.”) To evaluate the command line, ENTER must parse the text in the command line to make objects, combine the objects into a program, and then evaluate the program. More precisely, here is what happens when you press [ENTER] to evaluate a command line: 1. The busy annunciator ((@)) is turned on. 2. If UNDO is enabled, a copy of the current stack is saved. 3. The text string in the command line is searched for object delim- iters and separators, and then broken into the corresponding substrings. 4. Each substring of text is tested against syntax rules to identify its object type, and the corresponding object is put on the stack. 5. If COMMAND is enabled, a copy of the command line is saved in the command stack. 6. The objects put on the stack are combined into a single program object, which is then evaluated. 7. The busy annunciator ((e)) is turned off. If a substring fails the syntax tests in step 4, Suntax Error is dis- played. The objects that ENTER has put on the stack are dropped, and the command line is restored. The incorrect text is highlighted in inverse characters, followed by the cursor. If the error resulted from incomplete syntax, the cursor is positioned at the end of the line. Viewing Objects: (Views ], (views You can view the hidden lines of an object that occupies more than the available display lines with [Views] and (ews). B(views moves the display window up one line, and §§(ViEW*) moves the dis- play window down one line. You can also view hidden stack levels in this manner. Both §§(VIEW* ) and §§(VIEW# J are repeating keys and can be used even during object entry or editing. 40 = 2: Basic Operations Toad dG dodo dddddddddddddaoaand S oe o Ci _— oe Editing Existing Objects An existing object can be returned to the command line. You can then view its entire definition or change its definition, using the normal editing operations in the command line. EDIT returns an object in level 1 to the command line. VISIT returns an object in higher stack levels, or in user memory, to the command line. Editing Level 1: §§(E0!T EDIT acts as an inverse of ENTER, taking an object from level 1 and returning it to the command line. In more detail, here is what EDIT does: 1. A copy of the object in level 1 is converted to text form, and entered into the command line. 2. Alpha entry mode is activated. 3. The cursor menu is activated for editing. The original object in level 1 is highlighted to remind you that you are editing that object and that the original copy is still preserved. While the text form of the object is in the command line, you can alter it as you please. When you have finished editing you can: ® Press [ON] to cancel the edit, clear the command line, and leave the original object in level 1 unchanged. ® Press (ENTER) (or a key that performs ENTER) to replace the original object in level 1. (More precisely, the original object in level 1 is dropped and the command line is evaluated.) If the cursor menu is still active when you complete the editing, the previous menu is restored. 2: Basic Operations 41 Editing a Variable or Stack Level: jj VISIT is an extended version of EDIT. It enables you to view or edit an object stored in a variable, or in a stack level higher than level 1, without first recalling the object to level 1. Editing a variable. To edit the object stored in a variable, put the variable name in level 1 and press §§(ViSIT). The stored object is cop- ied to the command line, alpha entry mode is activated, and the cursor menu is activated. Editing a stack level. To edit the object in stack level n, put n on the stack and press (§J(VISIT]. The object is copied to the command line, alpha entry mode is activated, and the cursor menu is activated. The original object is highlighted to remind you that you are editing that object and that the original copy is still preserved. You terminate VISIT in the same way as EDIT: ™ Press [ON] to cancel the edit, clear the command line, and leave the original object unchanged. @ Press [ENTER] (or a key that performs ENTER) to replace the original object. (More precisely, the command line is evaluated, and the re- sulting object in level 1 replaces the original object.) If the cursor menu is still active when you complete the editing, the previous menu is restored. Evaluating Objects EVAL Evaluate Object Command Level 1 [ obj » 42 2: Basic Operations OCP CPCdOddddsdedddddddddddddaadd gs EVAL evaluates the object in level 1. The result of evaluation, includ- ing any results returned to the stack, depends on the evaluated object. Evaluation is described in detail in “Fundamentals”. The evaluation of functions is affected by flag 36, which selects symbolic or numerical evaluation mode. See the section on “ALGEBRA’. ~NUM Evaluate to Number Command Level 1 Level 1 obj z ~NUM is identical to EVAL, except it temporarily sets numerical eval- uation mode (described in “ALGEBRA") to insure that functions return numerical results. The current function evaluation mode is re- stored when +NUM is completed. SYSEVAL Evaluate System Object Command Level 1 #n » SYSEVAL is intended solely for use by Hewlett-Packard in application pro- gramming. General use of SYSEVAL can corrupt memory or cause memory loss. Use SYSEVAL only as specified by Hewlett-Packard applications. SYSEVAL evaluates the system object at the absolute address # n. You can display the version number of your HP-28C by executing # =1@ SYSEVAL (assuming DEC base, which is the default base). 2: Basic Operations 43 Names Names can be up to 127 characters in length, although practical con- siderations suggest names no longer than five or six characters. The first character must be a letter. Lower-case letters are distinguished internally from upper-case letters but appear as upper-case in the USER menu. You can not use HP-28C command names for variable names. The legal characters available on the keyboard are letters, digits, and the characters ?, E, 1, +, », and *. The following characters cannot be included in variable names: ™ Object delimiters (#,C, 1, ", ', ¢, +, ¢ 3, #, ¥). ® Algebraic operator symbols (+, -, *, #, *, 4, =, %, >, €, 3%, #, a f). ™ Current separator (. or ,). Reserved Names The following names are reserved for specific uses: ® EQ refers to the current equation used by the Solver and PLOT commands. =PAR refers to a list of parameters used by statistics commands. PPAR refers to a list of parameters used by plot commands. =DAT refers to the current statistical array. s1, s2, and so on, are created by ISOL and QUAD to represent arbi- trary signs obtained in symbolic solutions. @ nl, n2, and so on, are created by ISOL and QUAD to represent arbitrary integers obtained in symbolic solutions. You can use any of these names for your own purposes, but remem- ber that certain commands use these names as implicit arguments. 44 = 2: Basic Operations Cid dddddddddddddddddddddddaaddT TF Quoted and Unquoted Names You can enter a name in the command line with or without quotes, depending on whether you want the name to be evaluated. Quoted Names. Entering a name in single quotes means, “Put this name on the stack.” That is, a quoted name is put on the stack, but not evaluated, when the command line is evaluated. Unquoted Names. Entering a name without quotes means, “Evalu- ate the object named by this name.” That is, an unquoted name is put on the stack, and then evaluated, when the command line is evaluated. Duplicate Names Normally you can’t create two user variables that have the same name. However, certain commands (DRAW, |, QUAD, TAYLR) create a temporary user variable whose name duplicates the name argument you specify for the command. When the command completes execu- tion, it purges the temporary variable. However, if the command is aborted, by a system halt ((ON)(4]) or by an Out of Memory error, the temporary variable remains in user memory. If the temporary variable remains, and if you had previously created a variable with that name, there will be two variables with the same name in the USER menu. Use PURGE to clear the duplicate name from the USER menu. (PURGE clears the most recently created vari- able, which is the temporary variabie.) Creating, Recalling, and Purging Variables A variable is the combination of a name object and any other object, stored together in user memory. The name object represents the name of the variable; the other object is the value or contents of the variable. 2: Basic Operations 45 This section tells you how to create an object, how to recall the con- tents of a variable to the stack without evaluation, and how to purge a variable. sto Store Command Level 2 Level 4 obj ‘name’ ® | This command creates a variable whose name is name and whose value is obj. Subsequent evaluation of name puts obj on the stack and, if obj is a name or program, evaluates obj. RCL Recall Command Level 1 Level 1 ‘name* obj This command searches user memory for the variable name and re- turns its contents obj. The object returned is not evaluated. There is an important distinction between RCL (recall) and EVAL (evaluate). RCL requires a variable name as an argument and returns the contents of the variable. EVAL accepts any object as an argument and evaluates the object according to the rules for that object. RCL and EVAL have the same effect only when the argument is a name that refers to a data object, an algebraic, or a local variable. In these cases, both return the stored object to the stack. The following table summarizes the results of executing EVAL and RCL (with the name 'ABC' in level 1), for different values of the associated variable ABC. 46 2: Basic Operations CCUCUOUCUVUUOCUVUUCCOPOPddCddddddued Hs wa ow _ _— ” Comparison Between EVAL and RCL if 'ABC' contains: ‘ABC’ EVAL: "ABC' RCL: (undefined) Returns ‘ABC’. Causes Undefined Name error Aname 'DEF'. Evaluates 'DEF'. Returns 'DEF'. A program. Evaluates the program. | Returns the program. Any other object. Returns the object. Returns the object. PURGE Purge Command Level 1 ‘name' {name; namep ... > PURGE deletes one or more variables from user memory. If the argu- ment is a name, PURGE deletes the corresponding variable. If the argument is a list of names, PURGE deletes each of the named variables. Recovery The HP-28C automatically saves copies of command lines, the stack, and arguments. These copies enable you to recover from a mistake— to go back to where you were before the mistake. You can then redo a calculation correctly without having to start over from the beginning. The copies of command lines and arguments are also handy for re- peating calculations. 2: Basic Operations 47 These copies can consume a significant amount of memory. For each of these recovery features—command lines, the stack, and argu- ments—you can choose whether to enable or disable the feature. (The operations to enable or disable the recovery features are in the MODE menu.) This section assumes all recovery features are enabled, as they are at memory reset. The recovery operations are [COMMAND], which recovers copies of the command line, [UNDO], which recovers a copy of the stack, and W@LAST), which recovers the last arguments used. Command Line Recovery: [§[COMMAND Each execution of ENTER saves a copy of the command line. Up to four saved command lines are stored in the command stack. Pressing, HELCOMMAND) once retrieves the first (most recently saved) command line, replacing the present contents of the command line. Pressing WE(COMMAND) a second time retrieves the second command line, and so on. If you press [COMMAND] more than four times, the sequence starts over with the first command line. Stack Recovery: §§[(UNDO Each execution of ENTER saves a copy of the stack before evaluating the command line. Pressing (UNDO) clears the current stack and re- places it with the saved stack. UNDO restores the stack to the same condition as before you pressed [ENTER] (or the key that executed EN- TER), but it doesn’t affect any changes that occured in the user flags or in user memory. While a program is suspended, the UNDO feature, (including iia, S222, and UNDO itself), is associated with the suspended program environment. That is, UNDO will restore the stack that was present prior to the last ENTER, but after the (most recent) program was sus- pended. After a program is continued and completes execution, UNDO will then reference the stack saved before the program was executed. 48 2: Basic Operations FUdddddddddd bb dd dddbbdddddddbdab0TS Last Arguments Recovery LAST Last Arguments Command Level 3 Level 2 Level 1 » obj » Obj, Objn » obj; obj2 objg | Commands that take arguments from the stack save copies of those objects. Executing §§§(LAST) returns the objects most recently saved by a command. The objects return to the same stack levels that they orig- inally occupied. Commands that take no arguments leave the current saved arguments unchanged. Note that when LAST follows a command that evaluates procedures , (such as f, 8, ISOL, EVAL, ROOT, and so on), the last arguments saved are from the procedure, not from the original command. Low Memory The HP-28C contains 2048 bytes of user memory, of which about 400 are reserved for system use, leaving about 1650 bytes for general use. Virtually every HP-28C operation requires some memory use—even interpreting the command line. The amount of memory used by some algebra commands (COLCT, EXPAN, TAYLR) increases rapidly as their arguments become more complicated. To use the HP-28C effectively, keep in mind that it is a calculator for interactive problem solving. Its power is in its built-in operations, not in its capacity to store large databases or program libraries. Try to leave at least a few hundred bytes of memory free for dynamic sys- tem use. 2: Basic Operations ag Because the HP-28C operating system shares memory with user ob- jects, you can fill memory so full of user objects that normal calculator operation becomes difficult or impossible. The HP-28C provides a se- ties of low memory warnings and responses. In order of increasing severity—that is, decreasing free memory—these warnings are: 1. Insufficient Memory 2. No Room for UNDO 3. No Room to ENTER 4. Low Memory! 5. Ho Room to Show Stack 6 Gut of Memory Insufficient Memory If there isn’t enough memory available for a command to execute, the command halts and displays Insufficient Memory. If LAST is enabled, the original arguments are restored to the stack. If LAST is disabled, the arguments are lost. No Room for UNDO Suppose that UNDO is enabled and you have a 11 x 11 matrix on the stack. You can’t perform even a simple operation such as NEG, because there isn’t enough room in memory for both the original ma- trix and the resulting matrix. In such cases a No Room for UNDO error occurs, which automatically disables UNDO. You can then retry the operation that failed and later reenable UNDO. 50 2: Basic Operations TOTO CCOCCCeeeecweecd@¢dddetdddcdovadeddd No Room to ENTER If there isn’t enough memory available to process the command line, the calculator clears the command line and displays No Room to ENTER. A copy of the unsuccessful command line is saved in the command stack if the command stack is enabled. If you're attempting to edit an existing object, using EDIT or VISIT, and a copy of the unsuccessful command line is saved in the com- mand stack, purge the original copy of the object, press §§[[COMMAND to recover the command line containing the edited object, and press ENTER] to enter the edited version. Low Memory! If fewer than 128 bytes of free memory remain, Low Memory! flashes once in the top line of the display. This message will flash at every keystroke until additional memory is available. Clear unneeded objects from memory before continuing your calculations. No Room To Show Stack It is sometimes possible for the HP-28C to complete all pending oper- ations, and not have enough free memory left for the normal stack display. In this case, the calculator displays No Room to Show Stack in the top line of the display. Those lines of the display that would normally display stack objects, now show those objects only by type, for example, Real Number, Algebraic, and so on. The amount of memory required to display a stack object varies with the object type—algebraics usually require the most memory. Clear one or more objects from memory, or store a stack object as a variable so that it does not have to be displayed. 2: Basic Operations 51 Out of Memory The extreme case of low memory is when there is insufficient memory for the calculator to do anything—display the stack, show menu la- bels, build a command line, and so on. In this situation, you must clear some memory before continuing. A special Qut of Memory procedure is activated, which will create a display: Qut Of Memory Purge? Command Stack a The calculator will sequentially prompt you to clear: 1. The COMMAND stack (if enabled). 2. The UNDO stack (if enabled). 3. LAST Arguments (if enabled). 4. The stack. 5. Each user variable, by name. For each item that you want to purge, press the S{£% menu key; for those that you want to keep, press Myilie. After pressing @@yaciy at least once, you can try to terminate the Out of Memory procedure by pressing [ATTN]. If sufficient memory is available, the calculator re- turns to the normal display; otherwise, the calculator beeps and continues through the purge sequence. After cycling once through the choices, the Gut of Memory procedure attempts to return to nor- mal operation. If there still is not enough free memory, the procedure starts over with the sequence of choices to purge. 52 2: Basic Operations System Operations There are special key combinations that interrupt normal HP-28C op- eration to perform system operations. These system operations include adjusting display contrast, halting endless program loops that do not respond to the [ON] key, resetting memory, or performing an elec- tronic system test. Attention: [ON] Pressing [ON] clears the command line and displays the stack. If a pro- cedure is executing, pressing [ON] halts the procedure. The result is similar to executing ABORT (described in “PROGRAM CONTROL’). Pressing turns the HP-28C off. When you next press (ONJ, the HP-28C will resume operation in the same state as when you turned it off. The HP-28C will turn itself off if it is left idle for 10 minutes. Contrast Control: (on ][+], (on][-) You can change the HP-28C display contrast as follows: 1. Press and hold the [ON] key. 2. Press (+) to increase the contrast or press [=] to decrease the con- trast. As long as you hold the (ON) key down, you can press [+ or (<) repeatedly or continuously, until you find the best contrast. 3. Release the [ON] key. Cede ddddddddddddddddddddd dsc 2: Basic Operations 53 System Halt: (ON ][4] To perform a system halt press the key and the [4] key simulta- neously, then release both. A system halt does the following: @ Stops all command or procedure execution. @ Clears any local variables. ™ Clears the stack. ™ Activates the cursor menu. @ Restarts normal keyboard operation. The most common use of a system halt is to stop an “endless” name evaluation loop. Remember that evaluation of a name that refers to a second name causes evaluation of the second name. If the second name refers back to the first name, evaluating either name causes an endless loop. For example: 'y' 'R' STO 'K' '¥' STO X results in an endless loop. Because name evaluation is critical for sym- bolic algebra, it is optimized for speed, and cannot be halted by the ON] key. You must use a system halt to interrupt the loop. Memory Reset: (ON J[INS][>] To clear and reset the entire HP-28C memory: 1. Press and hold (ON). 2. Press and hold (INS) and [>]. 3. Release [INS] and (>). 4. Release (ON). 54 2: Basic Operations A memory reset does the following: @ Stops all command or procedure execution. ™ Clears any local variables. ™ Purges all user variables. ® Clears the stack. ™ Resets all user flags to their default values. ™ Activates the cursor menu. ™ Beeps and displays Memory Lost in display line 1. . Restarts normal keyboard operation. Cancel Reset: (ON)[DEL] If you initiate a system halt ((ONJ[4]) or a memory reset (LONJUNS](>]), the halt or reset does not take place until you release the key. You can cancel the pending action at any time before you release the (ON) key by doing as follows: 1. Release all keys except [ON]. 2. Press and release (DEL). 3. Release the key. System Test: (ON][¥], (ON][< The HP-28C includes tests of its system electronics for manufacturing and service operations. You can begin the tests by pressing [ON] and (¥] simultaneously and then releasing them. Each time the calculator completes a test, as shown by a new display pattern, you can advance by pressing any key. re @w PII dddeddddddddddddddddbadT | — oo — wo 2: Basic Operations 55 When the display shows KEYBOARD TEST, press [A] through [F], then [G] through (1), then (MJ through (RJ, and so on. When you've completed the left-hand keyboard, test the right-hand keyboard be- ginning with If the calculator successfully completes all tests, it displays OK-28C. You can begin repeated tests by pressing (ON) and [4] simultaneously. The calculator repeats the series of tests, skipping the keyboard test, until you press a key. The calculator then displays a FAIL message, indicating that its test was interrupted. The system tests also perform a system 56 2: Basic Operations halt ((ON)[a)). yeCeePeetcrererosssddddddddddddiud (PRY Dictionary All HP-28C operations (except for the special command SYSEVAL) are available on a key. Frequently used operations such as +], and (J are always available on the key showing their name. All other operations are available on the menu keys—the six keys at the top of the right-hand keyboard. (The variables you've created are also available on the menu keys, as described in “SOLVE” and “USER”.) Menus The current assignment of each menu key appears on its menu label, the name displayed in inverse video directly above the key. If no la- bels are displayed, the cursor menu is active. The cursor operations are used in editing; they are described in the chapter on “Basic Operations.” Operations are grouped in menus according, to a common application, such as trigonometry, or a common argument type, such as arrays. You select a menu by pressing a menu selection key such as [TRIG] or Wilannay). Each menu consists of menu lines—a set of six commands assigned to the menu keys at one time. Pressing a menu selection key assigns the first menu line to the menu keys. Pressing [NEXT] assigns the next menu line, eventually returning to the first menu line. Press- ing ((PREV] steps through the menu lines in the reverse order from N Pressing a menu key evaluates the assigned operation or adds its name to the command line. Pressing an unassigned menu key (indi- cated by a blank menu label) causes the calculator to beep. For a complete description, refer to the section on “Object Entry” in “Basic Operations.” 3: Dictionary 57 The following table lists the menu selection key and description for each menu in the HP-28C. ahaiia sna Description (=) Cursor movement, editing operations. G@ACGEBRA Algebra commands. W@lAnnAy Vector and matrix commands. WLBinary Integer arithmetic, base conversions, bit manipulations. (Q@GBRANCH Program branch structures. Wicwrnx Complex number commands. (cre Program control, halt, and single-step operations. lust) List commands. @i(locs Logarithmic and exponential functions, hyperbolic functions. B(Move Display, angle, recovery, and radix mode selection. ®t Plotting commands. BPaint Printing commands. GREAL Real number commands. Numeric and symbolic solution commands, the Solver. @(stack Stack manipulation commands. Wistar Statistics and probability commands. W(stTorE Storage arithmetic commands, in-place matrix commands. @(StRING Character string commands. cesT) Flag commands and logical test functions. TRIG Trigonometric functions, rectangular/polar conver- sion, degrees/radians conversion, and Hour/Minute/Second arithmetic commands. (USER ] Variables, user-memory commands. 58 Dictionary CUCCCCCOCCUCCUVUeCedtddcddudvi tw ALGEBRA COLCT EXPAN SIZE FORM OBSUB EXSUB TAYLR: {SOL QUAD SHOW OBGET EXGET Algebraic Objects An algebraic object is a procedure that is entered and displayed in mathematical form. It can contain numbers, variable names, func- tions, and operators, defined as follows: Number: A real number or a complex number. Variable name: Any name, whether or not there is currently a vari- able associated with the name. We will use the term formal variable to refer to a name that is not currently associated with a user variable. When such a name is evaluated, it returns itself. Function: An HP-28C command that is allowed in an algebraic pro- cedure. Functions must return exactly one result. If one or more of a function’s arguments are algebraic objects, the result is algebraic. Most functions appear as a function name followed by one or more arguments contained within parentheses; for example, 'SINCX)'. Operator: A function that generally doesn’t require parentheses around its arguments. The operators NOT, \/, and NEG (which ap- pears in algebraics as the unary — sign) are prefix operators: their names appear before their arguments. The operators +, —, *, /, % =, , #, <, >, <, 2, AND, OR, and XOR are infix operators: their names appear between their two arguments. 3: Dictionary 59 - ALGEBRA Precedence The precedence of operators determines the order of evaluation when expressions are entered without parentheses. The operations with higher precedence are performed first. Expressions are evaluated from left to right for operators with the same precedence. The following lists HP-28C algebraic functions in order of precedence, from highest to lowest: 1. Expressions within parentheses. Expressions within nested pa- rentheses are evaluated from the inside out. 2. Functions such as SIN, LOG, and FACT, which require argu- ments in parentheses. 3. Power (4) and square root (\/). 4. Negation (—), multiplication (), and division (/). 5. Addition (+) and subtraction (—). 6. Relational operators (==, #, <, >, <, >). 7. AND and NOT. 8. OR and XOR. 9 = Algebraic objects and programs have identical internal structures. Both types of procedures are sequences of objects that are processed sequentially when the procedures are evaluated. The algebraic 'X+¥' and the program « X Y + ® are both stored as the same sequence (the RPN form). Algebraics are “marked” as algebraics so that they will be displayed as mathematical expressions and to indicate that they satisfy algebraic syntax rules. 60 3: Dictionary SUC eee Ut oedv eds dededdddddsddeddaoagdddYd ALGEBRA Algebraic Syntax and Subexpressions A procedure obeys algebraic syntax if, when evaluated, it takes no arguments from the stack and returns exactly one argument to the stack, and if it can be subdivided completely into a hierarchy of subexpressions. A subexpression can be a number, a name, or a func- tion and its arguments. By hierarchy, we mean that each sub- expression can itself be an argument of a function. For example, consider the expression: "L-SINCX+Y3! The expression contains one number, 1, and two names, X and Y, each of which can be considered as a simple subexpression. The ex- pression also contains three functions, +, -, and SIN, each of which defines a subexpression along with its arguments. The arguments of + are X and ¥; X+¥ is the argument of SIN, and 1 and SIN¢X+¥) are the arguments of -. The hierarchy becomes more obvious if the ex- pression with its operators is rewritten as ordinary functions (Polish notation): —(1, SIN (+(x, Y)) An object or subexpression within an expression is characterized by its position and level. The position of an object is determined by counting from left to right in the expression. For example, in the expression '1-SINCX+Y)', 1 has position 1, - has position 2, SIN has position 3, and so on. The position of a subexpression is the position of the object that de- fines the subexpression. In the same example, 'SINCX+¥)' has position 3, since it is defined by SIN in position 3. 3: Dictionary 61 ALGEBRA The level of an object within an algebraic expression is the number of pairs of parentheses surrounding the object when the expression is written in purely functional form. For example, in the expression ' 1- SINCK+#¥>', - has level 0, 1 and SIN have level 1, + has level 2, and X and ¥ have level 3. Every algebraic expression has exactly one level 0 object. (User-defined functions are an apparent exception to the rule for determining the levels of a subexpression. In the expression ‘FCA,B>', for example, where F is a user-defined function, F, A, and B are all at level 1; there is no explicit level 0 function. This is because F and its arguments A and B are all arguments for a special “invisible” function that provides display and evaluation logic for user-defined functions.) If we take the above expression and rewrite it again, by removing the parentheses, and placing the functions after their arguments, we ob- tain the RPN form of the expression: 1X ¥ + SIN - This defines a program that has algebraic syntax, and is effectively equivalent to the corresponding algebraic object. Programs, however, are more flexible than algebraic objects; for example, we could insert a DUP anywhere in the above program and still have a valid program, but it would no longer obey algebraic syntax. Since DUP takes one argument and returns two, it cannot define or be part of an algebraic subexpression. Equations An algebraic equation is an algebraic object containing two expressions combined with an equals sign (=). Mathematically, the equals sign im- plies the equality of the two subexpressions on either side of the sign. In the HP-28C, = is a function of two arguments. It is displayed as an infix operator, separating the two subexpressions that are its argu- ments. Internally, an equation is an expression with = as its level 0 object. 62 3: Dictionary reUUeCCCeeeeeePetdddtcrcvud Tw . ALGEBRA When an equation is numerically evaluated, = is equivalent to ~. This feature allows expressions and equations to be used interchangeably as arguments for symbolic and numerical rootfinders. An equation is equivalent to an expression with = replaced by ~, and an expression is equivalent to the left side of an equation in which the right side is zero, When an equation is an argument of a function, the result is also an equation, where the function has been applied to both sides. Thus "X=¥' SIN returns 'SINCXD=SINCY)'. Conventional mathematical usage of the equals sign = is ambiguous. The equals sign is used to equate two expressions, as in x + siny = 2z + t, This type of equation is suitable for solving, that is, adjusting one or more variables to achieve the equality of the two sides. The equals sign is also used to assign a value to a variable, as in x = 2y + z. This equation means that the symbol x is a substitution for the longer expression 2y + z; it is meaningless to “solve” this equation. The ambiguity of the equals sign is compounded by certain computer languages such as BASIC, where “=” means “replace by,” as in X = Y + Z. Such notation doesn’t imply a mathematical equation at all. In the HP-28C, the equals sign always means equating two expres- sions, such that solving the equation is equivalent to making the difference between the two expressions zero. (Assignment is per- formed by STO, which is strictly a postfix command that takes two arguments.) 3: Dictionary 63 = Equal Analytic Level 1 zy Zo » z ‘symb' » "z=symb' * symb* z . ‘symb=2' "symb;' —‘symbz'—® " symb,=symb,' This function combines two arguments, which must be names, expres- sions, real numbers or complex numbers. If the HP-28C is in symbolic evaluation mode (flag 36 set), the result is an algebraic equation, with the level 2 argument on the left side of the equation, and the level 1 argument on the right. If the HP-28C is in numerical evaluation mode (flag 36 clear), the result is the numerical difference of the two arguments. In effect, = acts as the — operator in numerical evaluation mode. Functions of Symbolic Arguments Function Evaluation Mode Symbolic Evaluation Mode (flag 36 set). In symbolic evaluation mode, functions return symbolic results if their arguments are sym- bolic, This is the default evaluation mode. For example: "X' SIN returns 'SINCX>!' "X*245' LN returns 'LNCX*2+5)'. 3 'X' + returns '3+%' 2 'X' + SIN returns 'SINC2+X)'. ‘S' 1 2 IFTE returns ‘IFTECK,1,23'. 64 3: Dictionary TCOCCOCUVOCCOdVddddddddddabdd gs » ALGEBRA Numeric Evaluation Mode (flag 36 clear). [In numeric evaluation mode, each function attempts to convert symbolic arguments to data objects. Once the arguments are converted to numbers, the function is applied to those arguments, returning a numeric result. The argu- ments are repeatedly evaluated until they become data objects or formal variables. If the final arguments are formal variables, an Undefined Name error occurs. Automatic Simplification Certain functions, when evaluated, replace certain arguments or com- binations of arguments with simpler forms. For example, when '1*xX' is evalulated, the * function detects that one of its arguments is a 1, so the expression is replaced by 'X'. Automatic simplification occurs in the following, cases: Ori: id Expression inal Expression Negation, Inverse, Square ~O-XKD x INVCINVCKDD x SQCLx) x SQCK*YD RACY RZD Ss@cid -1 Addition and Subtraction G+% or X+8 ® x-8 x a-% -k R-K a Multiplication ¥*G@ or OEX 6 weL or LEX x ekC-1) or -1kx -K ~R#EC-1) or -1k¢-K> x iki 1 -REINY CY) ~OReYD ~ REY h ORK D RHINVCYD Key 3: Dictionary 65 » ALGEBRA Original Expression Simplified Expression OrR Vv INVCKD lek Power 14K ee RAL (LK! INVCRO*C-19 RoC-1) i*2 i*¢2,6) SIN, COS, TAN SINCASINCX)) SINC-K) SINGH) SINCH72> COSCACOSCKID cos¢-x> cased casta72) TANCATANCX)> TANC-X2 TANC HD - ABS, MAX, MIN, MOD, SIGN ABSCABSCXK)) ABS¢-x> MAKCK, HD MINCK,K? MODCR, 83 MODCG,%) MODCR, KD MODCMODCRK, 79,9 SIGNCSIGNCK)) xR INVCX> -lor¢-1,@)>* €-1,@> x ~SINCKD et it & cos¢x) -1t St x -TANCX> ot ABSCEX> ABSCR? x x x a 6 MODcK,¥> SIGNCX) clear). 1 Applies only when the angle mode is radians "Depends on symbolic evaluation mode (flag 36 set) or numerical evaluation mode (flag 36 66 3: Dictionary "CPO PPC PC Ocoee ddsdedddddedddddddaadddY -ALGEBRA Original Expression ALOG, EXP, EXPM, SINH, COSH, TANH ALOG(LOG¢ >) EXPCLNCK3) EXPMCLNP1¢X)) SINHCASINHE X) > COSHCACOSH(X >> TANHCATANH CX > > IM, RE, CONJ IMCIMCK)> IMCRECK> IMCCONUC >> IMCiD RECRECX)? RECIMEH > RECCONSCH2> RECi> CONUCCONUCK2 > CONUCRECK2> CONUCIMCK2> CONUCiD ied Expression Functions of Equations Functions applied to equations in symbolic evaluation mode return equations as results. If a function of one argument is applied to an equation, the result is an equation obtained by applying the function separately to the left and right sides of the argument equation. For example: ‘SX+2=¥' SIN returns 'SINCK+2>=SINCY)'. 3: Dictionary 67 » ALGEBRA If both arguments of a two argument function are equations, the re- sult is an equation derived by equating the expressions obtained by applying the function separately with the two left sides of the equa- tion as arguments, and with the two right sides. For example: "M+¥=Z+T' 'SINC@)=5' + returns 'X+V¥+SINCQ)=Z+T+5' If one argument of a two argument function is a numeric object or an algebraic expression, and the other is an equation, the former is con- verted to an identity equation with the original object on both sides. Then the function acts as in the case where both arguments are equa- tions. For example: "X=¥' 3 - returns 'X%-3=¥-3'. These properties define the behavior of algebraic objects when they are evaluated (see the next section) as well as allow you to perform algebraic calculations in an interactive RPN style, much as you carry out ordinary numerical calculations. Evaluation of Algebraic Objects Evaluation of algebraic objects is a powerful feature of the HP-28C that allows you to consolidate expressions by carrying out explicit nu- merical calculations, and substitute numbers or expressions for variables. In order to understand what to expect when you evaluate an algebraic object remember that an algebraic object is equivalent to a program, and that evaluating a program means to put each object in the program on the stack and, if the object is a command or name, evaluate the object. To demonstrate what this means, let us suppose that we have defined variable X to have the value 3 (that is, 3 'X' $TQ), Y to have the value 4, and Z to have the value '%+T'. We will also assume that symbolic evaluation mode (flag 36) is set, so that functions will accept symbolic arguments. 68 3: Dictionary Cdededdddddddddddddddcddddcdddaadwy -ALGEBRA First consider the expression 'X+¥'. When we evaluate this expres- sion ('%+Y' EVAL), we obtain the result 7. Here’s why: Internally, 'x+¥' is represented as X Y +. So when 'X+¥' is evaluated, X, Y, and + are evaluated in sequence: 1. Since X is a name, evaluating it is equivalent to evaluating the object stored in the variable %, the number 3. Evaluating X puts 3 in level 1. 2. Similarly, evaluating Y puts 4 in level 1, pushing the 3 into level 2. Now + is evaluated, with the numeric arguments 3 and 4 on the stack. This drops the 3 and the 4, and returns the numeric result 7. y Now try evaluating 'X+T': 1. Evaluating X puts 3 in level 1. 2. Tis a name not associated with a variable, so it just returns itself to level 1, pushing the 3 into level 2 3. This time + has 3 and T as arguments; since T is symbolic, + returns an algebraic result, '3+T' Finally, consider evaluating 'X+¥+Z'. Internally, this expression is represented as X Y + Z +. Following the same logic as in the above examples, evaluation gives the result '7+X+T'. We can evaluate this result again and obtain the new result '1@+T'. Further evaluation makes no additional changes, since T has no value. Notice that evaluating 'X+T+¥' (keeping the same values as above) returns '3+T+4', not '7+T' or 'T+?'. The values 3 and 4 obtained by evaluating X and Y are not arguments to the same + operator in the expression, and hence are not combined. If you want to combine the 3 and the 4, you can use either the COLCT command for auto- matic collection of terms, or the FORM command for more general rearrangement of the expression. 3: Dictionary 69 .» ALGEBRA Symbolic Constants: e, 7, i, MAXR, and MINR There are five built-in algebraic objects that return a numerical repre- sentation of certain constants. These objects have the special property that their evaluation is controlled by symbolic constants evaluation mode (flag 35) as well as by the functions evaluations mode (flag 36). When flag 36 is clear (numeric evaluation mode), these objects evalu- ate to their numerical values (regardless of constants evaluation mode (flag 35)). When flag 36 is set (symbolic evaluation mode): @ If flag 35 is clear, these objects will evaluate to their numeric val- ues. For example: ‘2ki' EVAL returns (8,2). ™ If flag 35 is set, these objects wil] retain their symbolic form when evaluated. For example: “2xi' EVAL returns '2*i'. The following table lists the five objects and their numerical values. HP-28C Symbolic Constants Object Name Numerical Value e 2.71828182846 © 3.14159265359 i (0.00000000000, 1 00000000000) MAXR 9.99999999999E 499 MINR 1.00000000000E-499 70 3: Dictionary VUVUUOCOCOCHOOBBOBBKCOKBKOCGOBOBBEOOUOBSEEE EF » ALGEBRA The numerical values of e and # are the closest approximations of the constants ¢ and that can be expressed with 12-digit accuracy. The numerical value of i is the exact representation of the constant i. MAXR and MINR are the largest and smallest non-zero numerical val- ues that can be represented by the HP-28C. For greater numerical accuracy, use the expression 'EXP¢X)>' rather than the expression 'e”X'. The function EXP uses a special algo- rithm to compute the exponential to greater accuracy. When the angle mode is radians and flags 35 and 36 are set, trigono- metric functions of and #72 are automatically simplified. For example, evaluating 'SIN¢#>' gives a result of 0. COLCT EXPAN SIZE FORM OBSUB EXSUB These commands alter the form of algebraic expressions, much as you might if you were dealing with the expressions “on paper”. COLCT, EXPAN, and FORM are identity operations, that is, they change the form of an expression without changing its value. OBSUB and EXSUB allow you to alter the value of an expression by substituting new ob- jects or subexpressions into the expression. cOLCcT Collect Terms Command Level 1 Level 1 ‘symb;' @ — ‘symbp" 3: Dictionary 71 .. ALGEBRA COLCT rewrites an algebraic object so that it is simplified by “collect- ing” like terms. Specifically, COLCT: ® Evaluates numerical subexpressions. For example: "1+2+L0G6¢(16)' is replaced by 4. ™ Collects numerical terms. For example: '1+%+2'is replaced by ‘Bae ® Orders factors (arguments of *), and combines like factors. For ex- ample: 'X°Z¥Y*X*TY? is replaced by 'X*¢T+Z9%¥%2". ™ Orders summands (arguments of +), and combines like terms dif- fering only in a numeric coefficient. For example: 'S+N+V43H8' is replaced by 'S*K+¥'. COLCT operates separately on the two sides of an equation, so that like terms on opposite sides of the equation are not combined. The ordering (that is, whether X precedes Y) algorithm used by COLCT was chosen for speed of execution rather than conforming to any obvious or standard forms. If the precise ordering of terms in a resulting expression is not wnat you desire, you can use FORM to rearrange the order. EXPAN Expand Products Command Level 1 Level 1 ‘symb,' » — *symbp" 72 3: Dictionary PCCeCECCC Codd tddddddddddddddddaad ey . ALGEBRA EXPAN rewrites an algebraic object by expanding products and pow- ers. More specifically, EXPAN: ® Distributes multiplication and division over addition. For example: "AKCB4+C>' expands to 'AB+AXC'; 'CB+C9/A' expands to 'BeA+CYA'. @ Expands powers over sums. For example: 'A*¢B+C>' expands to "RSBEASC'. @ Expands positive integer powers. For example: 'X*5' expands to 'S*K°4'. The square of asum '¢X+¥)*2' or 'SQCK+Y) ' is ex- panded to 'R*2+24RY4¥°2'. EXPAN does not attempt to carry out all possible expansions of an expression in a single execution. Instead, EXPAN works down through the subexpression hierachy, stopping in each branch of the hierarchy when it finds a subexpression that can be expanded. It first examines the level 0 subexpression; if that is suitable for expansion, it is expanded and EXPAN stops. If not, EXPAN examines each of the level 1 subexpressions. Any of those that are suitable are expanded; in the remainder, the level 2 subexpressions are examined. This process continues down through the hierarchy until an expansion halts fur- ther searching down each branch. For example: Expand the expression "A*¢BxK(C*2+D))'. 1. The level 0 operator is the left *. Since it cannot be expanded, the level 1 operator * is examined. One of its arguments is a sum, so the product is distributed yielding: ‘AC CBAC 2 +BKD9' nb The level 0 operator is still the left *, but now its power is a sum, so the power is expanded over the sum when EXPAN is exe- cuted again: “ACC BEC*2 9 *A*(BXD) ' 3: Dictionary 73 ALGEBRA 3. One more expansion is possible. The level 0 operator is now the middle *. Since it cannot be expanded, the level 1 operators, the outside “’s, are examined. They cannot be expanded, so the level 2 operators, the outside *’s, are examined. Since they cannot be expanded, the level 3 operator, the middle %, is examined. Its power is a positive integer, so the power is expanded: "ACCBECCKCDKA*CBED)' SIZE Size Command "string" » n {list} n Caray] =» (list? ‘symb' ow n SIZE returns the number of objects that comprise an algebraic object. Refer to “ARRAY,” “LIST,” and “STRING” for the use of SIZE with other object types. FORM Form Algebraic Expression Command Level 1 Level 3 Level 2 Level 1 ‘symb,'® * symbp" "symb;' ® ‘symb,' n "symbs' 74 3: Dictionary Oddi dd ddddbdbdbddddddddddddddboadTdTyS . ALGEBRA FORM is an interactive expression editor that enables you to rear- range an algebraic expression or equation according to standard rules of mathematics. Its operation is described in the next section, “ALGE- BRA (FORM).” OBSUB Object Substitute Command Level 3 Level 2 Level 1 Level 1 * symb,' n {obj} » 'symb,' OBSUB substitutes an object in the specified position of an algebraic object. The object is the contents of a list in level 1, the position n is in level 2, and the algebraic object is in level 3. For example: 'AXB' 3 <¢ C } OBSUB returns 'AXC'. You can substitute functions as well as user variables. For example: ‘AXB' 2 ¢ + } OBSUB returns 'A+B’'. EXSUB Expression Substitute Command Level 3 Level 2 Level 1 Level 1 * symb," n "symbo' ™ ‘symbg' EXSUB substitutes the algebraic (or name) 'symb,' for the subexpression in the nth position of the algebraic 'symb,' and re- turns the result expression 'symb3'. The nth subexpression consists of the nth object in an algebraic object definition plus the arguments, if any, of the object. For example: "CA+B)KC' 2 'E*F' EXSUB returns 'E*FXC'. 3: Dictionary 75 ». ALGEBRA TAYLR = ISOL QUAD SHOW OBGET EXGET TAYLR is described in “Calculus,” along with d and /. ISOL, QUAD, and SHOW are described in “SOLV.” OBGET Object Get Command Level 2. Level 1 Level 1 sym" n = Cobj? OBGET returns the object in the nth position of the algebraic object symb in level 2. The object is returned as the only object in a list. For example: "CA+B>*#C' 2 OBGET returns ¢ + }. If n exceeds the number of objects, OBGET returns the level 0 object EXGET Expression Get Command Level 2 Level 1 Level 1 * symb,* n ® ‘symby" EXGET returns the subexpression in the mth position of the algebraic symb, in level 2. The nth subexpression consists of the uth object in an algebraic object definition plus the arguments, if any, of the object. For example: "CA+B>#C' 2 EXGET returns 'A+B'. If 1 exceeds the number of objects, EXGET returns the level 0 subexpression. 76 3: Dictionary “= = = ~ ) -] ] e = = e = = = = —] = —) = = = 7 7 e 7 7 = = ALGEBRA (FORM) FORM Form Algebraic Expression Command Level 1 Level 3 Level2 —_Level 4 "symb,;'® “symb," ‘symb,' @ — ‘symbp" n * symbg' FORM is an interactive expression editor that enables you to re- arrange an algebraic expression or equation according to standard rules of mathematics. All of FORM’s mathematical operations are identities; that is, the result expression symb will have the same value as the original argument expression symb,, even though the two may have different forms. For example, with FORM you can rearrange 'A+B' to 'B+A', which changes the form but not the value of the expression. A variation of the command EXGET is available while FORM is ac- tive. It allows you to duplicate a subexpression symb; contained in symb;, and return symb, and its position 1 to the stack When FORM is executed, the normal stack display is replaced by a special display of the algebraic object, along with a menu of FORM operations at the bottom of the display. The special display initially starts in line two of the display (second from top), and wraps into line three if the object is too long to display in a single line. If the object requires more than two display lines, you will have to move the FORM cursor through the object to view the remainder. 3: Dictionary 77 ». ALGEBRA (FORM) To exit FORM and continue with other calculator operations, press ON]. Alternatively, you can press the {343 menu key, which also returns the selected subexpression symb3 and its position n to the stack. The FORM cursor highlights an individual object in the expression display. (It is not a character cursor like that of the command line.) The highlighted object appears as white characters against a black background. The cursor identifies both the selected object, which is highlighted, and the selected subexpression, which is the subexpression consisting of the selected object and its arguments, if any. You can move the cursor to the left or right in the expression by pressing the or $8588 keys in the menu; when the cursor moves, it moves directly from object to object, skipping any interven- ing parentheses. The cursor is always in line two of the display. If you attempt to move the cursor past the right end of line two, the expres- sion scrolls up one line in the display, and the cursor moves back to the left end of line two. Similarly, if you try to move the cursor past the left end of line two, the expression scrolls down one line, and the cursor moves to the right end of line two. The expression display differs from the normal stack algebraic object display by inserting additional parentheses in order to make all oper- ator precedence explicit. This feature helps you identify the selected subexpression associated with the selected object as shown by the cursor. This is important, since all FORM menu operations operate on the selected subexpression. While FORM is active, a special set of operations is available as menu keys. The initial menu contains six operations common to all subexpressions. Additional menus of operations are available via the NEXT] and (M§(PREV] keys; the contents of the additional menus vary according to the selected object. Only those operations that apply to the selected object are shown. You can reactivate the first six menu keys at any time by pressing ENTER]. 78 3: Dictionary OddddddddddddbdddddddddddddeacrTargs «ALGEBRA (FORM) FORM Operations In the following subsections, all of the operations that can appear in the FORM menus will be described. The descriptions consist primarily of examples of the “before” and “after” structures of the selected subexpressions relevant to each operation. Each possible operation is represented by an example like this: @222 Distribute to the left. Before After (CA+B0 89 | CCAKCI SCBCD For simplicity variable names such as A, B, and C will be used, but each of these can represent a general object or subexpression. The ex- ample shows that applying 688 (distribute to the left) to ‘“CA+B>*C' returns 'AXC+B4C'. Individual FORM operations appear in the FORM menu when they are relevant for the selected object. For example, G54 appears in the menu when + is the selected object, but not when SIN is selected. Furthermore, if an operation does appear, you will be able to execute it only if it applies to the selected subexpression. For example, appears when * is the selected object, since distribution is a property of multiplication. However, the menu key is inactive (it will just beep if pressed) unless the subexpression is of the form '(R+B)*C' or ‘CA-B>*C', which can be distributed. 3: Dictionary 79 ALGEBRA (FORM) The initial FORM menu contains the following operations: Operations Common to All Subexpressions Operation Description Collects like terms in the selected subexpression. This opera- tion works the same as the command COLCT except that its action is restricted to the selected subexpression. The FORM cursor is repositioned to the beginning of the expression display. Expands products and powers in the selected subexpression. This operation works the same as the command EXPAN ex- cept that its action is restricted to the current subexpression. The FORM cursor is repositioned to the beginning of the ex- pression display. Displays the level of the selected object or its associated se- lected subexpression. The level is displayed as long as you hold down the = key. Exits FORM, leaving the current version of the edited expres- sion in level 3, a copy of the selected subexpression in level 1, and its position in level 2. Moves the FORM cursor to the previous object (to the left) in the expression. Moves the FORM cursor to the next object (to the right) in the expression. 80 3: Dictionary ddddddd bad COdddddddddddbddddddd «ALGEBRA (FORM) Commutation, Association, and Distribution 2 Commute the arguments of an operator. Before After (ASB) cBga> (- CA SBD casa CAC BD (-CB)EAD CAB) (BAD CINVCA) BD (BAD CA BD CINVCB) AD Associate to the left. The arrow indicates the direction in which the parentheses will “move.” Before After CA CB+C)) CCA+B) CD CA CB-C)) CCA+B) CD CA CB+C)) CCA-BD'C) CA) CB-C)) (CA-B) C) CA. CB*C)) CCA*B) CD CA CB/C)) CCA*B) CD CA CBC) CCA/B) C0) CA. B/C)? CCA/B) Cd CA) CBC) CCA*BD Cd 3: Dictionary 81 -ALGEBRA (FORM) 59 Associate to the right. The arrow indicates the direction in which the parentheses will “move.” Before After _| CCA+B EC) CARCB+C)) CCA-BI ZC) CARCB-C)) CCA+B) SC) CABCB-C)) (CA-B EC) CARCB+C)) CCA*BI EC) CARCBEC)) (CA/BIEC) CARCB/C)) CCA*B) HC) (AECB/C)) (CA/BI GC) CAR CB*C)) CCA*BD HCD CAS CB*C)) 208 Distribute prefix operator. Before After | Bca+B> (- CAD EBD Bca-Bd (-CADBBD BcaxB> ©- CAD SBD §ca/B> (- CAD BB) §cLoccad> M@EcINvead) BcLncad> (Qc INvcad> Eilicaxa> CINVCADGBD casa CINVCAD EBD Giica*B> cag- CB) Bec acoccad> BGEc- card Gicexpcar> GBiac- cad? 82 3: Dictionary sion that is distributed. .. ALGEBRA (FORM) Note that any time an expression is rewritten, the sequence * INV is collapsed to /. Similarly, +— is replaced by ~. 2294 Distribute to the left. The arrow points to the subexpres- Before After CCA+BIECD CCAKC ICBC)? (CA-BOCD CCA*CIECB*CDD CCA+BD BCD CCA/COECB/C) 9 (ca-Bdged (CA/CIECB/C)9 CCAXB BCD CCA" CI CB*CDD CCA/BDgCD CCA*C CB“ CD) expression that is distributed. {255248 Distribute to the right. The arrow points to the sub- Before After CAR CB+C)) CCAKBIBCA*C) > CAR CB-C)) CCA*BIECAKC) > cagce+c) GEM CCINV CAD BD + CINVCAD#*C)D CARCB-C)) SEE CCTNVCA)*B)- CINVCAD¥C)) cagcB+c> CCA*BIECA*C)D CAgCB-C>> CCA*BDIECA%C) IBGE CaxB> CLOGCAIBLOGCB) > Hgca/B> (LOGCADBLOGCB)) (Gi@agca+B> CALOGCAIZALOGCBD) Gaeeca-B> CALOGCABALOGCB)) (icaxB> CLNCADBLNCBDD Vdd dd ddddddbddddddddd ddd dd ddbTY 3: Dictionary 83 »» ALGEBRA (FORM) (Continued) | Before After —.CA/B) CLNCAD LNCB)) CA+B> CEXPCA) EXPCB)) CA-B) CEXPCA) EXPCB)) Merge left factors. This operation merges arguments of +, —, *, and /, where the arguments have a common factor or a com- mon single-argument function EXP, ALOG, LN, or LOG. In the case of common factors, the arrow indicates that the left-hand factors are common. Before After (CA*B) CAKC)) (CA*B): CAKC)) (CAB) CACC) CCA"BD CACC) CLNCAD LNCB)? CLNCAD = LNCBD) (LOGCA) LOGCB)) (LOGCA) LOGCB)) CEXPCA) EXPCB)) CEXPCA) EXPCB)) CALOGCAALOGCB)) (ALOGCA) ALOGCB)) CA CB+C)) CA CB-C)) CA. CB+C)) CA: CB-C)) CAXB) CA/B) CA*B) .CA/B) CA+B) CA-B) CA+B) CA-B) jictionary OVUe@ddd Md ddsdedddddtdddddddddeddaaddg ALGEBRA (FORM) Soe Merge right factors.This operation merges arguments of +, —, *, and /, where the arguments have a common factor. The arrow indicates that the right-hand factors are common. Before After CCA*C) CB*C)) CCA+BI CD CCA/C) CB/C)) CCA+BIEC) CCAXC) CB*C)) CCA-B) Cd CCA/C) CB/C)) CCA-B) CC) CCA*C) CB*C)) CCA*B CD CCA"C) CB*C)) CCA/B)2C) Double-Negation and Double-Inversion Double-negate. Negate a subexpression twice. Before After ec-cay)d 3: Dictionary 85 » ALGEBRA (FORM) 68) Double-negate and distribute. This operation is equivalent to a double negate i= followed by distribution sulting inner negation. of the re- Before After CARB) @C-CA)-B) Cag BD Bc-CA)+BD (- CAD EBD Bca+B> CARB? Bc-cAad*BD (-CADEBD @caxB> (-CADEBD BCA/B) AGB? Bc-CA)/B) Wieca> BCLOGCINVCAD)) (BE CINVCADD BcLoccay> Mca ECLNCINVCAD)) MUcinveay> ECLNCADD ge a Double-invert. Invert a subexpression twice. Before After g HES CINVCAD) 86 3: Dictionary -ALGEBRA (FORM) Double-invert and distribute. This operation is equivalent to double inversion followed by distribution gxayi of the re- sulting inner INV: Before cAgBD Gc invcar/B> CAgB> GB 1NvCAD*BD cage? fEica*-cB> Cag- CB) Gica*B> GEA Gcacacc-cay? QiMmsc-car G@Bicacoccad) EXPIGD) QiecexPc-car> Gic-car Gicexpcar) Identities Multiply by 1. Before After 8 aga Divide by 1. Before After agi to] OVW td ddddddbdsdddddddddddddda0dd gs 3: Dictionary 87 »- ALGEBRA (FORM) (222% Raise to the power 1. Before After a Ag 1 a% Add 1 and subtract 1. Before After A CA+12084 Rearrangement of Exponentials Replace log-of-power with product-of-log. Before After CA"B) A“B) CLOGCA) BD CLNCAD B) + Replace product-of-log with log-of-power. Before After CLOGCA) BD CLNCAD BD cA*BD “CA™BD 88 3: Dictionary .ALGEBRA (FORM) 2 Replace power-product with power-of-power. Before After CALOG CAD EBD CALOG CAD BINVCBD > CEXPCADEB) CEXPCADSINVCBD) 3 Replace power-of-power with power-product. Before After CALOGCAD YB) ae cate> CALOGCAD INVER) CEXPCADEBD CEXPCAZINVCB)) Adding Fractions Combine over a common denominator. Before After (ASCB/C)) CCCAKC) + BEC) (CA/BI EC) CCA+ (BKC) 2B) CCA/BIBCC/DID CCCAKD) + CBC) FCBRD) 2 (AECB/0)) CCCAKC) - BEC? (CA/BDBCD CCA- (BKC) iB) CA/BIECC/DI> C CCAD) - (BKC) ACBKD)D If the denominator is already common between two fractions, use ae 3: Dictionary 89 » ALGEBRA (FORM) FORM Operations Listed by Function ' The following tables show which operations will appear in the FORM. menu when a given function is the selected object. The form of the ' original subexpression and the result is shown for each operation. The operations iii, GQ, BAR, MANSY, #2 2. S228, and are available for all functions and variables. These common operations don’t appear in the tables. If only the common operations are available for a function, no table appears for that func- tion, (Only the common operations are available for \/ and SQ; to use other operations, substitute *.5 and *2.) Addition (+) Operation | Before After | cAgiE> | (-CADEBD 64 CAR CB+C)) CCA+BDE 0) | CAR CB-C>) CCA+B)-C) CCA+BIHC) CA CB+C)9 | (CA-BIECD ae CAS CB+0)) CLNCASLNCB) AxB) | CLOGCAIELOGCB)) CAB) ' CCAKCIGCBRC) “ CCA/ CIE (B/C) CCA+B) 70) ! eee (ANB) 1C-CA)-BD - CAB = CA-BD ! ae (ACB/C)) CCCAXC)+BIAC) ! (CA/BIECC/D)) CCCAXD) + (BEC) 7) CBD)? CCA/BIEIC) CCA+ (BRC) 7B) 90 3: Dictionary .. ALGEBRA (FORM) Subtraction (—) Operation Before ae CARB) ae CABCB+C)) CCA-BIEC) CARCB-C)) (CA-BIEC) ame CCA+BD EC) CASCB-C)) CCA-BI EC) CAECB+C)) em CCAXBIE CAC) CARCB-C)) CLNCADGLNCB)) Eica/B> (LOGCADELOGCB)) (mecayB> CCAKCIECBRC) CCA-BDEC) (CA/CIBCB/C)) CCA-BDGCD ee (ABB) BC-CA)+B) €-CADEBD ScA+B) ae CARCB/C)) CCCAKC)-BIZC) CCA/BI EC) CCA- CB*C) 2B) CCA/BIECC/D)) CCCA*D) - CBC) CB*D) ) Multiplication (*) a i Operation Before After CARB? CINVCAEBD CARCBKC)) (CAB) EC) cagcesey) CCAXBIEC) ace CCAKBI ECD CARCBC) > CCA/BIECD CARCB/C)) weet CCA+BD ECD CCAKCIECBEC) > CCA-BDEC) CCAXCECB*C) eee CARCB+C)) CCAXBIECAC) > CARCB-0)) CCAKBIECAKC) > 3: Dictionary o1 ALGEBRA (FORM) (Continued) Operation Before After ue CCA*BIECA*C) (A CB+0)) CALOGCADZALOGCB)) (A+B) CEXPCADSIEXPCB)) A+B) a CCA*CIECB*C? CCAKB) 0) oe CARB? 1€-CA)*B) (-CAEBD “CAKB) mee CAigBD CINVCADEBD ae (LOGCADEBD CLNCADEBD Division (/) Operation Before After ger Can CINVGB) AD ee (Am CB*C)) (CA/B)0) CA CB/C)) CCA/B) Cd CCA*B) CD CA, (B/C) CCA/B) CD CA] CBC) CCA+B) 7 CD (CA/C2 CB/C)) CCA-Bd 20) CCA/C) (B/C) calca+c> EC CINVCAD*BD +CINVCAD*C)) CAR CB-C)) ». CCINVCA)*BD CCA*BIECA"C)) -CINVCA*C)) 92 3: Dictionary JdacdWg — ww — ww —— w ~— ww — ww — a — ww — ww — = —_ ww — ww _— ww — ww — ww — ww — ww — we we oe w we ALGEBRA (FORM) (Continued) Operation Before After CCA*CI CB*C)) CCA/B) 5 C) CA 3B) » €-CA)/B) C-CAe =CA/B) CLNCA) BD BECA*INVCB)) CLOGCA) BD CA“ INVCBD > CAZBD CINVCA)*BD Power (*) Operation Before After (Ae (BEC) CCA*BD ECD CCA"BD EC) (A= (B*C)) (CAB ECD CCA*C) CB*C)) CCA/BIEC) CCA%C)) CB*C)) CAs CB+C)) CCA“BD CA“C)D (A: CB-0)) CCA*BDCA%C)D cA) BD ye ca*-B)) CA» -CB)) —CA"BD CALOGCA) BD? CA*B) CALOGCA)« INVCB)) CA/B) CEXPCA): BD ( CA*B) CEXPCA): INVCB)) © CA/B) 3: Dictionary 93 ALGEBRA (FORM) Negation (—) Operation Before After eae Bca+B) (- CAD BBD BCA-B) (- CA) 8B) Bcvaccay> (-CADEBD ca/B> (- CAD EBD BcaxB> SCINVCAD) Bcuncay> ESC INVCAD) Inverse (INV) Operation Before After ee @icaxBd CINVCAD BBD ScasB> CINVCADZBD Gca*a> CAg- CBD Geicacoccay> DMcexpcay> Logarithm (LOG) Operation Before After ne EEC A*BD (LOGCAIZLOGCB) > SRTECA/B) CLOGCADZLOGCB)> mem Baecad BCLOGCINVCAD > @BECINVCAD? gcLoccay> = mieca"B) CLOGCAD BD ‘IECA*INVCB)) CLOGCADZBD 94 3: Dictionary TOO CCCGOGOCVUVddddddddddd0aeeddd ». ALGEBRA (FORM) Antilogarithm (ALOG) Operation Before After aoe Gieaeca+B> CALOGCAIZALOGCBD? GigE ca-B> CALOGCABALOGCB) > See See cad [i cacocc-car> Gimme c-«ar? TE cacoccay> ae Gime cnx CALOGCADEBD Sas ca/B) CALOG CADE INVCBD > Natural Logarithm (LN) Operation Before After ee CAxB) CLNCADELNCBD CA/B) CLNCADSLNCBDD oe a) SCLNCINVCA))) EECINVEADD = CLNCAD? wee EECA“ INVCBD) CLNCADSBD Exponential (EXP) Operation After CEXPCAXSIEXP(B)) CEXPCAXZEXP CBD) EXPC-CAD)) 4 CEXPCAD) CEXPCADBD CEXPCA = INVCBD 3: Dictionary 95 Arithmetic This section describes the arithmetic functions +, —, *, /, *, INV, V, SQ, and NEG. These functions apply to several object types. They‘re described here for all appropriate object types; they’re described in other sections, such as “ARRAY” and “COMPLEX,” only as they apply to that particular object type. + Add Analytic Level 2 Level 1 Level 1 zy 22 » 24422 Carray,] Carrayp] » — Caray, tarrayJ z ‘symb' ow» "z+ Csymb) ' ‘symb' Zz » ‘symb+z* ‘symb;' —‘symby' ® ~—‘ symb,+Csymbp)* (list, > flisty? —@ ( listlisty > "string," "stringy" ® " string strings" #ny np » # ny tng m4 tn. # nytng any Hn. ® # ny tne + returns the sum of its arguments, where the nature of the sum is determined by the type of arguments. If the arguments are: Two real numbers. The sum is the ordinary real sum of the arguments. A real number u and a complex number (x, y). The result is the complex number (x + u, y) obtained by treating the real number as a complex number with zero imaginary part. 96 3: Dictionary Cddddddddb db db bbb bd bb ddb0b ddd 003 000 8 . Arithmetic Two complex numbers (xj, y;) and (x2, y2)- The result is the com- plex sum (x1 + 2,41 + 2). A number and an algebraic. The result is an algebraic representing the symbolic sum. Two algebraics. The result is an algebraic representing the symbolic sum. Two lists. The result is a list obtained by concatenating the objects in the list in level 1 to the end of the list of objects in level 2. Two strings. The result is a string obtained by concatenating the characters in the string in level 1 to the end of the string in level 2. Two arrays. The result is the array sum, where each element is the real or complex sum of the corresponding elements of the argument arrays. The two arrays must have the same dimensions. A binary integer and a real number. The result is a binary integer that is the sum of the two arguments, truncated to the current wordsize. The real number is converted to a binary integer before the addition. Two binary integers. The result is a binary integer that is sum of the two arguments, truncated to the current wordsize. 3: Dictionary 97 . Arithmetic - Subtract Analytic Level 2 Level 1 Level 1 4 Zo . 24-22 Carray,J Carrayo] » Carray,—array>1 z ‘symb' *2-symb' "symb' Zz » " symb-z' ‘symb,' —‘symbp' * symb—symb," ny 1p ® # ny—Np ny # ng * # 4-02 # ny #2 » # y—No — returns the difference of its arguments, where the nature of the difference is determined by the type of arguments. The object in level 1 is subtracted from the object in level 2. If the arguments are: Two real numbers. The result is the ordinary real difference of the arguments. A real number u and a complex number (x, y). The result is the complex number (x — u, y) or (u — x, —y) obtained by treating the real number as a complex number with zero imaginary part. Two complex numbers (x,, y;) and (x2, y2). The result is the com- plex difference (x; — x2, ¥1 — Y2)- A number and an algebraic. The result is an algebraic representing the symbolic difference. Two algebraics. The result is an algebraic representing the symbolic difference. 98 3: Dictionary CUt Ct Cdddd ddd ddddddddddddddbodbT Arithmetic Two arrays. The result is the array difference, where each element is the real or complex difference of the corresponding elements of the argument arrays. The two arrays must have the same dimensions. A binary integer and a real number. The result is a binary integer that is the sum of the number in level 2 plus the twos complement of the number in level 1. The real number is converted to a binary inte- ger before the subtraction. Two binary integers. The result is a binary integer that is the sum of the number in level 2 plus the twos complement of the number in level 1. * Multiply Analytic Level 2 Level 1 Level 1 zy 22 . Zy2Q Cimatrix] = Caray] C matrix x array 2 Zz Caray] » Czxarray] Carray] z » Carrayxz] z ‘symb' "2 Csymb>* "symb ‘ Zz » " Csymb> *z' "symb,' ‘symbo' ® * symb,Xsymby' # ny No * # yne my # no » # N42 #1; Hn» # nino 3: Dictionary 99 . Arithmetic * returns the product of its arguments, where the nature of the prod- uct is determined by the type of arguments. If the arguments are: Two real numbers. The result is the ordinary real product of the arguments. A real number u and a complex number (x, y}. The result is the complex number (xu, yu) obtained by treating the real number as a complex number with zero imaginary part. Two complex numbers (x4, y;) and (x2, yz). The result is the com- plex product (xjx2 — YiY2 M12 + x241)- A number and an algebraic. The result is an algebraic representing the symbolic product Two algebraics. The result is an algebraic representing the symbolic product. A number and an array. The result is the product obtained by muliplying each element of the array by the number. A matrix and an array. The result is the matrix product of the argu- ments. The array in level 1 must have the same number of rows (elements, if a vector) as the number of columns of the matrix in level 2 A binary integer and a real number. The result is a binary integer that is the product of the two arguments, truncated to the current wordsize. The real number is converted to a binary integer before the multiplication TV PCE CCPC POd dss seoedgddvdddddCcddaaeddg Arithmetic Two binary integers. The result is a binary integer that is the prod- uct of the two arguments, truncated to the current wordsize. I Divide Analytic Level 2 Level 1 Level 1 zy 22 » 24/22 Carray] Cmatrix] » Carray x matrix- 11 z ‘symb' ® "22 Csymb2 ' "symb* z » ‘symb> 72! ‘symb,' —‘symby'® * symb rsymbp* #1, np . # nino m Hn # nln ny # no » # n4/No / (J) returns the quotient (the object in level 2 divided by the object in level 1) of its arguments, where the nature of the quotient is deter- mined by the type of arguments. If the arguments are: Two real numbers. The result is the ordinary real quotient of the arguments. A real number u in level 2 and a complex number (x, y) in level 1. The result is the complex number (ux/(P + y), —uy/Q? + y?)) obtained by treating the real number as a complex number with zero imaginary part. A complex number (x, y} in level 2 and a real number u in level 1. The result is the complex number (x/u, y/u) obtained by treating the real number as a complex number with zero imaginary part. 3: Dictionary 101 Arithmetic A complex number (x,, y;) in level 2, and a complex number (X25 ¥2) in level 1. The result is the complex quotient (x, + yiv)/03 + ¥3), Wik. — my2)/03 + 93). A number and an algebraic. The result is an algebraic representing the symbolic quotient. Two algebraics. The result is an algebraic representing the symbolic quotient. An array and a matrix. The result is the matrix product of the array in level 2 with the inverse of the matrix in level 1. The array in level 2 must have the same number of rows (elements, if a vector) as the number of columns of the matrix in level 1. A binary integer and a real number. The result is a binary integer that is the integer part of the quotient of the two arguments. The real number is converted to a binary integer before the division. A divisor of 0 returns #0. Two binary integers. The result is a binary integer that is the inte- ger part of the quotient of the two arguments. A divisor of zero returns # 0. Power Analytic Level 1 z, zy? "24 €symb>* '*z" * symb;“(symbo)* 102 = 3: Dictionary Ti@d ddd dddddddsddddddddddddddbvdddag .. Arithmetic * returns the value of the object in level 2 raised to the power given by the object in level 1. Any combination of real number, complex number, and algebraic arguments may be used. If either argument is complex, “ returns a complex result. INV Inverse Analytic z * 12 Cmatrix] » Comatrix-11 “symb' "INV Csymb> ' INV ( ) returns the inverse (reciprocal) of its argument. For a complex argument (x, y), the inverse is the complex number (/@? + y), —y/0? + 9°). Array arguments must be square matrices. V Square Root Analytic Level 1 z » yz ‘symb'@ “£¢symb>* 3: Dictionary 103 . Arithmetic V returns the (positive) square root of its argument. For a complex number (x;, y;), the square root is the complex number (%, Yo) = (Vr cos 4/2, Vr sin 8/2) where r= abs (X, yi), 4 = arg (x1, yi). If (1, yi) = (0, 0), then the square root is (0, 0). Refer to “Principal Branches and General Solutions” in “COMPLEX.” sq Square Analytic Level 1 | Level 4 Zz » 2 Cmatrix] © = Cmatrixxmatrix ‘symb' "SQCsymb>* SQ (MG2)) returns the square of its argument. For a complex argument (x, y), the square is the complex number ( — Y, 2xy). Array arguments must be square matrices. NEG Negate Analytic Level 1 Level 4 “| Zz ° ~2 Caray] « C-aray] ‘symb' "=Csymb> ' 104 3: Dictionary . Arithmetic NEG returns the negative of its argument, For an array, the negative is an array composed of the negative of each element in the array. The key can be used to execute NEG if no command line is present. If a command line is present, (CHS) acts on the command line as described in “Basic Operations.” Menu keys for NEG are found in the REAL and ARRAY menus. CdeddddddddddddddtddddddddddaddTg 3: Dictionary 105 ARRAY ~ARRY ARRY- PUT SIZE RDM TRN cross DOT DET R-C Cc-R RE GET CON ABS IM PUTI IDN RNRM CONJ GETI RSD CNRM NEG Arrays are ordered collections of real or complex numbers that satisfy various mathematical rules. In the HP-28C, one-dimensional arrays are called vectors; two-dimensional arrays are called matrices. We will use the term “array” to refer collectively to vectors and matrices. Although vectors are entered and displayed as a row of numbers, the HP-28C treats vectors, for the purposes of matrix multiplication and computations of matrix norms, as 1 X 1 matrices. An array can contain either real numbers or complex numbers. We will use the terms real array (real vector or real matrix) and complex array when describing properties of arrays that are specific to real numbers or complex numbers. Arrays are entered and displayed in the following formats: C number number ... vector matrix | CC number number ... C number number ... { number number ... where number represents a real number or a complex number. 106 = 3: Dictionary vidlddid@diddd ddd ddd db ddddddbdddddboabdd gs «ARRAY When you enter an array you can mix real and complex numbers. If any one number in an array is complex, the resulting array will be complex. You can include any number of newlines anywhere in the entry, or you can enter the entire array in a single command line. When entering matrices, you can omit the delimiter J that ends each row, The C that starts each row is required. If additional objects fol- low the array in the command line, you must end the array with 1] before starting the new object. The term row order refers to a sequential ordering of the elements of an array, starting with the first element (first row, first column), then: from left to right along each row; from the top row to the bottom row (for matrices). The STORE menu contains commands that allow you to perform ar- ray operations using the name of a variable that contains an array, rather than requiring the array itself to be on the stack. In these cases, the result of an operation is stored in the variable, replacing its origi- nal contents. This method requires less memory than operations on the stack, and hence can allow you to deal with larger arrays. Array operations that may be time-consuming for large arrays can be interrupted via the [ON] key. If you press [ON] during such an opera- tion, the HP-28C will halt execution of the array command and clear the array arguments from the stack. You can recover the original ar- guments by using UNDO or LAST. In addition to the functions present in the ARRAY and STACK menus, the keyboard functions described in the next section accept arrays as arguments. 3: Dictionary 107 » ARRAY Keyboard Functions Complete stack diagrams for these functions appear in “Arithmetic.” + Add Analytic Level 2 Level 1 Level 1 Carray;] Carrayz] Carray,+array27 + returns the array sum of two array arguments. The two arguments must have the same dimensions. The sum of a real array and a com- plex array is a complex array, where each element x of the real array is treated as a complex element (x, 0). al Subtract Analytic Level2 Level 1 Level 1 Carray;3 = Carrayp] Carray, —arrayp] ~ returns the array difference of two array arguments. The two argu- ments must have the same dimensions. The difference between a real array and a complex array is a complex array, where each element:x of the real array is treated as a complex element (x, 0). 108 3: Dictionary Oded diPdddddddddbddddddddddddddoboddgd «ARRAY * Multiply Analy’ Level 2 Level 1 Level 1 2 Caray] Czxarray] Carray] Zz . Czxarray] Cmatrix I Caray] @ C matrix x array 1 %* returns the product of its arguments, where the nature of the prod- uct is determined by the type of arguments. If the arguments are: An array and a number. The product is the matrix product of the number (real or complex number) and the array, obtained by multi- plying each element of the array by the scalar. Two arrays. The product is the matrix product of the two arrays. The array in level 2 must be a matrix (that is, it can not be a vector). Level 1 can contain either a matrix or a vector. The number of rows in the array in level 1 must equal the number of columns in the matrix in level 2. The product of a real array and a complex array is a complex array. Each element x of the real array is treated as a complex element (x,0). I Divide Analytic Level 2 Level 1 Level 1 Cmatrix BI Cmatrix AJ» Comatrix XI Cvector BJ Cmatrix A] @ Cvector XI 3: Dictionary 109 «ARRAY / (2) applied to array arguments solves the system of equations AX = B for X. That is, / computes X = A” 'B, / uses 16-digit internal computation precision to provide a more accurate result than obtained by applying INV to A and multiplying the result by B. A must be a square matrix, and B can be either a matrix or a vector. If B is a matrix, it must have the same number of rows as A. If B is a vector, it must have the same number of elements as the number of columns of A. In many cases the HP-28C will arrive at a correct solution even if the coefficient array is singular (A has no proper inverse). This feature allows you to solve under-determined and over-determined systems of equations. For an under-determined system (containing more variables than equations), the coefficient array will have fewer rows than columns. To find a solution: 1. Append enough rows of zeros to the bottom of your coefficient array to make it square. 2. Append corresponding rows of zeros to the constant array. You can now use these arrays with / to find a solution to the original system. For an over-determined system (containing more equations than vari- ables), the coefficient array will have fewer columns than rows. To find a solution: 1. Append enough columns of zeros on the right of your coefficient array to make it square. 2. Add enough zeros on the bottom of your constant array to en- sure conformability. 110 = 3: Dictionary Oddi dtdddddddddddbdddddbdddddaoadd & » ARRAY You can now use these arrays with / to find a solution to the original system. Only those elements in the result array that correspond to your original variables will be meaningful. For both under-determined and over-determined systems, the coef- ficient array is singular, so you should check the results returned by / to see if they satisfy the original equation. Improving the Accuracy of System Solutions Because of rounding errors during, calculation, a numerically calcu- lated solution Z is not in general the solution to the original system AX = B, but rather the solution to the perturbed system (A + AA) Z=B + AB. The perturbations AA and AB satisfy ||AAl| < ¢/Al| and \|ABl| < «Bl, where ¢ is a small number and ||Al| is the norm of A, a measure of its size analogous to the length of a vector. In many cases AA and AB will amount to less than one in the 12th digit of each element of A and B. For a calculated solution Z, the residual is R = B — AZ. Then RI] < el|Al] Zi]. So the expected residual for a calculated solution is small. Nevertheless, the error Z — X may not be small if A is ill-condi- tioned, that is, if |Z — X|| 11 — log (|All Jat) — log 1. 3: Dictionary 111 «ARRAY In many applications, this accuracy may be adequate. When addi- tional accuracy is desired, the computed solution Z can usually be improved by iterative refinement (also known as residual corrections). Iterative refinement involves calculating a solution to a system of equations, then improving its accuracy using the residual associated with the solution to modify that solution. To use iterative refinement, first calculate a solution Z to the original system AX = B. Then Z is treated as an approximation to X, in error by E = X — Z. Then E satisifies the linear system AE = AX— AZ=R, where R is the residual for Z. The next step is to calculate the residual and then solve AE = R for E. The calculated solution, denoted by F, is treated as an approximation to E and is added to Z to obtain a new approximation to X. For F + Z to be a better approximation to X than is Z, the residual R= B-— AZ must be calculated to extended precision. The function RSD does this (see the description of RSD below for details of its use). The refinement process can be repeated, but most of the improvement occurs in the first refinement. The / function does not attempt to per- form a residual refinement because of the memory required to maintain multiple copies of the original arrays. Here is an example of a user program that solves a matrix equation, including one refine- ment using RSD: *# > BA *# BA + BA 3 PICK RSD Ae + & The program takes two array arguments B and A from the stack, the same as /, and returns the result array Z, which will be an improved approximation to the solution X over that provided by / itself. 112 3: Dictionary UMM eM POPGdddId KOKO UVUdOddddddddddaneddgd » ARRAY INV Inverse Analytic Level 1 Level 1 Cmatrix] » Cmatrix-' INV (§§(7<)) returns the matrix inverse of its argument. The argu- ment must be a square matrix, either real or complex. sQ Square Analytic Level 1 Level 1 Cmatrix,] » Cmatrixy] SQ (MG?)) returns the matrix product of a square matrix with itself. NEG Negate Analytic Level 1 Level 1 Caray] » Caray] Pressing when no command line is present executes the function NEG. For an array, each element of the result is the negative of the corresponding element of the argument array. To enter the NEG function in the command line, use “2% (on the fourth row of the ARRAY menu). 3: Dictionary 113 »1 ARRAY ~ARRY ARRY> PUT GET PUTI GET! This group of commands allows you to recall or alter individual ele- ments of an array. -ARRY Stack to Array Command Level 1 Xp ee Xp ind » = Cvector] Xap oes Xam {nm} Cmatrix] +ARRY returns an array comprised of real or complex elements taken one-by-one from the stack, in levels 2 and above. +ARRY takes a list representing the size of the result array from level 1: Vectors. If the list contains a single integer n, n numbers are taken from the stack, and an n element vector is returned. Matrices. If the list contains two integers n and m, nm numbers are removed from the stack and returned as the elements of an n x m matrix. The elements of the result array should be entered into the stack in row order, with xj; (or x) in level nm + 1 (or n + 1), and Xy», (or X,) in level 2. If one or more of the elements is a complex number, the result array will be complex. ARRY- Array to Stack Command Level 1 Level n Cvector] » int Cmatrix] = X44 ee Xam {nm> 114 3: Dictionary gd eeeddeddddddddddddddddddaddldy «ARRAY ARRY- takes an array from the stack, and returns its elements to the stack as individual real or complex numbers. ARRY- also returns a list representing the size of the array to level 1. The elements are placed on the stack in row order: Vectors. If the argument is an n-element vector, the first element is returned to level n + 1, and the nth element to level 2. Level 1 will contain the list { 1 }. Matrices. If the argument is an n x m matrix, element X,,, is re- turned to level 2, and element x1; to level (nm + 1). PUT Put Element Command | Level 3 Level 2 Level 1 Level 1 Carray,] < index } x » Carrayo] “name index } x » CC-array,;1 — ¢index + z * CC-arrayo 1 ‘name index > z » (list, n obj » 4 listy > ‘name’ n obj » PUT stores an element into an array or a list. This section describes its use with an array; its use with a list is described in “LIST.” PUT takes three arguments from the stack. Level 1 must contain the number you wish to store in the array. If the number is complex, the array must also be complex. Level 2 contains the index of the array element you wish to replace. If the array is a vector, the index list contains one integer specifying the element number. If the array is a matrix, the index list has the form { row column }. 3: Dictionary = 115 «ARRAY Level 3 may contain either an array or a name. If level 3 contains an array, PUT returns that array to the stack with one element replaced by the number taken from level 1 If level 3 contains a name, PUT stores the number from level 1 as one element in the array contained in the variable name. (name can’t be a local name.) GET is the reverse operation of PUT. GET Get Element Command Level2 Level 4 Level 1 Caray] {index} ® z ‘name! findex} @ z {list } n = obj ‘name! n » obj GET is a general mechanism for recalling an element from an array or a list. In this section, we will describe array element recall. List ele- ment recall is described in the “LIST” section GET takes two arguments from the stack. Level 1 should contain an index list specifying the array element you wish to recall. If the array is a vector, the index list should contain one integer specifying the element number. If the array is a matrix, the index list must have the form {| rew column |. Level 2 may contain either an array or a name. If level 2 contains an array, GET returns the indexed element of that array to the stack. If level 2 contains a name, GET returns to the stack the indexed element of the array contained in the variable name. PUT is the reverse operation of GET. 116 3: Dictionary CeCCcCtecdddddddddddddddddddddaddd , » ARRAY PUTI Put and Increment Index Command Level 3 Level2 Level 4 Level2 Level 1 Caray; 1 index, > x ® Carrayp] — ¢ indexp ‘name’ index, > x » ‘name’ — index? CC-array;] (index, > z ® CC-arrayp] ¢ indexy> "name' index, > z » ‘name’ — ‘index > Clisty + mn obj = E listy > Np “name! ny obj » ‘name Ng PUTI is a general mechanism for element storage into an array or ob- ject storage into an list. List storage is described in “LIST.” PUTI stores a number into an array in the same manner as PUT, but also returns the array (or variable name) and the element index incre- mented to the next element. This leaves the stack ready for you to enter a new number, then execute PUTI again to store the number into the next element in the array. When the element index is equal to the maximum index in the array, PUTI returns the index {1} (for vec- tors) or {11} (for matrices), starting over at the beginning of the array. PUTI takes three arguments from the stack. Level 1 must contain the number you wish to store in the array. If the number is complex, the array must also be complex. Level 2 contains the index list specifying the number of the array ele- ment you wish to replace. If the array is a vector, the index list should contain one integer specifying the element number. If the array is a matrix, the index list must have the form {| row column }. 117 «ARRAY Level 3 may contain either an array or a name. If level 3 contains an array, PUTI returns that array to level 2, with the indexed element replaced by the number taken from level 1. The next index is returned to level 1. If level 3 contains a name, PUTI stores the number from level 1 as the nth element in the array contained in the variable name. Name is re- turned to level 2, and the next index to level 1. GETI is the reverse operation of PUTI. GETI Get and Increment Index Command Level 2 Level 4 Level 3 Level 2 Level 1 Carray] tindex;} Carray] 4 indexs + z ‘name’ ' ABS returns the absolute value of its argument. In the case of an ar- ray, ABS returns the Frobenius (Euclidean) norm of the array, defined as the square root of the sum of the squares of the absolute values of all of the elements. Refer to “REAL,” “COMPLEX,” and “ALGEBRA” for the use of ABS with other object types. RNRM Row Norm Command Level 1 Level 1 Caray] » row norm RNRM returns the row norm (infinity norm) of its argument. The row norm is the maximum value (over all rows) of the sums of the abso- lute values of all elements in a row. For a vector, the row norm is the largest absolute value of any of the elements. 3: Dictionary 125 ss ARRAY CNRM Column Norm Command Level 1 Level 1 Caray] » column norm CNRM returns the column norm (one-norm) of its argument. The col- umn norm is the maximum value (over all columns) of the sums of the absolute values of all elements in a column. For a vector, the col- umn norm is the sum of the absolute values of the elements. C-R RE IM CONJ NEG Real-to-Complex Command Lev Level 4 Level 1 x y » cx,y> CR-array;1 CR-arrayz] » CC-array] R+C combines two real numbers, or two real arrays, into a single complex number, or complex array, respectively. The object in level 2 is taken as the real part of the result; the object in level 1 is taken as the imaginary part. For array arguments, the elements of the complex result array are complex numbers, the real and imaginary parts of which are the cor- responding elements of the argument arrays in level 2 and level 1, respectively. The arrays must have the same dimensions. VJddcddddb dd ddd db bb bb ddd ddd ddd dood »ARRAY C-R Complex-to-Real Command Level 2 Level 1 oay> x y CCarray] » CRaray;] CRearray2] C-R returns to level 2 and level 1 the real and imaginary parts, re- spectively, of a complex number or complex array. The real or imaginary part of a complex array is a real array, of the same dimensions, the elements of which are the real or imaginary parts of the corresponding elements of the complex array. RE Real Part Function x oxy? CR-array] CR-array1 CC-arrayI CRarrayI * symb* "RE RE returns the real part of its argument. If the argument is an array, RE returns a real array, the elements of which are equal to the real parts of the corresponding elements of the argument array. 3: Dictionary 127 ss ARRAY IM Imaginary Part Function Level 1 Level 1 x . 0 axy? . y CRarray] © Czero Rearray CC-array] CR-array I ‘symb'! ow "IM ! CON] returns the complex conjugate of a complex number or complex array. The imaginary part of a complex number, or of each element of a complex array, is negated. For real numbers or arrays, the conjugate is identical to the original argument. 128 3: Dictionary NEG Negate Analytic Level 1 Level 1 Caray)» Carry] | For an array, each element of the result array is the negative of the corresponding element of the argument array. When no command line is present, pressing [CHS] executes the func- tion NEG. A complete stack diagram for NEG appears in “Arithmetic”. CCVUCeodsssoeecededodddddndddcdaaoddgd 3: Dictionary 129 BINARY Binary integers are unsigned integer numbers that are represented in- ternally in the HP-28C as binary numbers of length 1 to 64 bits. Such numbers must be entered, and are displayed, as a string of digits pre- ceded by the delimiter #. The entry and stack display of binary integers is controlled by the current integer base, which can be binary (base 2), octal (base 8), deci- mal (base 10), or hexadecimal (base 16). If you change the current base using one of the menu keys BEHI¢, @iE:@!, HSS8, or MA, the internal representation of a binary integer on the stack is not changed, but the digits shown in the display will change to reflect the number's representation in the new base. Digits included in a binary integer entry must be legal in the current base. In binary base, only the digits 0 and 1 are allowed; in octal, the digits 0-7; in decimal, the digits 0-9; and in hexadecimal, the digits 0- 9 and the letters A-F. The default base is decimal. All binary integers entered in the same command line must be in the same (current) base. Since the four base selection menu keys do not perform an ENTER, you can change the base even after you have be- gun keying into the command line. However, the digit syntax of binary integers in the command line is checked (against the current base) before any of the command line is executed, so you cannot enter numbers in different bases by including the base selection commands in the command line. 130 3: Dictionary VuCuUeuvuueecucuuddd Gi . BINARY The stack display of binary integers is also affected by the current wordsize, which you can set in the range 1 to 64 bits with the com- mand STWS. When a binary integer is displayed on the stack, the display shows only the least significant bits, up to the wordsize, even if the number has not been truncated. If you reduce the wordsize, the display will alter to show fewer bits, but if you subsequently increase the wordsize, the hidden bits will be displayed. The primary purpose of the wordsize is to control the results returned by commands. Commands that take binary integer arguments trun- cate those arguments to the number of (least significant) bits specified by the current wordsize, and they return results with that number of bits. The default wordsize is 64 bits. The current base and wordsize are encoded in user flags 37 through 44, Flags 37-42 are the binary representation of the current wordsize minus 1 (flag 42 is the most significant bit). Flags 43 and 44 determine the current base: Flag 43 | Flag 44 Decimal Binary Octal Hexadecimal In addition to the BINARY menu commands described in the next sections, the arithmetic functions +, —, *, and / can be used with pairs of binary integers, or combinations of real integers and binary integers, as described in “Arithmetic.” 3: Dictionary 134 ..BINARY DEC HEX ocT BIN sTwS RCWS DEC Decimal Mode Command * DEC sets decimal mode for binary integer operations. Binary integers may contain the digits 0 through 9, and will be displayed in base 10. DEC clears user flags 43 and 44. HEX Hexadecimal Mode Command » HEX sets hexadecimal mode for binary integer operations. Binary inte- gers may contain the digits 0 through 9, and A (ten) through F (fifteen), and will be displayed in base 16. HEX sets user flags 43 and 44. oct Octal Mode Command OCT sets octal mode for binary integer operations. Binary integers may contain the digits 0 through 7, and will be displayed in base 8. OCT sets user flag 43 and clears flag 44. 132 3: Dictionary FOCCTUCUCOOUd di Sere rcvvsevseswseeeeeuugeowgg . ._BINARY BIN Binary Mode Command : BIN sets binary mode for binary integer operations. Binary integers may contain the digits 0 and 1, and will be displayed in base 2. BIN clears user flag 43, and sets flag 44. sTWSs Store Wordsize Command Level 1 | n > | STWS sets the argument 1 as the current binary integer wordsize, where 1 should be a real integer in the range 1 through 64. If n > 64, then a wordsize of 64 is set; if n < 1, the wordsize will be 1. User flags 37-42 represent the binary representation of n — 1 (flag 42 is the most significant bit). RCWS Recall Wordsize Command Level 1 > n LUT RCWS returns a real integer 7 equal to the current wordsize, in the range 1 through 64. User flags 37-42 represent the binary representa- tion of n — 1. 3: Dictionary 133 «BINARY RL RR RLB RRB R-B B-R The commands RL and RR rotate binary integers (set to the current wordsize) to the left or right by one bit. The commands RLB and RRB are equivalent to RL or RR repeated eight times. R+B and B+R con- vert real numbers to or from binary integers. RL Rotate Left Command Level 1 Level 1 RL performs a 1 bit left rotate on a binary integer number # 1;. The leftmost bit of #1, becomes the rightmost bit of the result # 1). RR Rotate Right Command Level 1 Level 1 #1, » # np RR performs a 1 bit right rotate on a binary integer number # 1;. The rightmost bit of #1, becomes the leftmost bit of the result # 1. RLB Rotate Left Byte Command Level 1 Level 1 #n, © HM RLB performs a 1 byte left rotate on a binary integer number # 1). The leftmost byte of #1, becomes the rightmost byte of the result #1. 134 3: Dictionary rod? w _ oe — Ci — ww — w — we — ww am oe — CI — w — w w — ww — wa — C7 —_ w —_ ww w — w — w w oe BINARY RRB Rotate Right Byte Command Level 1 Level 1 tn © ne RRB performs a 1 byte right rotate on a binary integer number # 1). The rightmost byte of #1, becomes the leftmost byte of the result # Np. R-B Real to Binary Command Level 1 Level 1 n » #n R~B converts a real integer n, 0 1,84467440737E19, the result is # FFFFFFFFFFFFFFFF (hex). B-R Binary to Real Command Level 1 Level 1 #n » n B-R converts a binary integer # 1 to its real number equivalent n. If #n > # 1000000000000 (decimal), only the 12 most significant deci- mal digits are preserved in the mantissa of the result. 3: Dictionary 135 .._BINARY SL SR SLB SRB ASR The commands SL and SR shift binary integers (set to the current wordsize) to the left or right by one bit. The commands RLB and RRB are equivalent to RL or RR repeated eight times. SL Shift Left Command Level 1 Level 1 # ny » # no SL performs a 1 bit left shift on a binary integer. The high bit of 1, is lost. The low bit of 12 is set to zero. SL is equivalent to binary multi- plication by two (with truncation to the current wordsize). SR Shift Right Command SR performs a 1 bit right shift on a binary integer. The low bit of 1, is lost. The high bit of ny is set to zero. SR is equivalent to binary divi- sion by two. 136 3: Dictionary CUCCCCOCECCCOCCOCOUOOCOOdCCCdCUetTd Tg ». BINARY SLB Shift Left Byte Command Level 1 Level 1 SLB performs a 1 byte left shift on a binary integer. SLB is equivalent to multiplication by # 100 (hexadeciamal) (truncated to the current wordsize). SRB Shift Right Byte Command Level 1 Level 1 #n, » # Nn SRB performs a 1 byte right shift on a binary integer. SRB is equiva- lent to binary division by # 100 (hexadecimal). ASR Arithmetic Shift Right Command Level 1 Level 1 ASR performs a 1 bit arithmetic right shift on a binary integer. In an arithmetic shift, the most significant bit retains its value, and a shift right is performed on the remaining wordsize - 1 bits. 3: Dictionary 137 «BINARY AND OR XOR NOT The commands AND, OR, XOR, and NOT can be applied to flags (real numbers or algebraics), and to binary integers. In the former case, the commands act as logical operators that combine true or false flags. For binary integers, the commands perform logical operations on the individual bits of the arguments. The following descriptions apply to the use of the commands with binary integer arguments. “PROGRAM TEST” describes their applica- tion to flags. AND And Function AND returns the logical AND of two binary integer arguments. Each bit in the result is determined by the corresponding bits in the two arguments, according to the following table: =o 0 4-00 °0 138 3: Dictionary re CUCUCPOPOdPKBOKOHOKOOKCGdeddGbodddedddugd dy «BINARY OR Or Function # ny # np #3 OR returns the logical OR of two binary integer arguments. Each bit in the result is determined by the corresponding bits in the two argu- ments, according to the following table: 0 0 1 1 0 1 1 1 XOR Exclusive Or Function Level 2 Level 1 Level 1 Hy # ong » # ong XOR returns the logical XOR (exclusive OR) of two binary integer ar- guments. Each bit in the result is determined by the corresponding bits in the two arguments, according to the following table: #n, | #2 | XOR Result # ng 0 0 0 1 1 1 0O 1 1 1 0 3: Dictionary 139 NOT Not Function Level 1 Level 1 # ny # np #n, | NOT Result # nz 0 1 1 0 140 3: Dictionary NOT returns the ones complement of its argument. Each bit in the result is the complement of the corresponding bit in # 1. eM @d edd sd ddd ds VCC dGdddedOddddocdvveidd Yd Calculus The HP-28C is capable of symbolic differentiation of any algebraic expression (within the constraints of available memory), and of nu- merical integration of any (algebraic syntax) procedure. In addition, the calculator can perform symbolic integration of polynomial expres- sions. For more general expressions, the { command can automatically perform a Taylor series approximation to the expression, then sym- bolically integrate the resulting polynomial. Differentiation a Differentiate Analytic 2 Level 1 Level 1 "symb,* ‘name' ™ 'symb' 8 (cx) computes the derivative of an algebraic expression symb, with respect to a specified variable name. (Name cannot be a local name.) The form of the result expression symb, depends upon whether @ is executed as part of an algebraic expression, or as a “stand-alone” object. Step-wise Differentiation in Algebraics The derivative function 0 is represented in algebraic expressions with a special syntax: ‘aname', where name is the variable of differentiation and symb is the expres- sion to be differentiated. 3: Dictionary 141 «Calculus For example, 'SX¢SINY >)" represents the derivative of SINCY) with respect to x. When the overall expression is evaluated, the dif- ferentiation is carried forward one “step*—the result is the derivative of the argument expression, multiplied by a new subexpression repre- senting the derivative of its argument. An example should make this clear. Consider differentiating $1N¢‘> with respect to % in radians mode, where ¥ has the value '**2': "@RCSINCY39' EVAL returns 'COSCY>*axCY)'. We see that this is a strict application of the chain rule of differentia- tion. This description of the behavior of 0, along with the general properties of EVAL, is sufficient for understanding the results of sub- sequent evaluations of the expression: EVAL returns 'COSCK*2)kCOXCKIKZKK*C2-199', EVAL returns 'COSCK*2)#C2"X'. Fully Evaluated Differentiation When 4 is executed as an individual object—that is, in a sequence ‘symb' 'name' 3, rather than as part of an algebraic expression, the expression is auto- matically evaluated repeatedly until it contains no derivatives. As part of this process, if the variable of differentiation name has a value, the final form of the expression will have that value substituted every- where for the variable name. To compare this behavior of @ with the step-wise differentiation de- scribed in the preceding section, consider again the example expression 'SIN¢¥>', where Y has the value 'X*2': "SINCY>' 'X' @ returns 'COSCK*2)*C2kxX)', 142 3: Dictionary .Calculus All of the steps of the differentiation have been carried out in a single operation. The function determines whether to perform the automatic repeated evaluation according to the form of the level 1 argument that specifies the variable of differentiation. If that argument is a name, the full differentiation is performed. When the level 1 argument is an alge- braic expression containing only a name, only one step of the differentiation is carried out. Normally, algebraics containing only a single name are automatically converted to name objects. The special syntax of d allows this exception to be used as a signal for full or step- wise differentiation. GUCTUUoUuudg Differentiation of User-Defined Functions When 4@ is applied to a user-defined function: 1. The expression consisting of the function name and its argu- ments within parentheses is replaced by the expression that defines the function. 2. The arguments from the original expression are substituted for the local names within the function definition. 3. The new expression is differentiated. For example: Define F (a, b) = 2a + b: * 9 ab '2katb' » 'F' STO. 3: Dictionary 143 = = = ” = ~ Calculus Then differentiate 'F¢x,*%*23' with respect to X. The differentia- tion automatically proceeds as follows: 1. 'FEX,X*23' is replaced by '2%a+b'. 2. % is substituted for s, and 'X*2' for b. The expression is now "2EX+K S21. 3. The new expression is differentiated. @ If we evaluated ' Fcx,¥*29)' the result is "ORCZERDFONCRN* 291. @ If we executed (FOX, €%*29)' 'X' 8, the differentiation is carried through to the final result '2+2*x'. User-Defined Derivatives If dis applied to an HP-28C function for which a built-in derivative is not available, 0 returns a formal derivative—a new function whose name is “der” followed by the original function name. For example, the HP-28C definition of % does not include a derivative. If you dif- ferentiate '%¢X,¥>' one step with respect to Z, you obtain "derkcxX, V, 8204) ,aZcyoa! Fach argument to the % function results in two arguments to the der% function. In this example, the X argument results in x and 3Z¢) arguments, and the ¥ argument results in Y and a2¢¥> arguments. You can further differentiate by creating a user-defined function to represent the derivative. Here is a derivative for %: 8 oe x y dx dy '¢xtdutytdxd/166' * 'der%' STO. With this definition you can obtain a correct derivative for the % function. For example: 'RCK,2"X9' 'X' & COLCT returns '.64#x' FenGCoeewddaoeddg CU@d¢e@eecdcodvcdco0u00cu0ouwdea »..Calculus Similarly, if 0 is applied to a formal user function (a name followed by arguments in parentheses, for which no user-defined function exists in user memory), d returns a formal derivative whose name is “der” followed by the original user function name. For example, differenti- ating a formal user function 'f¢x1,x2,%3)>' with respect to x returns ‘derf(x1,2,x3,ax¢x1),ax€x2),8xCx399" Integration f Integrate Command Level3 Level2—Level 4 Level 2 Level 4 “symb* ‘name' degree » ‘integral’ x inameab} accuracy »® _ integral error ‘symb' {nameab}? accuracy » _ integral error program® computed value where value is the value of the integrand at any point in the integra- tion interval. Even if your integrand is accurate to or near 12 significant digits, you may wish to use a larger accuracy value to re- duce integration time, since the smaller the accuracy value, the more points that must be sampled. The accuracy of the integrand depends primarily on three considerations: ™ The accuracy of empirical constants in the expression. ™ The degree to which the expression may accurately describe a phys- ical situation. @ The extent of round-off error in the internal evaluation of the expression. Expressions like cos (x — sin x) are purely mathematical expressions, containing no empirical constants. The only constraint on the accuracy then, is the round-off errors which may accumulate due to the finite (12-digit) accuracy of the numerical evaluation of the expression. You can, of course, specify an accuracy for integration of such expressions larger than the simple round-off error, in order to reduce computation time. When the integrand relates to an actual physical situation, there are additional considerations. In these cases, you must ask yourself whether the accuracy you would like in the computed integral is justi- fied by the accuracy of the integrand. For example, if the integrand contains empirical constants that are accurate to only 3 digits, it may not make sense to specify an accuracy smaller than 1E-3. Dictionary re OCUCRGRCGPOCOdCdddddddddddbedddd «Calculus Furthermore, nearly every function relating to a physical situation is inherently inaccurate because it is only a mathematical model of an actual process or event. The model is typically an approximation that ignores the effects of factors judged to be insignificant in comparison with the factors in the model. To illustrate numerical integration, we will compute 2 J exp x dv to an accuracy of .00001. The stack should be configured as follows for f: 3: ‘EXP (X)' 2; X 12 } 1: .00001 Numerical integration returns two numbers to the stack. The value of the integral is returned to level 2. The error returned to level 1 is an upper limit to the fractional error of the computation, where normally error = accuracy | lintegrand| If the error is a negative number, it indicates that a convergence of the approximation was not achieved, and the level 2 result is the last com- puted approximation. For the integral of 'EXP¢X3' in the example, { returns a value 4.67077 to level 2, and the error 4.7E-5 to level 1. 3: Dictionary 149 »..Calculus Using an Implicit Variable of Integration. The use of an explicit variable of integration allows you to enter the integrand as an ordi- nary algebraic expression. However, it is also possible to enter the integrand in RPN form, which can appreciably reduce the time re- quired to compute the integral by eliminating repeated evaluation of the variable name. In this method, an implicit variable of integration is being used. The stack should be configured like this: 3: Integrand (program) 2: Limits of integration (list) 1: Accuracy (real number) The integrand must be a program that takes one real number from the stack, and returns one real number. f evaluates the program at each of the sample points between the limits of integration. For each evalua- tion f places the sample value on the stack. The program takes that value, and returns the value of the integrand at that point. The limits of integration must be entered as a list of two real numbers, in the format {lower-limit upper-limit;. The accuracy specifies the frac- tional error in the computation, as described in the preceding section. For example to evaluate the integral: 2 J exp (x) dx to an accuracy of .00001, you should execute f with the stack as follows: 150 3: Dictionary TUCO COCOOGOOUOCbbbdbdObdOdbd bod ead dT EF ..Calculus 3: « EXP » 24 1 2 } 1: .00001 This returns the same value 4.67077 and accuracy 4.7E-5 as the exam- ple in the preceding section, where we used an explicit variable of integration. Taylor Series TAYLR Taylor Series Command “symb,' ‘name ' TAYLR (in the ALGEBRA menu) computes a Taylor series approxima- tion of the algebraic symb,, to the nth order in the variable name. The approximation is evaluated at the point name = 0 (sometimes called a MacLaurin series). The Taylor approximation of f(x) at x = 0 is de- fined as: 3 (re) i x=0 3: Dictionary 151 .Calculus Translating the Point of Evaluation If you're using TAYLR simply to put a polynomial in power form, the point of evaluation makes no difference because the result is exact. However, if you’re using TAYLR to approximate a mathematical func- tion, you may need to translate the point of evaluation away from zero. For example, if you're interested in the behavior of a function in a particular region, its TAYLR approximation will be more useful if you translate the point of evaluation to that region. Also, if the function has no derivative at zero, its TAYLR approximation will be meaning- less unless you translate the point of evaluation away from zero. 4 Executing TAYLR can return a meaningless result if the expression is not differentiable at zero. For example, if Note you clear flag 59 (to prevent Infinite Result er- rors) and execute: "EK' 'X' 2 TAYLR you will obtain the result '5,E499%X-1.256499%X*2'. The coef- ficient of % is 8%¢%*.5), which equals .5 * X* - ,5 and evaluates to 5.E499 for x = 0. Although TAYLR always evaluates the function and its derivatives at zero, you can effectively translate the point of evaluation away from zero by changing variables in the expression. For example, suppose the function is an expression in X, and you want the TAYLR approxi- mation at X = 2. To translate the point of evaluation by changing variables: 1, Store ''¥+2' in 'X'. 2. Evaluate the original function to change the variable from X to Y. 152 3: Dictionary Oddi dd dddddbdbddddddddddddddbaddgd «Calculus 3. Find the Taylor approximation at Y = 0. 4. Purge X (if it still exists as a variable). 5. Store 'X-2' in '¥'. 6. Evaluate the new function to change the variable from Y to X. 7. Purge Y. Approximations of Rational Functions A rational function is the quotient of two polynomials. If the denomi- nator evenly divides the numerator, the rational function is equivalent to a polynomial. For example: If your expression is such a rational function, you can convert it to the equivalent polynomial form by using TAYLR. However, if the denomi- nator doesn’t evenly divide the numerator—that is, if there is a remainder—the rational function is not a polynomial. For example: 3 2_ _ x t+ 2x 5x 2 te 4 There is no equivalent polynomial form for such a rational function, but you can use TAYLR to calculate a polynomial that is accurate for small x (close to zero). You can translate the region of greatest accu- racy away from x = 0, and you can choose the accuracy of the approximation. For the example above, the first-degree TAYLR ap- proximation at x = 0 is 2x + 1. 3: Dictionary 153 »:Calculus Polynomial Long Division. Another useful approximation to a ratio- nal function is the quotient polynomial resulting from long division. Consider the righthand side of the equation above as a polynomial plus a remainder. The polynomial is a good approximation to the ra- tional function when the remainder is small—that is, when x is large. Note the difference between the quotient polynomial (x + 3) and the TAYLR approximation of the same degree (2x + 1). The steps below show you how to perform polynomial long division on the HP-28C. The general process is the same as doing long divi- sion for numbers. 1. Create expressions for the numerator and denominator, with both in power form. 2. Store the denominator in a variable named ‘D’ (for “divisor’). 3. Store an initial value of zero in a variable named ‘Q’ (for “quotient’). With the numerator on the stack, proceed with the steps below. The numerator is the initial value for the dividend. Each time you repeat steps 4 through 8, you'll add a term to Q and reduce the dividend. 4. Put D on the stack (in level 1). 5. Divide the highest-order term of the dividend (in level 2) by the highest-order term of the divisor (in level 1). You can calculate the result by inspection and key it in, or you can key in an expression ‘ dividend-term.divisor-term' and then put it in power form. For example, if the dividend is x3 + 2x? —- 5x — 2 and the divi- sor is x2 — x — 2, the result is x; if the dividend is 3x3 + x? — 7 and the divisor is 2x? + 8x + 9, the result is 1.5x. The result is one term of the quotient polynomial. 154 3: Dictionary Cdddddddddd db dC bbb db db ddd dOdIdBOOTS ».Calculus 6. Make a copy of the quotient term, and add this copy to Q. 7. Multiply the quotient term and the divisor. 8. Subtract the result from the dividend. The result is the new dividend. If the new dividend’s degree is greater than or equal to the divisor’s degree, repeat steps 4 through 8. When the new dividend’s degree is less than the divisor’s degree, stop. The polynomial quotient is stored in Q, and the remainder equals the final dividend divided by the divisor. 3: Dictionary 155 CATALOG The HP-28C command catalog, activated by the J[CATALOG) key, is an alphabetical listing of all of the commands recognized by the HP-28C. You can u: se the catalog to determine the existence and cor- rect spelling of a command, and to learn which object types can be used as arguments for each command. Commands that start with a non-alphabetic character are listed after XPON, the last command be- ginning with a letter. When you press CATALOG], the normal HP-28C display is super- ceded by the catalog display: CE a Be The top line shows a command name. ABORT is the first command alphabetically in the HP-28C catalog. 156 3: Dictionary CUCU CMC CddddsddddddsddddddsodddcddadTd Eg »CATALOG The catalog menu is shown in the bottom line of the display. The six menu keys act as follows: Advance the catalog display to the next command in the catalog (repeating key). Move the catalog display to the previous command in the catalog (repeating key). Scan automatically forward through the command catalog, show- ing each command briefly. The menu label changes to E2555 ; pressing #323] halts the scan at the current command. The scan will stop automatically at the last command in the cata- log (+STR). Activate the USAGE display (see below) for the current command, to show the stack arguments used by the command. Exit the catalog, and add the current command abbreviation to the command line at the cursor position (start a new command line if none is present). Exit the catalog, leaving any current command line unchanged. In addition to the operations available in the command catalog menu, you can also: ™@ Press a key on the left-hand keyboard to move the catalog display to the first command that starts with the letter or character indicated. ® If there are no commands starting with the letter corresponding to a key you press, the catalog will move to the last command starting with the alphabetically previous letter. 3: Dictionary 157 «CATALOG ™ If there are no commands starting with the non-alphabetic charac- ter corresponding to a key you press, the catalog will move to +, the first command that starts with a non-alphabetic character. (The W@L0CK] key moves the catalog to ~STR, the last entry in the catalog.) @ Press (ON] to exit the catalog and clear any current command line. Any keys that are not active during the catalog display will beep when pressed. USAGE Pressing the §E— menu key activates a second level of the catalog, called the USAGE display. For the % command, for example, the ini- tial USAGE display looks like this: H es — Real Number The display indicates that % can take two real numbers as arguments. If the ® and 838% menu keys are shown, this indicates that there are additional argument options. For %, if you press SxGg¥i, the display becomes: u as — Algebraic or Name a 158 3: Dictionary «CATALOG This shows that % will also accept a real number in level 2 and an algebraic or name in level 1 as arguments. There are two additional combinations for %, which you can view by pressing twice. You can also back up through the USAGE display by pressing To exit from the USAGE display, you can: ™ Press SQiH@ to return to the catalog display for the current com- mand. From here you can move through the catalog to other commands, or exit by pressing ggg again. ™ Press [ON] to exit the catalog. [ON] also clears the current command line. 3: Dictionary 159 COMPLEX R-C C-R RE 1M CONJ SIGN R-P P-R ABS NEG ARG The COMPLEX menu ({M[CMPLX]) contains commands specific to complex numbers. Complex number objects in the HP-28C are ordered pairs of numbers that are represented as two real numbers enclosed within parentheses and separated by the non-radix character, for example, ¢1.234,5.678>. A complex number object (x, y) can represent: ™ A complex number z in rectangular notation, where x is the real part of z, and y is the imaginary part. @ A complex number z in polar notation, where x is the absolute value of z, and y is the polar angle. @ The coordinates of a point in two dimensions, in rectangular co- ordinates, where x is the abscissa or horizontal coordinate, and y is the ordinate or vertical coordinate. @ The coordinates of a point in two dimensions, in polar coordinates, where x is the radial coordinate, and y is the polar angle. If you are not familiar with complex number analysis, you may prefer to consider complex number objects as two-dimensional vectors or point coordinates. Most of the complex number commands return re- sults that are meaningful in ordinary two-dimensional geometry as well as for complex numbers. With the exception of the P+R (polar-to-rectangular) command, all HP-28C commands that deal with values of complex number objects assume that their arguments are expressed in rectangular notation. Similarly, all commands that return complex number results, except R-=P (rectangular-to-polar), express their results in rectangular form. 160 3: Dictionary wwe re eCOUVdGdnevnveddeuu »sCOMPLEX In addition to the commands described in the following sections, cer- tain commands in other menus accept complex number arguments: ™ Arithmetic functions +, —, *, /, INV, V, SQ, *. ™@ Trigonometric functions SIN, ASIN, COS, ACOS, TAN, ATAN. ™ Hyperbolic functions SINH, ASINH, COSH, ACOSH, TANH, ATANH. ® Logarithmic functions EXP, LN, LOG, ALOG. R-C C-R RE IM CONJ SIGN The commands R+C, C+R, RE, IM, and CONJ also appear in the fourth row of the ARRAY menu. For their use with array arguments, refer to page 000. R-C Real to Complex Command Level 2 Level 1 Level 1 [ x y @ ox.yd CR-array,;] CR-arrayy] » CC-array] R+C combines two real numbers x and y into a complex number. x is the real part, and y the imaginary part of the result. x and y may also be considered as the horizontal and vertical coordinates, respectively, of the point (x, y) in a two-dimensional space. 3: Dictionary 161 COMPLEX C-R Complex to Real Command Level 1 Level2 Level 4 Coys ow x y CC-array] » CRearray,] CRarray)J CR separates a complex number (or coordinate pair) into its compo- nents, returning the real part (or horizontal coordinate) to level 2, and the imaginary part (or vertical coordinate) to level 1. RE Real Part Function Level 4 Level 4 Guy)» x ‘symb' "RECsymb>* Caray,;] » Carrayp] RE returns the real part x of its complex number argument (x, y). x may also be considered as the horizontal or abscissa coordinate of the point (x, y). IM Imaginary Part Function Level 1 Level 4 Cx,yo oo» y "symb' "IM Csymb>' Carray;] » Carrayp] IM returns the imaginary part y of its complex number argument (x, y). y may also be considered as the vertical or ordinate coordinate of the point (x, y). 162 3: Dictionary Td Idd dddddddddddeddddddd0 ddd adbds »«COMPLEX CONJ Conjugate Analytic Level 14 Level 1 x » x ony) oy? CRarray] » CRarray] CC-array,] » CC-arraypI ‘symb' CONS Csymb> * CON] returns the complex conjugate of a complex number, The imag- inary part of a complex number is negated. SIGN Sign Function Level 1 Level 1 qy . 22 ‘symb' » “SIGN' For a complex number argument (x, ¥;), SIGN returns the unit vector in the direction of (x;, yj): Gx) = (uN + mV +R) «COMPLEX R-P P-R ABS NEG ARG R-P Rectangular to Polar Function Level 1 Level 1 x . £x,09 Guy ® r 8) “symb' ® "RIP Csymb>' R-+P converts a complex number in rectangular notation (x, y) to polar notation (r, #), where r = abs (x, y), # = arg (x, y). P-R Polar to Rectangular Function Level 1 Level 1 cr0) oy ‘symb' @ — 'P4RCsymb>* PR converts a complex number in polar notation (r, #) to rectangular notation (x, y), where x=rcosé, y= rsin 6. 164 3: Dictionary P@dad ddd ddddddddddddddddddddbdddd «COMPLEX ABS Absolute Value Function [- Level 1 | Level 1 z » izi Caray] » |larray || ‘symb' ® “ABS ' ABS returns the absolute value of its argument. For a complex argument (x, y), the absolute value is VQ? + y”) NEG Negate Analytic Level 1 Level 1 Zz » -2z “symb' ow» *—Csymb>* Caray] » C —array] NEG returns the negative of its argument. When no command line is present, pressing executes NEG. A complete stack diagram for NEG appears in “Arithmetic.” ARG Argument Function Level 1 Level 4 z » 4 ‘symb' "FIRGsymb>* ARG returns the polar angle 6 of a complex number (x, y) where arc tan y/x for x > 0, 6 = 4 arc tan y/x + m sign y for x < 0, radians mode, arc tan y/x + 180 sign y for x < 0, degrees mode. The current angle mode determines whether 6 is expressed as degrees or radians. 3: Dictionary 165 «COMPLEX Principal Branches and General Solutions In general the inverse of a function is a relation—for any argument the inverse has more than one value. For example, consider cos~! z; for each z there are infinitely many w’s such that cos w = z. For rela- tions such as cos~! the HP-28C defines functions such as ACOS. These functions return a principal value, which lies in the part of the range defined as the principal branch. The principal branches used in the HP-28C are analytic in the regions where their real-valued counterparts are defined—that is, the branch cut occurs where the real-valued inverse is undefined. The principal branches also preserve most of the important symmetries, such as ASIN(— The illustrations below show the principal branches for \/, LN, ASIN, ACOS, ATAN, ACOSH. The graphs of the domains show where the cuts occur: the solid color or black lines are on one side of the cut, and the shaded color or black regions are on the other side. The graphs of the principal branches show where each side of the cut is mapped under the function. Additional dotted lines in the domain graphs and the principal branch graphs help you visualize the function. Also included are the general solutions returned by ISOL (assuming flag 34, Principal Value, is clear, and radians angle mode is selected). Each general solution is an expression that represent the multiple val- ues of the inverse relations. The functions LOG, *, ASINH, and ATANH are closely related to the illustrated functions. You can determine principal values for LOG, “, ASINH, and ATANH by extension from the illustrations. Also given are the general solutions for these functions. 166 3: Dictionary »:COMPLEX Principal Branch for /Z Domain: Z = ¢x,y? Principal Value: ) = ¢u,v> = I¢x.y> MMM i o o 3 g 2 o 2 = s o 2 'SQ¢Wo=2' 'W' ISOL returns 's1%#I2'. 3: Dictionary 167 «ss COMPLEX Principal Branch for LN(Z) Domain: 2 = ¢x,y> mops , mr mmm | ae ! Principal Value: W = ¢u,v) = LN¢x,y> ' ' ! ! 1 ' \ 4 6 4 I 1 I \ \ \ | I LLL General Solution: 'EXP¢W9=Z' 'W' ISOL returns "LNG Z) +2k0kikn1'. 168 3: Dictionary Fdddidididididddd ddd dddddddddddddidadddd «COMPLEX Principal Branch for LOG (Z) You can determine the principal branch for LOG from the illustrations for LN (on the previous page) and the relationship log (z) = In (2)/In (10). General Solution: 'ALOG +2knkitn1' Principal Branch for ATANH(Z) You can determine the principal branch for ATANH from the illustra- tions for ATAN (on page 000) and the relationship atanh z = —iatan iz. General Solution: ‘'TANH(W>=Z' 'W' ISOL returns "ATANHCZ) +n*ikn1' 3: Dictionary 169 +s COMPLEX Principal Branch for ASIN(Z) Domain: Z = ‘x.y? Principal Value: Wi = ¢ & aV¥) = ASINGX,y> MMT) — IIL General Solution: 'SIN¢CW>=Z' 'W' ISOL returns "ASINGZ3¥€€-1L9*nt+nkni'. 170 3: Dictionary ld ddddddddddddddddddédddd ! ! | d Principal Branch for ACOS (Z) Domain: 2 = (x.y? Principal Value: WW = ¢u,v) = ACOS¢x,y> | General Solution: 'COS¢W2=Z' 'W' ISOL returns ‘SL¥ACOSC2)+2¥aen1' IN 3: Dictionary 171 COMPLEX Principal Branch for ATAN(Z) Domain: 2 = ¢x,y> Principal Value: | = = ATANCx,y> NL General Solution: 'TANCW>=2' 'W' ISOL returns ‘ATANC 2) +9¥n1' 172 3: Dictionary HP@dd dis OCddddsddddddddedddded¢eddbeddT YT «COMPLEX Principal Branch for ACOSH (Z) Domain: 2 = ‘x,y? | t I \ ! 1 | 1 TNT 1 1 t Hl It H Principal Value: W = ¢u,v> = ACOSH¢x,y? PIII General Solution: 'COSH¢N9=Z' 'W' ISOL returns "sL¥ACOSH(Z) +24 aki tn1' 3: Dictionary 173 LIST >LIST LIsT~ PUT GET PuTI GETI SUB SIZE A list is an ordered collection of arbitary objects, that is itself an ob- ject and hence can be entered into the stack or stored in a variable. The objects in the list are called elements, and are numbered from left to right starting with element 1 at the left. The commands in the LIST menu enable you to create and alter lists, and to access the objects contained in lists. In addition to the LIST menu commands, you can also use the key- board function + to combine two lists. + Add Analytic Level 2 Level 1 Level 1 Clist, ¥ tlisty} » Uist, list, > + concatenates two lists. That is, it takes two lists from the stack and returns a single list containing the objects from the original two lists. A complete stack diagram for + is given in the “Arithmetic” section. LIST = LIST- PUT GET PUTI GETI >LIST Stack to List Command Leveln+1 ... Level2 Level 4 Level 1 Obj, -.. Obj, n © obj, ... obj? 174 3: Dictionary eM dad ddd ddddddddddddddddddddiddd? LIST +LIST takes an integer number n from level 1, plus 1 additional ob- jects from levels 2 through n + 1, and returns a list containing the 7 objects. =LIST is also available in the STACK menu. LIST List to Stack Command 1 L Level2 Level 1 Ley + fobjy ... obj} Obj)... Obj n LIST= takes a list of n objects from the stack, and returns the objects comprising the list into separate stack levels 2 through n + 1. The number 1 is returned to level 1. LIST= is also available in the STACK menu PUT Put Element Command Level3 Level 2— Level 1 Level 1 Carray,] index » x ® Carrayo] “name ' index + x * CC-array;1 index z ® CC-arrayy] "name! Zz » List, n obj = C listy + "name! n obj ® 3: Dictionary 175 «LIST PUT is a general mechanism for element storage into an array or ob- ject storage into a list. In this section, we will describe list storage. Array storage is described in the “ARRAY” section. PUT takes three arguments from the stack. Level 1 must contain the object you wish to store in the list. Level 2 contains a real number specifying the number of the list element you wish to replace. Level 3 may contain either a list or a name: @ If level 3 contains a list, PUT returns that list to the stack with its nth element replaced by the object taken from level 1. ™ If level 3 contains a name, then PUT replaces the nth element in the list contained in the variable with the object in level 1. The variable can’t be a local variable. GET is the reverse operation to PUT. GET Get Element Command Level 2 1 Level 1 Carray] index?» z ‘name {index} @ z (list } a » obj "name! n * obj GET is a general mechanism for recalling an element from an array or a list. In this section, list element recall will be described. Array ele- ment recall is described in the “ARRAY” section. 176 3: Dictionary Cdddddddddddddddddddddbdddd «LIST GET takes two arguments from the stack. Level 1 should contain a real number specifying the number of the list element you wish to recall, Level 2 may contain either a list or a name: @ If level 2 contains a list, GET returns the nth element of that list to the stack. @ If level 2 contains a name, GET returns to the stack the nth element in the list contained in the variable. PUT is the reverse operation to GET. PUTI Put and Increment Index Command Level 3 Level 2 Level 1 Carray,] < index, > x » Carrayo] index > ‘name’ — ¢ index, > x = ‘name! { index, > CC-array;] index, > z ® CC-arrayo] { indexy ¥ ‘name’ — index, > z = ‘name’ € indexy list, ¥ m obj © Clisty> Np ‘name? m4 obj » ‘name! ng PUTI is a general mechanism for element storage into an array or ob- ject storage into a list. In this section, list storage will be described. Array storage is described in the “ARRAY” section. 3: Dictionary 177 LIST PUTI stores an object into a list in the same manner as PUT, but also returns the list (or a variable name) and the element number incre- mented by 1. This leaves the stack ready for you to enter a new object, and then execute PUTI again to store the object into the next position in the list. When the element number is equal to the number of elements in the list, PUTI returns the element number 1, starting over at the start of the list. PUTI takes three arguments from the stack. Level 1 must contain the object you wish to store in the list. Level 2 contains a real number specifying the number of the list element you wish to replace. Level 3 may contain either a list or a name: ™ If level 3 contains a list, PUTI returns that list to level 2, with its nth element replaced by the object taken from level 1. The next element number (n; + 1, or 1) is returned to level 1. = If level 3 contains a name, PUTI stores the object as the nth ele- ment in the list contained in the variable. The variable can’t be a local variable. The name is returned to level 2, and the next ele- ment number (1, + 1, or 1) is returned to level 1. GETI is the reverse operation to PUTI. GETI Get and Increment Index Command Level 2 Level 4 Level3 Level2—_Level 1 Carray] ny * Clist? No obj ‘name m » ‘name! No obj Lu GETI is a general mechanism for recalling an element from an array or a list. Array element recall is described in the “ARRAY” section. 178 3: Dictionary CGedddd gddd@e 'eacoedcedcaoedcedoddcudcudt we IST GETI recalls an element from a list in the same manner as GET, with the added feature that GET! leaves the list on the stack plus the ele- ment number incremented by 1, to facilitate successive recalls from the same list. When the element number is equal to the number of elements in the list, GET] returns the element number 1, starting over at the beginning of the list. GETI takes two arguments from the stack. Level 1 should contain a real number, specifying the number of the list element you wish to recall. Level 2 may contain either a list or a name: @ If level 2 contains a list, GET] returns the nth element of that list to level 1, GETI also returns the list to level 3, and the next element number (1, + 1, or 1) to level 2. @ If level 2 contains a name, GETI returns to level 1 the nth element in the list contained in the variable. GETI also returns the name to level 3 and the next element number (7; + 1 or 1) to level 2 PUTI is the reverse operation of GETI. seal IST SUB SIZE SUB Subset Command Level 3 Level2 Level 4 Level 1 " string," m4 No » "strings" tlisty * ny Np © {lists > SUB takes a list and two integ and returns a new list containii n, through 1 of the original | list. SUB works in an analogous m: “STRING’. SIZE er numbers m, and ny from the stack, ing the objects that were the elements ist. If ny < m,, SUB returns an empty anner for character strings. Refer to Level 1 " string) list} Carray] "symb' Command ° n > n » list } * n SIZE returns an object representing the size, or dimensions, of a list, array, algebraic, or string argument. For a list, SIZE returns a number n that is the number of elements in the list. Refer to “ALGEBRA”, “ARRAY” and “STRING” for the cases of algebraics, arrays and strings, respectively. 180 3: Dictionary Ti It IP Pd dd dddddddddddddedddddedddd LOGS LOG ALOG LN EXP LNP1 EXPM SINH ASINH COSH ACOSH TANH ATANH The LOGS menu contains exponential, logarithmic, and hyperbolic functions. All of these functions accept real and algebraic arguments; all except LNP1 and EXPM accept complex arguments. LOG ALOG LN EXP LNP1 EXPM LOG Common Logarithm Analytic Ler Level 1 z » log z ‘symb' "LOG Csymb>' LOG returns the common logarithm (base 10) of its argument. An Infinite Result exception results if the argument is 0 or (0, 0). ALOG Common Antilogarithm Analytic ALOG returns the common antilogarithm (base 10) of its argument— that is, 10 raised to the power given by the argument. 3: Dictionary 181 LOGS For complex arguments: alog (x,y) = exp cx cos cy + I exp cx sin cy, where c = In 10. (Computation is performed in radians mode). LN Natural Logarithm Analytic Level 4 [ Level 4 z . Inz ‘symb' ow *"LNGsymb>* LN returns the natural logarithm (base e) of its argument. An Infinite Result exception results if the argument is 0 or (0, 0). EXP Exponential Analytic Level 1 Level 1 z » exp z ‘symb' = ‘EXP * LNP1 returns In(1 + x), where x is the real-valued argument. LNP1 is primarily useful for determining the natural logarithm of numbers close to 1. LNP1 provides a more accurate result for In(1 + x), for x close to zero, than can be obtained using LN. Arguments less than 1 cause an Undefined Result error. EXPM Exponential Minus 1 Analytic Level 1 Level 1 x » exp (x)—1 “symb' » “EXPM¢symb> ' EXPM returns e* — I, where x is the real-valued argument. EXPM is primarily useful for determining the exponential of numbers close to 0. EXPM provides a more accurate result for eX — 1, for x close to 0, than can be obtained using EXP. 3: Dictionary 183 LOGS SINH ASINH COSH ACOSH TANH ATANH These are the hyperbolic functions and their inverses. SINH Hyperbolic Sine Analytic Level 1 Level 1 Zz . sinh z ‘symb' # —'SINH€symb)! SINH returns the hyperbolic sine of its argument. ASINH Inverse Hyperbolic Sine Analytic | Level 1 Level 4 Zz . asinh z ‘symb' ® = *ASINHCsymb)* ASINH returns the inverse hyperbolic sine of its argument. For real arguments |x! > 1, ASINH returns the complex result for the argu- ment (x, 0). 184 Dictionary sida dd ddddddddddddddddddd dd dbdTddd +LOGS COSH Hyperbolic cosine Analytic Le Level 1 z » cosh z ‘symb' @ — 'COSH* COSH returns the hyperbolic cosine of its argument. ACOSH Inverse Hyperbolic Cosine Analytic Level 1 Level 1 z . acosh z ‘symb' "AC OSH ' ACOSH returns the inverse hyperbolic cosine of its argument. For teal arguments |x| < 1, ACOSH returns the complex result obtained for the argument (x, 0). TANH Hyperbolic Tangent Analytic Level 1 Level 1 z . tanh z ‘symb' @ — 'TANHCsymb)* TANH returns the hyperbolic tangent of its argument. 3: Dictionary 185 LOGS ATANH Inverse Hyperbolic Tangent Analytic Level 4 Level 1 Zz * atanh z ‘symb' @ — ‘ATANH¢symb>* ATANH returns the inverse hyperbolic tangent of its argument. For real arguments |x| > 1, ATANH returns the complex result obtained for the argument (x, 0). For a real argument x = +1, an Infinite Result exception oc- curs. If flag 59 is clear, the sign of the result (MAXR) is that of the argument. 186 3: Dictionary bdddddddddd Ida Pddddddddddddddddd Jd MODE STD FIX scl ENG DEG RAD +CMD —CMD +LAST —LAST +UND —UND +ML —ML RDX. RDX, PRMD The MODE menu contains menu keys that control various calculator modes: number display mode, angle mode, recovery modes, radix mode, and multi-line display mode. The menu key labels in this menu also act as annunciators to show you the current states of the modes. Each mode has two or more keys that set the mode; at any time, one menu key label for each mode is displayed in normal video (black-on-white). The normal video key la- bel indicates the current mode setting. For example, the angle mode is set by the DEG and RAD commands. When the angle mode is degrees, the label is normal video and the label is shown in in- verse video (white-on-black). If you press , the label changes to normal video (and the label to inverse) to indicate that the angle mode is radians. In immediate entry mode, all MODE commands except FIX, SCI, and ENG (which require arguments) execute without performing ENTER, leaving the command line unchanged. STD FIX scl ENG DEG RAD ‘These functions set the number display mode and the angle mode. The number display functions STD, FIX, SCI, and ENG control the display format of floating-point numbers, as they appear in stack dis- plays of all types of objects. In the algebraics, non-integer floating- point numbers are displayed in the current format and integers are always displayed in STD format. 3: Dictionary 187 »»MODE The current display mode is encoded in flags 49 and 50. Executing any of the display functions alters the states of these flags; conversely, setting and clearing these flags will affect the display mode. The cor- respondence is as follows: Standard Fix Scientific Engineering Flags 53-56 encode (in binary) the number of decimal digits, from 0 through 11. Flag 56 is the most significant bit. STD Standard Command STD sets the number display mode to standard format. Standard for- mat (ANSI Minimal BASIC Standard X3J2) produces the following results when displaying or printing a number: = Numbers that can be represented exactly as integers with 12 or fewer digits are displayed without a radix or exponent. Zero is dis- played as 8. @ Numbers that can be represented exactly with 12 or fewer digits, but not as integers, are displayed with a radix but no exponent. Leading zeroes to the left of the radix and trailing zeroes in the fractional part are omitted. 188 3: Dictionary Oddi ddd ddd dd dd ddddddddldlddidddd » MODE @ All other numbers are displayed in the following format: (sign) mantissa E (sign) exponent where the value of the mantissa is in the range 1 < x < 10, and the exponent is represented by one to three digits. Trailing zeroes in the mantissa and leading zeroes in the exponent are omitted. The following table provides examples of numbers displayed in stan- dard format: Representable Number Displayed As With 12 Digits? 1011 146959996808 Yes (integer) 1012 1,E12 No 10-72 889984600061 | Yes 1.2x10-1 98986000812 | Yes 1.23x10°' | 1,23E-11 No 12.345 12,345 Yes FIX Fix Command Level 1 n » FIX sets the number display mode to fixed format, and uses a real number argument to set the number of fraction digits to be displayed in the range 0 through 11. The rounded value of the argument is used. If this value is greater than 11, 11 is used; if less than 0, 0 is used. 3: Dictionary 189 :MODE In fixed format, displayed or printed numbers appear as (sign) mantissa The mantissa appears rounded to 1 places to the nght of the decimal, where #1 is the specified number of digits. While fixed format is active, the HIP-28C automatically displays a value in scientific format in ei- ther of these two cases: = If the number of digits to be displayed exceeds 12. @ If a non-zero value rounded to 1 places past the decimal point would be displayed as zero in fixed format sci Scientific Command Level 1 n » SCI sets the number display mode to scientific format, and uses a real number argument to set the number of significant digits to be dis- played in the range 0 through 11. The rounded value of the actual argument is used. If this value is greater than 11, 11 is used; if less than 0, 0 is used. In scientific format, numbers are displayed or printed in scientific no- tation to n + 1 significant digits, where 1 is the specified number of digits (the argument for SCI). A value appears as Csign> mantissa E ¢€sign) exponent where 1 < mantissa < 10. 190 3: Dictionary ddd dd dddddddddddddddddodddd Paalala ..MODE ENG Engineering Command Level 1 no | ENG sets the number display mode to engineering format, and uses a real number argument to set the number of significant digits to be displayed, in the range 0 through 11. The rounded value of the argu- ment is used. If this value is greater than 11, 11 is used; if less than 0,0 is used. In engineering format, a displayed or printed number appears as Csian> mantissa E ¢sign> exponent where 1 < mantissa < 1000, and the exponent is a multiple of 3. The number of significant digits displayed is one greater than the argu- ment specified. If a displayed value has an exponent of —499, it is displayed in scientific format. DEG Degrees Command SS ee DEG (degrees) sets the current angle mode to degrees. In degrees mode: Real-number arguments. Functions that take real-valued angles as arguments interpret those angles as being expressed in degrees. (Com- plex arguments for SIN, COS and TAN are always assumed to be in radians.) 3: Dictionary 191 »- MODE Real-number results. Functions that give real-valued angles as re- sults return those angles expressed in degrees: ASIN, ACOS, ATAN, ARG, and R+P. (Complex results returned by ASIN or ACOS for ar- guments outside of the domain x < 1 are always expressed in radians.) Executing DEG turns off the (277) annunciator and clears user flag 60. RAD Radians Command RAD (radians) sets the current angle mode to radians. In radians mode: Real-number arguments. Functions that take real-valued angles as arguments interpret those angles as being expressed in radians. (Com- plex arguments for SIN, COS and TAN are always assumed to be in radians.) Real-number results. Functions that give real-valued angles as re- sults return those angles expressed in radians: ASIN, ACOS, ATAN, ARG, and R+P. (Complex results returned by ASIN or ACOS for ar- guments outside of the domain x < 1 are always expressed in radians.) Executing RAD turns on the (27) annunciator, and sets user flag 60. 192 = 3: Dictionary «MODE +CMD -CMD +LAST -LAST +UND -—-—UND These six menu keys control the three recovery mechanisms COM- MAND, LAST, and UNDO. In each label, “+” means “ON,” and “—” means “OFF.” None of these operations can be included in programs; the menu keys are always immediate execute keys. LAST can be enabled or disabled programmatically by setting or clearing flag 31. COMMAND Enabled/Disabled Operation Description ee Enables COMMAND. Previous command lines can now be re- covered by pressing [COMMAND]. Disables COMMAND and recovers the memory in which pre- vious command lines are saved. Pressing [COMMAND ] now causes a COMMAND Stack Disabled error. LAST Enabled/Disabled Description Enables LAST. Commands that take one to three arguments now save those arguments for recall by LAST. Disables LAST and recovers the memory used to save argu- ments. Executing LAST now causes a LAST Disabled error. 3: Dictionary 193 MODE UNDO Enabled/Disabled Ope Description Enables UNDO. The stack is now saved at each execution of ENTER, and pressing §§§[UNDO) replaces the current stack with the last saved stack. Disables UNDO and recovers the memory occupied by the saved stack. Pressing §J§(UNDO] now causes an UNDO Disabled error. The effects of and (§§ESGE are “local” to the current suspended program. That is, if a program is suspended, exe- cuting and (@SQI% changes the stack save feature only while that program is suspended. +ML —ML RDX. RDX, PRMD Multi-line Enabled/Disabled Objects on the stack are displayed in either of two general display formats: multi-line and compact. Objects in all levels higher than level 1 are always displayed in compact format, in which only one display line is used for the object (if the complete object cannot be shown, an ellipsis “...” replaces the rightmost character). 194 3: Dictionary wd dd ddddddddddddddddddddddbdoddd «MODE You have the option, using the and menu keys, of dis- playing objects in level 1 in compact format (jj), or in multi-line format (§@g08#). In multi-line display mode: ® Matrices are shown with each row on a separate display line, with as many elements displayed on each line as possible with the cur- rent number display mode. ™ Procedures and lists are displayed with newlines inserted into the displayed text so that all of their definitions are visible. Additional procedures, lists, and matrices contained within the definitions are also displayed in multiple lines. ™ Numbers, complex numbers, vectors, names, and strings are not broken across display lines, and thus still may be truncated in the display. As in compact display, hidden characters are indicated by an ellipsis *...” in the rightmost character position. If the full display of the object requires more lines of the display than are available (four with the cursor menu, less one for any other menu, less one or more if there is a command line active), you can view additional lines with §(ViEws) or @§(Views). The current multi-line/compact mode choice is also represented by flag 45. Multi-line display mode corresponds to flag 45 set. Operation Description ue Selects multi-line display mode for objects in level 1, and sets flag 45. With multi-line mode on, one or more display lines are used to display the object in level 1. Level 1 objects printed on the HP-82240A printer in trace mode will also be printed in a multi-line mode. a8 Selects compact display mode for objects in level 1, and clears flag 45. Level 1 objects printed on the HP-82240A printer in trace mode are also printed in compact mode. 3: Dictionary 195 MODE Period/Comma for Radix Mark (ELERE and Eee allow you to select the character that is used to rep- resent the radix, that is, the symbol that separates the integer and fractional parts of a floating-point number. The choice is either the period *.” or the comma “,”; the character that is not the current radix character (called the non-radix) can be used interchangeably with the space as an object separator when you enter objects into the com- mand line (except within algebraic objects, where the non-radix is used to separate arguments of multiple-argument functions). Operation Description (Eee Sets the radix mark that separates the integer and fractional parts of a number to be a period (decimal point), and clears user flag 48. In this mode, the comma is called the non-radix, and can be used in the command line interchangeably with the space, except within algebraic objects. eae Sets the radix mark that separates the integer and fractional parts of a number to be a comma, and sets user flag 48. In this mode, the period is called the non-radix, and can be used in the command line interchangeably with the space, except within algebraic objects. PRMD Print Modes Command SSS SSS SS 196 3: Dictionary ee ce eee roe ree eee ee eee ee a Ue eh i? @ .MODE PRMD displays and prints a listing of current HP-28C modes. The listing shows the states of the number display mode, multiline mode, the angle mode, the binary integer base, and the radix mode, and whether the UNDO, COMMAND, and LAST features are enabled or disabled. A typical listing looks like this: Format STD Base DEC DEGREES Radix . Undo ON Command ON Last _ON Multiline ON 3: Dictionary 197 PLOT STEQ RCEQ PMIN PMAX INDEP DRAW PPAR RES AXES CENTR *W *H STOZ RCL> COL> SCLE DRW> cLLCD DISP PIXEL DRAX CLMF PRLCD The commands in the PLOT menu give you the capability of creating special displays that supersede the normal stack and menu display. You can plot mathematical functions, make scatter plots of statistical data, display data while a program is executing, and digitize informa- tion from plots. The Display The HP-28C liquid-crystal display (LCD) is an array of 32 rows of 137 pixels (dots), which is organized as four rows of 23 character spaces. A character space is six pixels wide by eight pixels high, with the exception of the rightmost character space in each row, which is five pixels wide. Normally, display characters are five pixels wide, which leaves a blank column of pixels between characters, The default display shows menu key labels, the command line, and the stack. You can temporarily replace the default display in the fol- lowing ways: ™ Clearing the display. The command CLLCD blanks the entire dis- play (except for the annunciators). ™ Displaying messages. Using DISP, you can display objects in one or more of the four display lines. ™@ Displaying graphical data. The commands PIXEL, DRAW, and DRW2 allow you to plot individual data points, mathematical functions, and points from the statistics matrix, respectively. DRAX allows you to draw axes within a plot. 198 3: Dictionary Tcuoutddd wa — wa —— a — ww wo — wa a a we a a wo wala@dal ala «PLOT When you execute any of these commands, a system message flag is set automatically, to prevent the normal stack and menu display from overwriting your special display. The message flag is cleared, and the normal display restored, when you press any key after all active pro- cedures have completed execution, that is, when the busy annunciator (@)) is off. You can use the command CLMF in a program to clear the message flag. There are also keys that produce special displays and redefine the keyboard temporarily: @ B(CATALOG) and §§ (UNITS) create catalog displays, and provide menu keys and letter keys for you to control the catalogs. QBLCATALOG) and §§(unrts) are described in “The Command CATA- LOG’ and “Unit Conversion’, respectively. . and execute DRAW and DRW3, respectively, to pro- duce mathematical function graphs and scatter plots of statistical data. In addition, if DRAW or DRW2 is ececuted by pressing its menu key while the plot displays are visible, you can use the menu keys to move a cursor about the display or to return digitized co- ordinates to the stack. Display Positions For the purpose of displaying character strings, the display is treated as four lines of characters. The topmost line of the display is line 1, the next line is line 2, and so on. Each line must be displayed as a single entity; you can not display single characters at arbitary posi- tions. DISP displays an object, where the object is represented as a character string equivalent to the multi-line stack display of the object. 3: Dictionary 199 PLOT For graphical data displays, the display is treated as a grid of 32 x 137 dots, or pixels. A pixel is specified by its coordinates, a com- plex number representing an ordered pair of coordinates (x, y), where x is the horizontal coordinate and y is the vertical coordinate. (We will use the letters x and y to represent the horizontal and vertical direc- tions during this discussion, but you can use any variable names you choose for plotting on the HP-28C.) The scaling of coordinates to pixels is established by the coordinates of the corner points P,,gy and P,,i,, Which you set with the commands PMAX and PMIN, respectively. P,,,, is the upper-rightmost pixel in the display; its coordinates are (Xax, Vmax): Piin (mine Ymin) iS the lower-leftmost pixel. The default coordinates of these points are Prax = (6.8, 1.6) and Prin = (—6.8, —1.5). The coordinates of the center of a particular pixel are x= Ny Wy + Xmin y= My Wy + Yin where n, is the horizontal pixel number and 1, is the vertical pixel number (Pyin has ny = 0 and ty = 0; Pray has ny = 136, ny = 31). wy and w, are the horizontal and vertical pixel widths: Wy = Bmax —Xmin)/136- Wy = Vmax —Ymin)/31. The pixel with n, = 68 and n, = 15 is defined as the center pixel. With the default values for P,,x and Pyyjq, the center pixel has coordi- nates (0,0). 200 3: Dictionary a a a _ | «PLOT Mathematical Function Plots A mathematical function plot is a plot of the values of a procedure stored in the variable EQ (the same used by the Solver), as a function of a specified independent variable. The procedure is fully evaluated for each of 137/r values of the independent variable from xj,i, to Xyqxwhere r is the resolution of the plot. A dot (pixel) is added to the graph for each coordinate pair (independent-variable-value, procedure- value), as long as the procedure value is within the plot range between Yin ANA Yay The plot also includes axes with tick marks every 10 pixels. The actual plot is produced by the command DRAW. If you execute DRAW directly by pressing the menu key §L3{%, you will be able to use the cursor keys to digitize data from the plot. A function plot will produce one or two plotted curves, according to the definition of the EQ procedure: @ If EQ contains an algebraic expression without an equals sign, DRAW will plot a single curve corresponding to the value of the expression for each value of the independent variable within the plot range. ™ If EQ contains an algebraic equation, DRAW will plot two curves, one for each side of the equation. Note that the intersections of the two curves occur at the values of the independent variable that are the roots of the equation, that can be found by the Solver. @ If EQ contains a program, it will be treated as an algebraic expres- sion and plotted as a single curve. This presumes that the program obeys the syntax of an algebraic expression: it must take no argu- ments from the stack, and return exactly one object to the stack. 3: Dictionary 201 wiPLOT The general procedure for obtaining a function plot is summarized below. For details, refer to the descriptions of the individual commands. 1. Store the procedure to be plotted in EQ, using STEQ. 2. Select the independent variable with INDEP. 3. Select the plot ranges, using PMIN, PMAX, CENTR, *H, and *W. 4. Specify the intersection of the axes, using AXES. 5. Select the plot resolution with RES. 6. Execute DRAW. Any of steps 1-5 can be omitted, in which case the current values are used. Statistical Scatter Plots A statistical scatter plot is a plot of individual points taken from the current statistics array stored in variable DAT. You may specify any column of coordinate values from the array to correspond to the hori- zontal coordinate, and any other column for the vertical coordinate. One point is then plotted for each data point in the matrix. The general procedure for obtaining a scatter plot is summarized be- low. For details, refer to the descriptions of the individual commands. 1. Store the statistical data to be plotted in ZDAT, using STO. 2. Select the horizontal and vertical coordinate columns with COL. 3. Select the plot ranges, using SCLE for automatic scaling, or PMIN, PMAX, CENTR, *H, and *W. 202 = 3: Dictionary BEE EEE ED ETE EES EE EIS ILE OUT SS «PLOT 4. Specify the intersection of the axes, using AXES. 5. Execute DRW2. Any of the steps 1-4 can be omitted, in which case the current values are used. Interactive Plots If you execute DRAW or DRW2 by pressing the corresponding menu key, the HP-28C enters an interactive plot mode that allows you to digitize information from the plot while viewing it. When you start an interactive plot: 1. 2. s > The display is cleared. Either DRAW or DRW2 is executed to produce the appropriate plot. (If you press [ON] before the plotting is finished, plotting of points halts, and the interactive mode begins). A cursor in the form of a small cross (+) appears at the center of the display. (If the axes are drawn through the center, the cursor will not be visible until you move it.) The menu keys are activated as cursor/digitizer keys: ™ The two leftmost menu keys return the coordinates of the cursor to the stack without terminating the plot display. INS returns the coordinates as a complex number (x, y). [DEL] re- turns the coordinates as two real numbers, x in level 2 and y in level 1. ® The four rightmost menu keys act like the regular cursor con- trol keys, moving the cursor up, down, left, or right, or all the way in one direction if you first press J. The interactive plot mode continues until you press the [ON] key. You can digitize as many points as you wish during the interactive plot, by repeated use of [INS], [DEL], and the cursor keys. 3: Dictionary 203 PLOT Plot Parameters The scaling factors necessary for converting a coordinate pair to a dis- play position, and vice-versa, are stored as a list of objects in the variable PPAR. We will refer to them collectively as the plot param- eters, They are: Description Pp. ‘min Pmax Independent variable Resolution Paxes A complex number representing the coordinates of the lower leftmost pixel. Set by PMIN, CENTR, *H, *W, and SCLZ. A complex number representing the coordinates of the upper rightmost pixel. Set by PMAX, CENTR, *H, *W, and SCLZ. The variable name corresponding to the horizontal axis in a mathematical function plot. Set by INDEP. A real positive integer representing the spacing of plotted points in a function plot. Set by RES. A complex number representing the coordinates of the inter- section of the plot axes. Set by AXES. STEQ RCEQ PMIN PMAX INDEP DRAW This set of commands allows you to select a procedure for a function plot, set the primary plot parameters, and plot the procedure. 204 3: Dictionary Oe ee ee oases eee eee ee eae eT UU aa Wg »1PLOT STEQ Store Equation Command Level 1 obj » STEQ takes an object from the stack, and stores it in the variable EQ (‘EQuation’). It is equvalent to 'EQ' STO. EQ is used to hold a procedure (the current equation) used as an im- plicit argument by the Solver and by DRAW, so STEQ’s argument should normally be a procedure. RCEQ Recall Equation Command Level 1 » obj RCEQ returns the contents of the variable EQ. It is equivalent to "EQ@' RCL. PMIN Plot Minima Command Level 1 Cup o® PMIN sets the coordinates of the lower leftmost pixel in the display to be the point (x, y). The complex number (x, y) is stored as the first item in the list contained in the variable PPAR. 3: Dictionary 205 «PLOT PMAX Plot Maxima Command Level 4 | Oy ® PMAX sets the coordinates of the upper-rightmost pixel in the display to be the point (x, y). The complex number (x, y) is stored as the sec- ond item in the list contained in the variable PPAR. INDEP Independent Command Level 4 | ‘name’ INDEP takes a name from the stack, and stores it as the independent variable name, the third item in the list contained in the variable PPAR. For subsequent executions of DRAW, the name will be used as the independent variable corresponding to the horizontal axis (ab- scissa) of the plot. DRAW Draw Command , | DRAW produces mathematical function plots on the HP-28C display. If you execute DRAW by pressing the {9338 menu key, an interactive plot is produced, as described in “Interactive Plots” on page 203. 206 3: Dictionary aqa_1_g qd @@ es) -PLOT DRAW automatically executes DRAX to draw axes, then plots one or two curves representing the value(s) of the current equation at each of 137/r values of the independent variable. The current equation is the procedure stored in the variable EQ. If EQ contains an algebraic equation, the two sides of the equation are plotted separately, yielding two curves. If the current equation is an algebraic expression or a program, one curve is plotted. The resolution r determines the number of plotted points. r = means a point is plotted for every column of display pixels; r = 2 means every other column; and so on. r is set by the RES command The default value of r is 1; larger values of r may be used to reduce plotting time. DRAW checks the current equation to see if it contains at least one reference, direct or indirect, to the independent variable. If the inde- pendent variable was never selected, the first variable in the current equation is used (and stored in PPAR). If the independent variable is not referenced in the current equation, the message name, Not In Equation Using name, is displayed momentarily before the display is cleared and before the actual plot begins. Here name, is the current independent variable de- fined in PPAR, and name, is the first variable found in the current equation. If the current equation contains no variables, the second line of the warning message is replaced by Constant Equation. (The independent variable name in PPAR will then be constant.) PPAR RES AXES CENTR *W *H These commands provide alternate ways of setting plot parameters. 3: Dictionary 207 PLOT PPAR Recall Plot Parameters Operation | Level 1 | ® {plot parameters > The PPAR command is a convenient way for you to examine the cur- rent plot parameters. PPAR is a variable containing a list of the plot parameters, in the form Onin Yin) Smaw Ymax) Independent resolution (Xaxiv Yaxis) | Pressing PPAR returns the list to the stack. The contents of the list are described in “Plot Parameters” on page 204. RES Resolution Command Level 1 n * RES sets the resolution of mathematical function plots (DRAW) to the value n. 1 is stored as the fourth item in the list contained in the variable PPAR. n determines the number of plotted points: 1 = 1 means a point is plotted for every column of display pixels; n = 2 means every other column; and so on. The default value of n is 1; you may wish to use larger values of n to reduce plotting time. AXES Axes Command Level 1 Oy o® 208 3: Dictionary Seem ee eee eee eee eee eee ae a re «PLOT AXES sets the coordinates of the intersection of the plot axes (drawn by DRAX, DRAW, or DRW2), to be the point (x, y). The complex number (x, y) is stored as the fifth and last item in the list contained in the variable PPAR. The default coordinates are (0, 0). CENTR Center Command CENTR adjusts the plot parameters so that the point represented by the argument (x, y) corresponds to the center pixel (n, = 68, ny = 15) of the display. The height and width of the plot are not changed. Prax and Prin are replaced by Pyygy’ and Pyyjn’, where: Xmax = X + YX max~Xmindy Yar’ = Y + 11 Ymax—Yrnin) Xmin’ =X — Y%2 (Xmae—Xmindy Ymin’ = ¥ — “1 Ynax—Ymin) *W Multiply Width Command *W adjusts the plot parameters so that both xXj,i, aNd X,,x are multi- plied by the number x. ra Xmin = X % Xmin , Xmax xX Xmax 3: Dictionary 209 «PLOT *H Multiply Height Command Level 1 x » %*H adjusts the plot parameters so that both ymin aNd Ymgx are multi- plied by the number x. Yin’ = XX Yonin Ymax = ¥ X Ymax STO RCLZ COLE SCLY DRWZ This group of commands allows you to create statistics scatter plots. See “STAT” for a description of the general statistical capabilities of the HP-28C. STOY Store Sigma Command CRarray] STOZ takes a real array from the stack and stores it in the variable XDAT. Executing STOZ is equivalent to executing 'EDAT' STO. The stored array becomes the current statistics matrix. RCLY Recall Sigma Command Level 1 * obj RCLZ returns the current contents of the variable ZDAT. RCLZ is equivalent to 'ZDAT' RCL. 210 3: Dictionary an lee onl oe 4 ‘ ‘ ‘ FUUCTCUCvIdddsd ad — a —_ ww w a wr 7 o a a oe o ».PLOT COL> Sigma Columns Command Level 2 Level 1 COLS takes two real integers, n; and 1, and stores them as the first two items in the list contained in variable ZPAR. The numbers iden- tify column numbers in the current statistics matrix ZDAT, and are used by statistics commands that work with pairs of columns. Refer to “Stat” for details about ZPAR. n, designates the column corresponding to the independent variable for LR, or the horizontal coordinate for DRWE or SCLZ. ny designates the dependent variable or the vertical coordinate. For CORR and COV, the order of the two column numbers is unimportant. If a two-column command is executed when ZPAR does not yet exist, it is automatically created with default values n, = 1 and nj = 2. SCLY Scale Sigma Command ee SCL® causes an automatic scaling of the plot parameters in PPAR so that a subsequent statistics scatter plot exactly fills the display. That is, the horizontal coordinates of P,,,, and P,,;, are set to be the maxi- mum and minimum coordinate values, respectively, in the independent data column of the current statistics matrix. Similarly, the vertical coordinates of Py,, and P,,j, are set from the dependent data column. The independent and dependent data column numbers are those stored in the variable [PAR. 3: Dictionary 211 «PLOT DRW> Draw Sigma Command > DRWZ automatically executes DRAX to draw axes, then creates a sta- tistical scatter plot of the points represented by pairs of coordinate values taken from the independent and dependent columns of the current statistics matrix ZDAT. If you execute DRW by pressing the {9 menu key, an interactive plot is produced, as described in “In- teractive Plots” on page 203. The independent and dependent columns are specified in the variable =PAR (default 1 and 2, respectively). DRW® plots one point for each data point in the statistics matrix. For each point, the horizontal co- ordinate is the coordinate value in the independent data column, and the vertical coordinate is the coordinate value in the dependent data column. CLLCD DISP PIXEL DRAX CLMF PRLCD These commands allow you to create special displays, and to print an image of the display on the HP-82440A printer. CLLCD Clear LCD Command » CLLCD clears (blanks) the HP-28C display (except the annunciators) and sets the system message flag. 212 3: Dictionary ee a ae +.PLOT DISP Display Command obj n * DISP displays obj in the nth line of the display, where is a real integer. n = 1 indicates the top line of the display; n = 4 is the bot- tom line. DISP sets the system message flag to suppress the normal stack display. An object is displayed by DISP in the same form as would be used if the object were in level 1 in the multi-line display format, except for strings, which are displayed without the surrounding " delimiters, to facilitate the display of messages. If the object display requires more than one display line, the display starts in line n, and continues down the display either to the end of the object or the bottom of the display. PIXEL Pixel Command Level 1 Oyo» | PIXEL turns on one pixel at the coordinates represented by the com- plex number (x, y) and sets the system message flag. DRAX Draw Axes Command Dictionary 213 »1PLOT DRAX draws a pair of axes on the display, and sets the system mes- sage flag. The axes intersect at the point Pyyes, specified in the variable PPAR. Tick marks are placed on the axes at every 10th pixel. CLMF Clear Message Flag Command » CLMF clears the internal message flag set by CLLCD, DISP, PIXEL, DRAX, DRAW, and DRWS. Including CLMF in a program, after the last occurrence of any of these words, causes the normal stack display to be restored when the program completes execution. PRLCD Print LCD Command [ » PRLCD provides a means by which you can print copies of math- ematical function plots and statistical scatter plots. Since PRLCD will print only a copy of the current display, you must include PRLCD and DRAW (or DRW2) in the same command line. For example: CLLCD DRAW PRLCO [ENTER will clear the LCD, plot the current equation, then print a replica of the display. 214 = 3: Dictionary PRINT PR1 PRST PRVAR PRLCD TRACE NORM PRSTC PRUSR PRMD cR The HP-28C transmits text and graphics data to the HP 82240A Printer via an infrared light link. The infrared light-emitting diode is situated on the top edge of the right-hand HP-28C case. Before print- ing, check that the printer can receive the infrared beam from the HP-28C. Refer to the printer manual for more information about printer operation. You can use the print commands to print objects, variables, stack lev- els, plots, and so on. In addition, you can select TRACE mode to automatically print a continuous record of your calculations. The & annunciator appears whenever the HP-28C transmits data from the infrared diode. The calculator can’t determine whether printing is actually occurring because the transmission is one-way only. Make sure that TRACE mode is not active unless a printer is present—otherwise, the frequent infrared transmissions slow down keyboard operations. Print Formats Multi-line objects can be printed in compact format or multi-line for- mat. Compact print format is identical to compact display format. ” Multi-line printer format is similar to multi-line display format, ex- > cept that the following objects are fully printed: » ™ Strings and names that are more than 23 characters long are con- > tinued on the next printer line. » » ” . 7 3: Dictionary 215 »oPRINT = The real and imaginary parts of complex numbers are printed on separate lines if they don’t fit on the same line. @ Arrays are printed with an index before each element. For example, the index 1,1: precedes the first element. In TRACE mode, the print format depends on whether multi-line dis- play format is enabled or disabled (flag 45 is set or clear). The print command PRSTC (print stack compact) prints in compact format. All other print commands print in multi-line format. Faster Printing When the printer is battery powered, its speed declines as its batteries discharge. The HP-28C normally paces data transmission to match the printer's speed when its batteries are nearly exhausted. When your printer is powered by an AC adapter, it can sustain a higher speed. You can increase the calculator’s data transmission rate to match the higher speed of the printer by setting flag 52. For subse- quent battery-powered printing, clear flag 52 to return to slower data transmission. Don’t set flag 52 when the printer is battery powered. Although a printer with fresh batteries can print at the higher rate, it will eventu- ally slow down enough to lose data sent by the HP-28C. This loss of data corrupts printed output and can cause the printer to change its configuration. 216 = 3: Dictionary «PRINT Configuring the Printer You can set various printer modes by sending escape sequences to the printer. An escape sequence consists of the escape character (character 27) followed by an additional character. When the printer receives an escape sequence, it switches into the selected mode. The escape se- quence itself isn’t printed. The HP 82240A printer recognizes the following escape sequences. Printer Mode Escape Sequence Print Column Graphics No Underline* Underline Single Wide Print* Double Wide Print Self Test Reset * Default mode. You can use CHR and + to create escape sequences and use PR1 to send them to the printer. For example, you can print Underline as follows: 2? CHR 251 CHR + "Under" + 27 CHR + 256 CHR + “Lline" + PRI 3: Dictionary 217 »-PRINT PR1 PRST PRVAR PRLCD TRACE NORM PR1 Print Level 1 Command Level 1 Level 1 ob) = bj PRI prints the contents of level 1 in multi-line printer format. All objects except strings are printed with their identifying delimiters. Strings are printed without the leading and trailing “ delimiters. If level 1 is empty, the message CEmpty Stack] is printed. Printing a Text String You can print any sequence of characters by creating a string object that contains the characters, placing the string object in level 1, and executing PR1. The printer prints the characters and leaves the print head at the right end of the print line. Subsequent printing begins on the following line. Printing a Graphics String You can print graphics by printing a string object that begins with the escape character (character 27) and a character whose number 1 is from 1 through 166. Together, these characters instruct the printer to interpret the next n characters (n < 166) as graphics codes, with each character specifying one column of graphics. Refer to the printer man- ual for details about graphics codes. The printer prints the graphics and leaves the print head at the right end of the print line. Subsequent printing begins on the following line. When you turn on the printer, you must print text or execute CR before printing graphics. 218 3: Dictionary a ee a a «PRINT Accumulating Data in the Printer Buffer You can print any combination of text, graphics, and objects on a sin- gle print line by accumulating data in the printer. The printer stores the data in a part of its memory called a buffer. Normally, each print command completes data transmission by send- ing CR (carriage right) to the printer. When the printer receives CR, it prints the data in its buffer and leaves the print head at the right end of the print line. You can prevent the automatic transmission of CR by setting flag 33. Subsequent print commands send your data to the printer but don’t send CR. The data accumulates in the printer buffer and is printed only at your command. When flag 33 is set, observe the following tules: @ Send CR (character 4) or newline (character 10), or execute the command CR, when you want the printer to print the data that it has received. ™@ Don’t send more than 200 characters without causing the printer to print. Otherwise, the printer buffer fills up and subsequent charac- ters are lost. ™ Allow time for the printer to print a line before sending more data. The printer requires about 1.8 seconds per line. ® Clear flag 33 when you're done to restore the normal operation of the print commands. PRST Print Stack Command ... Level 1 3: Dictionary 219 «PRINT PRST prints all objects in the stack, starting with the object in the highest level. Objects are printed in multi-line printer format. PRVAR Print Variable Command | Level 1 ‘name PRVAR prints the object stored in the variable name. The object is printed in multi-line printer format. PRLCD Print LCD Command 1 PRLCD prints a pixel-by-pixel image of the current HP-28C display (excluding the annunciators). The width of the printed image of an object is narrower using PRLCD than using a print command such as PR1. The difference results from the spacing between characters. On the display there is a single blank column between characters, and PRLCD prints this spacing. Print commands such as PR1 print two blank columns between adjacent characters. 220 = 3: Dictionary gn Co0ectddgd ».PRINT TRACE Mode: TRACE, NORM You can print an on-going record of your calculations by selecting TRACE mode. Each time you execute ENTER, either by pressing ENTER] or by pressing an immediate-execute key, the calculator prints the contents of the command line, the immediate-execute command, and the resulting contents of level 1. To enable TRACE mode, press #4343. The TRACE menu label then appears as black letters in a white label, indicating that TRACE mode is enabled. You can enable TRACE mode within a program by setting flag 32 To disable TRACE mode, press §§g37#. The NORM menu label then appears as black letters in a white label, indicating that TRACE mode is disabled. You can disable TRACE mode within a program by clear- ing flag 32. The print format for the object in level 1 depends on whether multi- line display format is enabled or disabled (flag 45 is set or clear). If multi-line display mode is enabled (flag 45 is set), the object is printed in multi-line printer format. If compact display mode is active (flag 45 is clear), the object is printed in compact format. PRSTC PRUSR PRMD cR PRSTC Print Stack (Compact) Command ... Level 1 .-, Levelt =. Obj ® ... obj PRSTC prints all objects in the stack, starting with the object in the highest level. Objects are printed in compact format. 3: Dictionary 221 «PRINT PRUSR Print User Variables Command [ » PRUSR prints the names of the current user variables. The names are printed in the order they appear in the USER menu. If there are no user variables, PRUSR prints No User Variables. PRMD Print Modes Command PRMD displays and prints the current selections for number display mode, binary integer base, angle mode, radix mode, and whether UNDO, COMMAND, LAST, and multi-line display are enabled or disabled. CR Carriage Right Command : | CR prints the contents, if any, of the printer buffer. 222 = 3: Dictionary ee eae EE SL EL _ LE ESE IEEE NOT eee ee Programs A program is a procedure object delimited by « * characters contain- ing a series of commands, objects, and program structures, that are executed in sequence when the program is evaluated. Certain pro- gram structures, such as those described in “PROGRAM BRANCH” or those specifying local names, must satisfy specific syntax rules, but otherwise the contents of a program are much more flexible than that of algebraic objects, the other type of procedure. A program, in simplest terms, is a command line for which evaluation is deferred. Any command line can be made into a program by insert- ing a « at the beginning of the line; then when [ENTER] is pressed, the entire command line is put on the stack as a program. The individual objects in the program are not executed until the program is evaluated. By making a command line into a program, you can not only defer evaluation, you can also repeat execution as many times as desired. Any number of copies of the program can be made on the stack, us- ing ordinary stack manipulation commands; or you can store a program in a variable and then execute it by name—or by pressing the corresponding menu key in the USER menu. Once a program is stored in a named variable, it becomes essentially indistinguishable from a command. (Actually, the commands themselves are just pro- grams that are entered in ROM instead of RAM.) As you program the HP-28C, you are extending its programming language. 3: Dictionary 223 .._Programs Evaluating Program Objects Evaluating a program puts each object in the program on the stack and, if the object is a command or unquoted name, evaluates the ob- ject. For example, with the stack: 3.608 « DUP INV ® pressing [EVAL] yields: DUP was evaluated, copying 8.000 into level 2, then INV was evalu- ated, replacing the 8.000 in level 1 with its inverse. Simple and Complex Programs. The simplest kind of program is just a single sequence of objects, which are sequentially executed without halting or looping. For exam- ple, the program « 5 * 2 + » multiplies a number in level 1 by 5 and adds 2. 224 3: Dictionary PUCTTCUCVUCUTWY ..Programs If this were an operation you performed frequently, you could store the program in a variable, then execute the program as many times as you want by pressing the USER menu key assigned to the variable. You can add complexity to a program in one or more of the following ways: Conditionals. By using the IF...THEN...END or IF...THEN... ELSE...END branch structures (or the equivalent commands IFT and IFTE), programs can make decisions based upon computed results, then select execution options accordingly. Loops. You can cause repeated execution of a program or portion of a program, a definite or indefinite number of times, by using the pro- gram loops FOR...NEXT, START...NEXT, DO...UNTIL...END, and WHILE...REPEAT...END. Error Traps. By using the IFERR...THEN...END or IFERR... THEN...ELSE...END conditional, you can make a program deal with expected or unexpected errors. Halts. The HALT command allows you to suspend program execu- tion at predetermined points for user input or other purposes, then resume with §§(CONT] or @SEua. Programs Within Programs. Just as you can postpone evaluation of a command line by enclosing it with « », you can create program objects within other programs by enclosing a program sequence within « ». When the ‘inner’ program is encountered during execu- tion of the “outer” program, it is placed on the stack rather than evaluated. It can be subsequently evaluated with EVAL or any other command that takes a program as an argument. 3: Dictionary 225 As you add length and complexity to a program, it can grow beyond a size that is conveniently readable on the HP-28C display or too big to enter. For this reason, and to promote orderly programming practices, it is recommended that you break up long programs into multiple short programs. For example, the program « A B C D » can be re- written as * AB CO »*, where AB is the program « A B »%, and CD is the program « C D ». The process of writing a large program as a series of small programs makes it straightforward to “debug” the large program. Each second- ary program can be tested independently of the others, to insure that it takes the correct number and type of arguments from the stack, and returns the correct results to the stack. Then it is simple to link the secondary programs together by creating a main program consisting of the unquoted names of the secondary programs. Local Variables and Names A local variable is the combination of an object and a local name, which are stored together in a portion of memory temporarily re- served for use only during execution of a procedure. When a procedure completes execution, any local variables associated with that procedure are purged automatically. 226 3: Dictionary seers oe Se ee SS eS Se Ue hu OU Local names are objects used to name local variables. They are subject to the same naming restrictions as ordinary names. You can use local variables, within their defining procedures, almost interchangeably with ordinary names. However, there are several important differences: ™ When local names are evaluated, they return the object stored in the associated local variables, unevaluated. They do not automati- cally evaluate names or programs stored in their local variables, as ordinary names do. @ You cannot use a quoted local name as an argument for §§(ViSiT] or for any of the following commands: CON, IDN, PRVAR, PURGE, PUT, PUTI, RDM, SCONJ, SINV, SNEG, STO+, STO-, STO, STO/, TAYLR, or TRN. ® Local variables will not appear in the Solver variables menu. If you have an ordinary variable with the same name as a local vari- able, any use of the common name within the local variable proce- dure will refer only to the local variable, and leave the ordinary variable unchanged. Similarly, if a local variable structure is nested within another, the local names of the first (outer) structure can be used within the second (inner). It is possible for local names to remain on the stack or within proce- dures and lists even after their associated local variables has been purged. For example, 1 + x « 'x' (ENTER) leaves the local name 'x' on the stack. If you attempt to evaluate the local name, or use it as an argument for STO, RCL, or PURGE, the error Undefined Local Name will be reported. To minimize any confusion that might arise between names and local names, it is recommended that you adopt a special naming conven- tion for local names. One such convention used in this manual is to use lower-case letters to name local variables (which can never appear in menu key labels), and upper-case for ordinary variables. ictionary 227 Programs Creating Local Variables Local variables are created by using program structures. This section describes two local variable structures, which are the primary means of creating local variables. There are also two program branch structures, FOR...NEXT and FOR...STEP, which define definite loops in which the loop index is a local variable. These program branch structures are described in “PROGRAM BRANCH.” The local variable structures have the form: > name, name... program * + name, name...‘ algebraic ' The + command begins a local variable structure. (The + character is WL) on the left-hand keyboard. Here + is a command in itself, so it is followed by a space.) The names specify the local names for which local variables are created. The program or algebraic is called the de- fining procedure of the local variable structure. Its initial delimiter, « or ', terminates the sequence of local names. When ~ is evaluated, it takes one object from the stack for each of the local names, and stores each object in a local variable named by the corresponding name. The objects and local names are matched up so the order of the names is the same as the order in which the ob- jects were entered into the stack. For example: 123454 abcde assigns the number 1 to the local variable a, 2 to b, 3 to c, 4 to d, and 5 to e. (Since these are local variables, there is no conflict with the symbolic constant e.) 228 3: Dictionary ” — » - = 7 7" 7 7 = = = - 7» > a > 7 7 > = 7 7 7 . » , ’ , , , ; > Programs Once the local variables are created and their values assigned, the procedure that follows the name list is evaluated. Within that proce- dure, you can use the local variable names just like ordinary names (except for the restrictions listed above). When the procedure has fin- ished execution, the local variables are purged automatically. As an example, suppose you wish to take 3 numbers from the stack, and multiply the first (level 3) by 4, the second (level 2) by 3, and the third (level 1) by 2, and add the results. A simple program for this purpose would be: « 2 * SWAP 3 * + SWAP 4 #& + ». Using local variables, the program would become: ee abctadtb Ft + ck + % &, The use of local variables has eliminated the SWAP operations. In this simple case, the use of local variables is of marginal value, but as the complexity of a program grows, local variables can help you write the program in a simpler, less error-prone manner than if you try to man- age everything on the stack. Our example problem also lends itself to an algebraic form. We can write our program this way: € 3 abc '4#at3ktb+2¢c' & and obtain the same result. 3: Dictionary 229 Programs User-Defined Functions The + command in a special syntax can be used to create new alge- braic functions. An algebraic function is a command that can be used within algebraic object definitions. Within those definitions, the func- tions takes its arguments from a sequence contained within paren- theses following the function name. The command SIN, for example, is a typical algebraic function taking one argument. Within an alge- braic definition, it is used in the form 'SINCX>' where the X represents its argument. A user-defined function of n arguments is defined by a program with the following syntax: * > name, name, ... name, ‘expression’ » where name, name, ... name, is a series of n local variable names. expression is an algebraic expression, containing the local variable names, that represents the mathematical definition of the function. No objects can precede the + in the program, and none can follow ‘expression’ As an example, consider the algebraic form of the program defined in the preceding section: € > abc '4kat3kb+2kc' It takes three arguments, multiplies them by 4, 3, and 2, respectively, and sums the products. Because nothing precedes the + nor follows the algebraic, this program is a user-defined function. Suppose that we name the user-defined function XYZ by storing the program in variable XYZ: #4 abc '4katdkbt2kc' » 'KYZ' STO, 230 3: Dictionary ..Programs In RPN syntax, we can execute 1 2 3 XYZ to obtain the result 16 (4x 1+3 x 2+ 2 x 3). But we can also use algebraic syntax: 'SY¥Z¢1,2,3)' EVAL also returns the result 16. You are not re- stricted to numerical arguments; any of XYZ’s three arguments can be an algebraic. XYZ itself can appear in any other algebraic expression. 3: Dictionary 231 PROGRAM BRANCH IF IFERR THEN ELSE END START FOR NEXT STEP 1FT IFTE Do UNTIL END WHILE REPEAT END The PROGRAM BRANCH menu ({§/[BRANCH)) contains commands for making decisions and loops within a program. These commands can appear only in certain combinations called program structures. Program branch structures can be grouped into four types: decision, error trap, definite loops, and indefinite loops. In the following, a clause is any program sequence. 1. Decision structures. m IF test-clause THEN true-clause END. If test-clause is true, then execute ftrue-clause. (IFT is a single-command form of this structure.) ™ IF test-clause THEN true-clause ELSE else-clause END. If test- clause is true, execute true-clause; otherwise, execute else- clause. (IFTE is a single-command form of this structure.) 2. Error trapping structures. @ IFERR trap-clause THEN error-clause END. If an error occurs during execution of trap-clause, then execute error-clause. @ IFERR trap-clause THEN error-clause ELSE normal-clause END. If an error occurs during execution of frap-clause, then execute error-clause; otherwise, execute normal-clause. 232 3: Dictionary “rrr rrr rn seer Uc hm ..PROGRAM BRANCH 3. Definite loop structures. @ start finish START loop-clause NEXT. Execute loop-clause once for each value of a loop counter incremented by one from start through finish. start finish START loop-clause step STEP. Execute loop-clause once for each value of a loop counter incremented by step from start through finish. start finish FOR name loop-clause NEXT. Execute loop-clause once for each value of a local variable name, used as a loop counter, incremented by ones from start through finish. start finish FOR name loop-clause step STEP. Execute loop- clause once for each value of a local variable name, used as a loop counter, incremented by step from start through finish. Indefinite loop structures. ® DO loop-clause UNTIL test-clause END. Execute loop-clause re- peatedly until test-clause is true. @ WHILE test-clause REPEAT loop-clause END. While test-clause is true, execute loop-clause repeatedly. These structures are described later in this section, following two in- troductory topics. 3: Dictionary 233 «»PROGRAM BRANCH Tests and Flags All program structures (except definite loops) make a branching deci- sion based upon the evaluation of a fest clause. A test clause is any program sequence that returns a flag when evaluated. A flag is an ordinary real number that nominally has the value 0 or 1. If the flag has value 0, we say that it is “false” or “clear’; for any other value, we say that the flag is “true” or “set”. All program branch decisions are made by testing a flag taken from the stack. For example, in an IF test-clause THEN true-clause END structure, if evaluation of test-clause leaves a non-zero (real) result, true-clause will be evaluated. If test-clause leaves 0 in level 1, execu- tion will skip past END. A test command is one that explicitly returns a flag with a value 0 or 1. For example, the command < tests two real numbers (or binary integers, or strings) to see if the number in level 2 is less than the number in level 1. If so, < returns the flag 1; otherwise, it returns 0. The other test commands are >, <, >, ==, #, FS?, FC?, FS?C, and FC?C, all of which are described in “PROGRAM TEST.” Replacing GOTO Programmers accustomed to other calculator programming languages, such as the RPN language of other HP calculators, or BASIC, may note the absence of a simple GOTO instruction in the HP-28C lan- guage. GOTO’s are commonly used to branch depending on a test and to minimize program size by reusing program steps. We'll look at how GOTO’s are used in HP-41 RPN and BASIC, and show how to obtain equivalent results with the HP-28C. 234 = 3: Dictionary {th (th @h «hook th oth ok ook ae « § « ‘ ‘ PROGRAM BRANCH ™ Using GOTO instructions to branch depending on a test. For exam- ple, the programs below execute the sequence ABC DEF if the number in the X register or variable is positive, or execute the se- quence GHI JKL otherwise. BASIC 01 X>0? 10 IF X>0 THEN GOTO 50 02 GTO 01 20 GHI 03 GHI 30 JKL 04 JKL 40 GOTO 70 05 GTO 02 50 ABC 06 LBL 01 60 DEF 07 ABC i 08 DEF 09 LBL 02 Here is an HP-28C equivalent: IF @ > THEN ABC DEF ELSE GHI JKL END ®@ Using a GOTO instruction to minimize program size by reusing program steps. Both programs below contain a sequence MNO PQR STU that is common to two branches of the program. HP-41 RPN 01 ABC 10 ABC 02 DEF 20 DEF 03 GTO 01 30 GOTO 200 10 GHI 100 GHI 11 JKL 110 JKL 12 GTO 01 120 GOTO 200 20 LBL 01 200 MNO 21 MNO 210 PQR 22 PQR 220 STU 23 STU i 3: Dictionary 235 »._PROGRAM BRANCH In the HP-28C, the common sequence MNO PQR STU...would be stored as a separate program: « MNO PQR STU ... » 'COMMON' STO Then each branch of the program would execute COMMON: - ABC DEF COMMON ... GHI JKL COMMON The advantage of HP-28C programming is that any program has only one entrance and one exit. This makes it simple to write programs and test them independently. When you combine the programs into a main program, you need to test only that the programs work together as you intended. IF IFERR THEN ELSE END These commands can be combined in a variety of decision structures and error trapping structures. IF test-clause THEN true-clause END. The command THEN takes a flag from the stack. If the flag is true (non-zero), the true-clause is evaluated, after which execution continues after END. If the number is false (0), execution skips past END and continues. (Note that only THEN actually uses the flag—the position of the IF is arbitrary as long as it precedes THEN. test-clause IF THEN will work the same as IF test-clause THEN). For example: IF & @ > THEN "Positive" END returns the string "Positive" if X contains a positive real number. 236 = 3: Dictionary gaaheoeannhnhoaeaoiaea£uentk bh fb ih th ‘> th (th UUTCTtY es GF @ ..PROGRAM BRANCH IF test-clause THEN true-clause ELSE false-clause END. The command THEN takes a flag from the stack. If the flag is true (non- zero), the true-clause is evaluated, after which execution continues after END. If the flag is false (0), the false-clause is evaluated, after which execution continues after END. (Note that only THEN actually uses the flag—the position of the IF is arbitrary as long as it precedes THEN. test-clause IF THEN will work the same as IF test-clause THEN). For example: IF X% @ &3 THEN "Positive" ELSE "Negative" END returns the string "Positive" if X contains a non-negative real number, or "Negative" if X contains a negative real number. IFERR trap-clause THEN error-clause END. This structure evalu- ates error-clause if an error occurs during execution of trap-clause. When trap-clause is evaluated, successive elements of the clause are executed normally unless an error occurs. In that case, execution jumps to error-clause. The remainder of trap-clause is discarded. For example: IFERR WHILE 1 REPEAT + END THEN "OK" 1 DISP END sums all numbers on the stack. The + function is executed repeatedly until an error occurs, indicating that the stack is empty (or a mis- matched object type has been encountered). The error-clause then displays OK. When you write error clauses, keep in mind that the state of the stack after an error may depend on whether LAST is enabled. If LAST is enabled, commands that error will return their arguments to the stack; otherwise the arguments are dropped. 3: Dictionary 237 «»-PROGRAM BRANCH IFERR trap-clause THEN error-clause ELSE normal-clause END. This structure enables you to specify an error-clause to be eval- uated if an error occurs during execution of a trap-clause, and also a normal-clause for execution if no error occurs. When frap-clause is evaluated, successive elements of the clause are executed normally unless an error occurs. @ If an error occurs, the remainder of the trap-clause is discarded and the error-clause is evaluated. ™ If no error occurs, evaluation of the trap-clause is followed by eval- uation of the normal-clause. In either case execution continues past END. START FOR NEXT STEP IFT IFTE Start finish START loop-clause NEXT. The START command takes two real numbers, start and finish, from the stack and stores them as the starting and ending values for a loop counter. Then a sequence of objects loop-clause is evaluated. The NEXT command increments the loop counter by 1; if the loop counter is less than or equal to finish, loop-clause is evaluated again. This continues until the loop counter exceeds finish, whereupon execution continues following NEXT. For example: 1 18 START KYZ NEXT evaluates XYZ 10 times. Start finish START loop-clause increment STEP. This structure is similar to START...NEXT, except that STEP increments the loop counter by a variable amount, whereas NEXT always increments by 1. 238 3: Dictionary a ne a nL LL LL :PROGRAM BRANCH START takes two real numbers, start and finish, from the stack and stores them as the starting and ending values for a loop counter. Then a sequence of objects loop-clause is evaluated. STEP increments the loop counter by the real number increment taken from level 1. If step is positive and the loop counter is less than or equal to finish, loop-clause is evaluated again. This continues until the loop counter exceeds finish, whereupon execution continues following STEP. If step is negative and the loop counter is greater than or equal to finish, loop-clause is evaluated again. This continues until the loop counter is less than finish, whereupon execution continues following STEP. For example: 16 1 START KYZ -2 STEP evaluates XYZ five times. start finish FOR name loop-clause NEXT. This structure is a defi- nite loop in which the loop counter name is a local variable that can be evaluated within the loop. (The name following FOR should be entered without quotes.) In sequence: 41. FOR takes two real numbers start and finish from the stack. It creates a local variable name, and stores start as the initial value of name. 2. The sequence of objects loop-clause is evaluated. If name is eval- uated within the sequence, it returns the current value of the loop counter. 3. NEXT increments the loop counter by 1. If its value then exceeds finish, execution continues with the object following NEXT, and the local variable name is purged. Otherwise, steps 2 and 3 are repeated. 3: Dictionary 239 -PROGRAM BRANCH For example: 15 FOR x x SQ NEXT places the squares of the integers 1 through 5 on the stack. start finish FOR name loop-clause increment STEP. This structure is a definite loop in which the loop counter name is a local variable that can be evaluated within the loop. (The name following FOR should be entered without quotes.) It is similar to FOR...NEXT, except that the loop counter is incremented by a variable amount. In sequence: 1. 2. FOR takes two real numbers start and finish from the stack. It creates a local variable name, and stores start as the initial value of name. The sequence of objects loop-clause is evaluated. If name is eval- uated within the sequence, it returns the current value of the loop counter. STEP takes the real number increment from the stack and incre- ments the loop counter by increment. If the loop counter then is greater than finish (for increment > 0) or less than finish (for in- crement < 0), execution continues with the object following STEP, and the local variable name is purged. Otherwise, steps 2 and 3 are repeated. For example: 1 11 FOR x x SQ 2 STEP places the squares of the integers 1, 3, 5, 7, 9, and 11 on the stack. 240 3: Dictionary _ rere rere eee eeweeeeuvuu Ue YU ..PROGRAM BRANCH IFT if-Then Command Level 2 Level 4 flag obj IFT is a single-command form of IF...THEN...END. IFT takes a flag from level 2, and an arbitrary object from level 1. If the flag is true (non-zero), the object is evaluated; if the flag is false (0), the object is discarded. For example: x @ > "Positive" IFT leaves "Positive" in level 1 if X contains a positive real number. IFTE If-Then-Else Function Level3 Level 2 Level 1 | flag true-obj false-obj | IFTE is a single-command form of IF...THEN...ELSE...END. IFTE takes a flag from level 3, and two arbitrary objects from levels 1 and 2. If the flag is true (non-zero), false-object is discarded, and true-ob- ject is evaluated. If the flag is false (0), true-object is discarded and false-object is evaluated. For example: X @ 2 "Positive" "Negative" IFTE leaves "Positive" on the stack if X contains a non-negative real number, or "Negative" if X contains a negative real number. IFTE is also acceptable in algebraic expressions, with the following syntax: ' LF TE Ctest-expression , true-expression , false-expression > ' 3: Dictionary 241 PROGRAM BRANCH When an algebraic containing IFTE is evaluated, its first argument test-expression is evaluated as a flag. If it returns a non-zero real num- ber, true-expression is evaluated. If it returns zero, false-expression is evaluated. For example: “TFTECK#@,SINCXIK, 13" is an expression that returns the value of sin(x)/x, even for x = 0, which would normally cause an Infinite Result error. DO UNTIL END WHILE REPEAT END DO loop-clause UNTIL test-clause END. This structure repeatedly evaluates a loop-clause and a test-clause, until the flag returned by test-clause is true (non-zero). For example: OO X INCK X ~ UNTIL .@@@1 < END. Here INCX is a sample program that increments the variable X by a small amount. This routine will execute INCX repeatedly, until the resulting change in X is less than .0001. WHILE test-clause REPEAT loop-clause END. This structure repeat- edly evaluates a test-clause and a loop-clause, as long as the flag returned by fest-clause is true (non-zero). When the test-clause returns a false flag, the loop-clause is skipped, and execution resumes follow- ing END. The fest-clause returns a real number, which REPEAT tests as a flag. For example: WHILE STRING "P" POS REPEAT REMOVEP END. Here REMOVEP is a sample program that removes a character F from a string stored in the variable STRING. The sequence repeats until no more P’s remain in the string. 242 = 3: Dictionary ec PROGRAM CONTROL SST HALT ABORT KILL WAIT KEY BEEP CLLCD DISP CLMF ERRN ERRM The PROGRAM CONTROL menu ({§(CTAL)) contains commands for interrupting program execution and for interactions during program execution. Suspended Programs Evaluating a program normally executes the objects contained in the program’s definition continuously up to the end of the program. The commands in the PROGRAM CONTROL menu allow programs to pause or halt execution at points other than the end of the program: Command Description HALT Suspends program execution, for continuation later. ABORT Stops program execution, which then cannot be resumed. KILL Stops program execution, and also clears all other suspended programs. WAIT Pauses program execution, which resumes automatically af- ter a specified time. A suspended program is a program that is halted during execution, in such a way that the program can be continued (execution resumed) at the point which it stopped. While a program is suspended, you can perform any HP-28C operation (except system halt, memory reset, and the KILL command)—enter data, view results, execute other pro- grams, and so on—then continue the program. 3: Dictionary 243 »»-PROGRAM CONTROL The O annunciator indicates that one or more programs are suspended. The command HALT causes a program to suspend at the location of the HALT in the program. To resume program execution you can: @ Press §§(CONT) (continue) to resume continuous execution at the next object in the program after the HALT. You can use HALT in conjunction with [§J[CONT) in a program when you want to stop the program for user input, then continue. @ Press (single-step—in the PROGRAM CONTROL menu) to execute the next object in the program after the HALT. Repeated use of continues program execution, one step at a time. This is a powerful program debugging tool, since you can view the stack or any other calculator state after each step in a program. If you do not choose either of these options, the program will remain suspended indefinitely, unless you execute KILL or a system halt, which clear all suspended programs. You can “nest” suspended programs—that is, you can execute a pro- gram that contains a HALT while another program is already suspended. If you continue ({§[CONT)) the second program, execution will halt again when it has finished. Then you can press (CONT again to resume execution of the first program. While a program is suspended, the stack save and recovery associated with UNDO are “local” to the program. Refer to “MODE” for informa- tion on the use of UNDO with suspended programs. 244 3: Dictionary Mamenanaanananmiadagaoaiiatqaoeaeoaioeoaqagea@qmadgaohonaaezaiueatds hhh hah nah omnha — o arTlce ler rT CT Ce Ce Cer ae Caer eh Umer eh COCO Oe Cervera Cae OOO OU Ue) OP »1PROGRAM CONTROL SST HALT ABORT KILL WAIT KEY Single Step SST executes the “next step” in a suspended program. “Next step,” in this context, means the object or command that follows, in the order of program execution, the most recently evaluated object or command. When you press §Q%MH, the program step about to be executed is dis- played briefly, in inverse video, then it is executed. After each step, the stack and menu key labels are displayed in the normal fashion. Between steps, you can perform calculator operations without affect- ing the suspended program. Of course, if you alter the stack, you should insure that it contains the appropriate objects before resuming program execution. For any of the program loops defined with FOR...NEXT, START...NEXT, DO...UNTIL...END, or WHILE...REPEAT...END, the initial command (FOR, START, DO, or WHILE) is displayed only as a step the first time through the loop. On successive iterations, each loop will start with the first object or command after the initial loop command. If an error occurs when you single-step an object, the single-step does not advance. This allows you to correct the source of the error, then repeat the single-step. Pressing when an IFERR is the next step executes the entire IFERR...THEN...END or IFERR...THEN ...ELSE...END structure as one step. To step through a clause of the structure, include HALT in- side the clause. 3: Dictionary 245 »»PROGRAM CONTROL Similarly, pressing when + is displayed executes the entire + name, name, ... name, structure as one step. If the local names are followed by an algebraic, the algebraic is immediately evaluated in that same step. HALT Halt Program Command . HALT causes a program to suspend execution at the location of the HALT command in the program. HALT: 1. Turns on the O annunciator. 2. Assigns memory for a temporary saved stack, if UNDO is enabled. 3. Returns calculator control to the keyboard, for normal operations. Programs resumed with §§J[CONT) or will continue with the ob- ject next in the program after the HALT command. ABORT Abort Program Command » ABORT stops execution of a program, at the location of the ABORT command in the program's definition. Execution of the program can- not be resumed. 246 = 3: Dictionary hh & & & hh a mh _ er rire rere eee eee ee eeu ag @ ..PROGRAM CONTROL KILL Kill Suspended Programs Command [ ° KILL aborts the current program, and also all other currently sus- pended programs. None of the programs can be resumed. WAIT Wait Command WAIT pauses program execution for x seconds. KEY Key Command Level 2 Level 1 » 0 » "string" 1 KEY returns a string representing the oldest key currently held in the key buffer, and removes that key from the key buffer. If the key buffer is empty, KEY returns a false flag (0). If the key buffer cur- rently holds one or more keys, KEY removes the oldest key from the buffer, and returns a true flag (1) in level 1 plus a string in level 2. The string “names” the key removed from the buffer. The HP-28C key buffer can hold up to 15 keys that have been pressed but not yet processed. When KEY removes a key from the buffer it is converted to a readable string. The string contains the character(s) on the key top, except for: 3: Dictionary 247 ««PROGRAM CONTROL oye "INS" "DEL" “up* "DOWN" "LEFT" "RIGHT" "CURSOR" "BACK" The (ON) key retains its role as the rent program. ATTN] key and interrupts the cur- The action of KEY can be illustrated by the following program: « DO UNTIL KEY END "Y" SAME », When this program is executed, pressing [Y] returns 1 (true) to level 1, and pressing any other key returns 0 (false). 248 =3: Dictionary peeMWodd@dg »«»-PROGRAM CONTROL BEEP CLLCD DISP CLMF ERRN' ERRM BEEP Beep Command frequency duration BEEP causes a tone to sound at the specified frequency and duration. Frequency is expressed in Hertz (rounded to an integer). Duration is expressed in seconds. The frequency of the tone is subject to the resolution of the built-in tone generator. The maximum frequency is approximately 4400 Hz; the maximum duration is 1048.575 seconds (# FFFFF msec). Argu- ments greater than these maximum values will default to the maxima. Setting flag 51 disables the beeper, so that executing BEEP will pro- duce no sound. CLLCD Clear LCD Command » CLLCD clears (blanks) the LCD display (except the annunciators), and sets the system message flag to suppress the normal stack and menu display. 3: Dictionary 249 .»»PROGRAM CONTROL DISP Display Command Level 2 Level 1 obj n . DISP displays obj in the nth line of the display, where n is a real integer. n = 1 indicates the top line of the display; n = 4 is the bot- tom line. DISP sets the system message flag to suppress the normal stack display. An object is displayed by DISP in the same form as would be used if the object were in level 1 in the multi-line display format, except for strings, which are displayed without the surrounding " delimiters to facilitate the display of messages. If the object display requires more than one display line, the display starts in line n, and continues down the display either to the end of the object or the bottom of the display. CLMF Clear Message Flag Command a CLMF clears the internal message flag set by CLLCD, DISP, PIXEL, DRAX, DRAW, and DRWY. Including CLMF in a program, after the last occurrence of any of these words, causes the normal stack display to be restored when the program completes execution. 250 3: Dictionary reed € «.«PROGRAM CONTROL ERRN Error Number Command Level 1 » #n ERRN returns a binary integer equal to the error number of the most recent calculator error. A table of HP-28C errors, error messages, and error numbers is given in Appendix A. ERRM Error Message Command Level 1 > " error-message" ERRM returns a string containing the error message of the most recent calculator error. A table of HP-28C errors, error messages, and error numbers is given in Appendix A. 3: Dictionary 251 PROGRAM TEST SF CF FS? FC? Fs?c¢ FCo?c AND OR XOR NOT SAME == STOF RCLF TYPE The PROGRAM TEST menu (§[TEST}) contains commands for changing and testing flags and for logical calculations. Test commands return a flag as the result of a comparison between two arguments, or of a user-flag test. The comparison operators #, <, >, <, and > are present on the left-hand keyboard as characters. The remaining test commands FS?, FC?, FS?C, FC?C, SAME, and = = are present in the TEST menu. In addition, the TEST menu contains the logical operations AND, OR, XOR, and NOT, that allow you to combine flag values. Note that the = function is not a comparison operator; it defines an equation. Both == and SAME test the equal- ity of objects. Keyboard Functions # Not Equal Function Level 2 Level 1 Level 1 obj; objy ® flag Zz "symb' ® ‘z#symb' ‘ symb* z » ‘ symb#z* ‘symb,* — ‘symby'® * symb #symby* 252 3: Dictionary »sPROGRAM TEST # takes two objects from levels 1 and 2, and: @ If either object is not an algebraic or a name, returns a false flag (0) if the two objects are the same type and have the same value, or a true flag (1) otherwise. Lists and programs are considered to have the same values if the objects they contain are identical. @ If one object is an algebraic or a name, and the other is a number, a name, or an algebraic, # returns a symbolic comparison expression of the form 'symb,#symb,', where symb, represents the object from level 2, and symb, represents the object from level 1. The re- sult expression can be evaluated with EVAL or +NUM to return a = flag. ” = _ < Less Than Function _ _ Level 2 —_ Level 4 Level 4 _ — » fla = x y 9 # ny en © flag » "string," "strings" flag - x “symb' "yx ésymb! - symb' x » " symb Greater Than Function = " x y » flag » # on, Hn * flag 2 "string," "stringo" » flag > x "symb' ow "x>symb! > " symb x * symb> x" > "symb,;' —'symby'» " symb,> symbz' 7” J 3: Dictionary 253 »»-PROGRAM TEST < Less Than or Equal Function Level 2 Level 1 x y . flag # on, #ongp ® flag "string," "strings" » flag x “symb' » "xgsymb' * symb! x » ‘ symbéx' ‘symb,' —'symby'® symb,Zsymbo* = Greater Than or Equal Function # ony # No flag "stringy" "stringy" flag x * symb* *xSsymb" * symb* x * symb3x* ‘symb,' "symp" * symb,=symbp" 1 2 The following description refers to the four stack disagrams above. Each of the four commands <, >, <, and > takes two objects from the stack, applies the logical comparison corresponding to the com- mand name, and returns a flag according to the results of the comparison. The logical order of the comparisons is level 2 test level 1, where test represents any of the four comparisons. For example, if level 2 contains a real number x, and level 1 contains a real number y, then < returns a true flag (1) if x is less than y, and a false flag (0) otherwise. yeec@w@eocueueuds Un eeorgeeeragog © «»-PROGRAM TEST <, >, <, and >, because they imply an ordering, apply to fewer object types than #, ==, or SAME: ™ For real numbers and binary integers, “less than” means numeri- cally smaller (1 is less than 2). For real numbers, “less than” also means “more negative” (—2 is less than —1). ™ For strings, “less than” means alphabetically previous (“ABC’ is less than “DEF”; “AAA” is less than “AAB’; “A” is less than “AA’). In general, characters are ordered according to their character codes. Note that this means that “B” is less than “a”, since “B” is character code 66, and “a” is character code 97. SF CF FS? FC? FS?C = FC?C This group of commands sets, clears, and tests the 64 user flags. In this context, “to set” means “to make true” or “to assign value 1”, and “to clear” means “to make false” or “to assign value 0”. SF Set Flag Command Level 1 n . SF sets the user flag specified by the real integer argument n, where l' If you enter the commands in this form, be sure to separate the com- mands from other commands or objects with spaces. You can also enter these commands into the command line in prefix form: "ANDCX,Y2' 'ANDCKORCX, 25,7)" 3: Dictionary 257 «PROGRAM TEST AND And Function Level 2 Level 1 Level 1 x y . flag x ‘symb' "x AND symb" " symb* x . “symb AND x! "symb," ‘symbz' ® 'symb, AND symb,' AND returns a flag that is the logical AND of two flags: First Argument x | Second Argument y | AND Result true true true true false false false true false false false false | If either or both of the arguments are algebraics, the result is an alge- braic of the form 'symb, AND symb*, where symb, and symb represent the arguments. OR Or Function Level 2 Level 1 Level 1 x y ° flag x ‘symb' "x OR symb! *symb' x . "symb OR x! "symb,' —‘symby' ~~ symb, OR symby* 258 3: Dictionary Odd ddd dd dd dd Jd ddd ddddddddddddddd ».PROGRAM TEST OR returns a flag that is the logical OR of two flags: First Argument x Second Argument y OR Result true true true false false true false false true true true false If either or both of the arguments are algebraics, the result is an alge- braic of the form 'symb, OR symb,', where symb, and symby represent the arguments. XOR Exclusive Or Function Level 2 Level 1 Level 4 x y * flag x ‘symb'! » ‘x XOR symb! * symb* x . "symb XOR x" ‘symby' —'symby' =‘ symby KOR symbp' XOR returns a flag that is the logical exclusive OR (XOR) of two flags: jument x | Second Argum true true false true false true false true true false false false 3: Dictionary 259 «.PROGRAM TEST If either or both of the arguments are algebraics, the result is an alge- braic of the form ‘symb, XOR symb,', where symb, and symb represent the arguments. NOT Not Function Level 1 Level 1 x » flag ‘symb' ‘NOT symb! NOT returns a flag that is the logical inverse of a flag: Argument x | NOT Result true false false true If the argument is an algebraic, the result is an algebraic of the form "NOT symb', where symb represents the argument. SAME Same Command Level 2 Level 1 Level 1 obj, Objp » flag SAME takes two objects of the same type from levels 1 and 2, and returns a true flag (1) if the two objects are identical, or a false flag (0) otherwise. 260 3: Dictionary oe we we —_ = we oe — oe we — oe CT wo w T@w@@edetdcacduedcada ».PROGRAM TEST SAME is identical in effect to ==, for all object types except algebraics and names. == returns a symbolic (algebraic) flag for these object types. SAME returns a (real number) flag for all object types, and is not al- lowed in algebraic expressions. Equal Function Level 1 Obj flag "symb' “z==symb' z * symb==z' ‘ symb2" ‘ symb,==symby' == takes two objects from levels 1 and 2, and: @ If either object is not an algebraic (or a name), == returns a true flag (1) if the two objects are the same type and have the same value, or a false flag (0) otherwise. Lists and programs are consid- ered to have the same values if the objects they contain are identical. @ If one object is an algebraic (or a name), and the other is a number or an algebraic, = = returns a symbolic comparison expression of the form 'symb,==symb,', where symb, represents the object from level 2, and symb, represents the object from level 1. The result expression can be evaluated with EVAL or +NUM to return a flag. The function name == is used for the equality comparison, rather than =, to distinguish between a logical comparison (==) and an equation (=). 3: Dictionary 261 ».PROGRAM TEST STOF RCLF TYPE STOF Store Flags Command Level 1 #on . STOF sets the states of the 64 user flags to match the bits in a binary integer #1. A bit with value 1 sets the corresponding flag; a bit with value 0 clears the corresponding flag. The first (least significant) bit of #n corresponds to flag 1; the 64th (most significant) corresponds to flag 64. If # n contains fewer than 64 bits, the unspecified most significant bits are taken to have value 0. RCLF Recall Flags Command Level 1 . #on RCLF returns a 64-bit binary integer # n representing the states of the 64 user flags. Flag 1 corresponds to the first (least significant) bit of the integer; flag 64 is represented by the 64th (most significant) bit. You can save the states of all user flags, using RCLF, and later restore those states, using STOF. Remember that the current wordsize must be 64 bits (the default wordsize) to save and restore all flags. If the current wordsize is 32, for example, RCLF returns a 32-bit binary inte- ger; executing STOF with a 32-bit binary integer restores only flags 1 through 32 and clears flags 33 through 64. 262 3: Dictionary THC CCCCOCOCMCOPddddddddddddddddddY »-PROGRAM TEST Following a memory reset, RCLF will return the value # 4001FFC40000000 (hexadecimal), corresponding to the default settings of the 64 flags. TYPE Type Command | Level 4 Level 1 . | obj a | The command TYPE returns a real integer representing the type of an object in level 1. The object types and their type numbers are as follows: Object Types and TYPE Numbers Real number Compiex number String Real (vector or matrix) Complex (vector or matrix) List Name Local name Program Algebraic Binary integer 3: Dictionary 263 REAL NEG FACT RAND RDZ MAXR MINR ABS SIGN MANT XPON Ip FP FLOOR CEIL RND MAX MIN MOD %T An HP-28C real number object is a floating-point decimal number consisting of a 12-digit mantissa, and a 3-digit exponent in the range —499 to +499. Real numbers are entered and displayed as a string of numeric characters, with no delimiters and no intervening spaces. Numeric characters include the digits 0 through 9, +, —, a radix (“.” or “,” according to the current radix mode), and the letter E to indicate the start of the exponent field. The general real number format is (sign) mantissa E (sign) exponent When you enter a real number, the format is as follows: = The mantissa sign can be a +, a —, or omitted (implying +). @ The mantissa can be any number of digits, with one radix mark anywhere in the sequence. If you enter more than 12 digits, the mantissa is rounded to 12 digits. (Half-way cases are rounded up in magnitude.) Leading zeros are ignored if they are followed by non- zero mantissa digits. @ An exponent is optional; if you include an exponent, it must be separated from the mantissa by an “E”. ™ The exponent sign can be a +, a —, or omitted (implying +). ™ The exponent must contain three or fewer digits, and fall in the range 0 to 499. Leading zeros before the exponent are ignored. Real numbers are displayed according to the current real number dis- play mode. In general, the display may not show all of the significant digits of a number, but the full 12-digit precision of a number is al- ways preserved in the stored version of the number. 264 3: Dictionary ood iI II OVC Utd ddddddddddddd ddd ddddd wiREAL The REAL menu contains functions that operate upon real number (and real-valued algebraic) arguments, or enter special real numbers into the stack. In addition to the menu functions, % and %CH are provided on the keyboard. Keyboard Functions % Percent Function Level 2 Level 1 . xy/100 x ‘symb' ® '%Cx, symb> ' “symb' x » "x Csymb,x>' "symb,' "symbo' ™ '%Csymb,,symb2>' % takes two real-valued arguments x and y, and returns x percent of y—that is, xy/100. %CH Percent Change Function Level 2 Level 1 Level 4 x y > 100(y —x)/x x ‘symb' = '%CHCx, symb>' " symb" x ® © 'XCHésymb, x>* ‘symb,' —‘symby' ® '%CHCsymb, , symby)* °%CH computes the (percent) increase over the real-valued argument x in level 2 that is represented by the argument y in level 1. That is, %CH returns 100(y — x)/x. 3: Dictionary 265 »/REAL T T Function Level 1 » 3.14159265359 » ‘nt m returns the symbolic constant 'm' or the numerical value 3.14159265359, the closest machine-representable approximation to x. For information on symbolic constants, see page 70. e e Function Level 1 » 2.71828182846 e e returns the symbolic constant 'e' or the numerical value 2.71828182846, the closest machine-representable approximation to e, the base of natural logarithms. For information on symbolic constants, see page 70. NEG FACT RAND RDZ MAXR- MINR NEG Negate Analytic Level 1 Level 1 Zz ° —Zz ‘symb' » '=symb' NEG returns the negative of its argument. When no command line is present, pressing executes NEG. A complete stack diagram for NEG appears in “Arithmetic.” 266 3: Dictionary UCPC @CCUCtCddedededdddddddddddddddddddJd wiREAL FACT Factorial (Gamma) Function Level 1 Level 1 n » at x » Txt) ‘symb' ‘FACT &symb>! FACT returns the factorial n! of a positive integer argument n. For non-integer arguments x, FACT(x) = I(x + 1), defined for x > —1 as Te+1 = £ ett dt and defined for other values of x by analytic continuation. For x = 253.1190554375 or x a negative integer, FACT causes an Over flow exception; for x < —254.1082426465, FACT causes an Under f low exception. RAND Random Number Command Level 1 ° x RAND returns the next real number in a pseudo-random number se- quence, and updates the random number seed. The HP-28C uses a linear congruous method and a seed value to gen- erate a random number x, which always lies in the range 0 < x < 1. Each succeeding execution of RAND returns a value computed from a seed based upon the previous RAND value. You can change the seed by using RDZ. 3: Dictionary 267 otREAL RDZ Randomize Command | Level 1 | x ° RDZ takes a real number as a seed for the RAND command. If the argument is 0, a random value based upon the system clock will be used as the seed. After memory reset, the seed value is 529199358633. MAXR Maximum Real Function Level 1 » — 9.99999999999E499 . “MAXR _| MAXR returns the symbolic constant 'MAXR' or the numerical value 9.99999999999E499, the largest machine-representable number. For information on symbolic constants, see page 70. MINR Minimum Real Function | Level 1 ® — 1.00000000000E-499 » "MINR' MINR returns the symbolic constant 'MINR' or the numerical value 1E—499, the smallest positive machine-representable number. For in- formation on symbolic constants, see page 70. 268 3: Dictionary TuCcuoucCcdd = = = = = = = = = = = = = 7 . 7 o 7 . a otREAL ABS SIGN MANT XPON ABS Absolute Value Function Level 1 Level 1 z ° Izl Caray] » llarray|| ‘symb' » "ABS symb>' ABS returns the absolute value of its argument. See “ARRAY” and “COMPLEX” for the use of ABS with other object types. ABS can be differentiated but not inverted (solved) by the HP-28C. SIGN Sign Function | Level 1 Level 4 | » 4 22 "symb' @ 'SIGN¢symb>* SIGN returns the sign of its argument, defined as +1 for positive real arguments, —1 for negative real arguments, and 0 for argument 0. See “COMPLEX” for complex arguments. 3: Dictionary 269 MANT Mantissa Function Lev x » Level 1 y "symb' ® "MANT Csymb> ' MANT returns the mantissa of its argument. For example, 1.2E34 MANT returns XPON Exponent 1.2. Function Level 1 Level 1 x ° ‘symb' ® — *XPONCsymb) ' n XPON returns the exponent of its argument. For example, 1.2E34 XPON returns 34. ip FP FLOOR’ CEIL IP Integer Part Function Level 1 Level 1 x » ‘symb' » “IP ¢symb>* a IP returns the integer part of its argument. The result has the same sign as the argument. 270 = 3: Dictionary a@ @ =) wtREAL FP Fractional Part Function Level 1 Level 1 x » y ‘symb* » “FP Csymb>! FP returns the fractional part of its argument. The result has the same sign as the argument. FLOOR Floor Function Level 1 Level 1 x » a ‘symb' “FLOOR ¢symb>" FLOOR returns the greatest integer less than or equal to its argument. If the argument is an integer, that value is returned. CEIL Ceiling Function CEIL returns the smallest integer greater than or equal to its argu- ment. If the argument is an integer, that value is returned. 3: Dictionary 271 + REAL RND Round Function | Level 1 Level 1 x * y ‘symb' = *RNDésymb)* RND rounds its argument so that the full-precision internal represen- tation of the number is rounded to match the displayed representa- tion, according to the current display mode: ™ In SCI or ENG mode, the internal representation of the result is identical to the displayed number. ™ In FIX mode, the internal representation of the result is identical to its displayed value, unless the display has underflowed or over- flowed to SCI notation. Thus in n FIX mode, the result is 0 if the argument is less than 10~”. No rounding is performed if the argu- ment is greater than or equal to 10!!. | In STD mode, no rounding is performed. Numbers greater than or equal to 9.5E499 are not rounded. MAX MIN MOD wT MAX Maximum Function Level 2 Level 4 Level 4 x y » max(x,y) x ‘symb' @ — 'MAX&x, symb)* " symb' x » MAX * MAX returns the greater (more positive) of its two arguments. 272 = 3: Dictionary To@M@dddeddddeddddddddddd 'eacudaea waeue@a «REAL MIN Minimum Function Level 2 Level 1 x y » min(xy) x ‘symb' @ — 'MINGx,symb>* *symb' x ® 'MIN¢symb, x?! ‘symby' ® 'MINCsymby, symby> ' MIN returns the lesser (more negative) of its two arguments. MOD Modulo Function Level 2 Level 1 Level 1 x y » x mod y x “symb' ® "MOD¢x,symb>' “symb' x » "MOD ¢symb,x>' ‘symb,' —‘symby' » ‘MODCsymb,, symby) * MOD applied to real-valued arguments x and y returns a remainder defined by x mod y = x — y floor (x/y) Mod (x, y) is periodic in x with period y. Mod (x, y) lies in the interval [0, y) for y > 0 and in (y, 0] for y < 0. 3: Dictionary 273 +REAL %T Percent of Total Function Level2 Level 4 Level 1 x y . 100y/x x "symb' eT Cx, symb)* * symb* x XT Csymb, x) "symb;' —‘symby' *%T program® ‘name’ {guesses} » root "symb*‘ ‘name* guess » root ‘symb* ‘name * {guesses} root ROOT takes a procedure, a name, and either a single guess (a real number or a complex number) or a list of one, two, or three guesses, and returns a real number root. Root is a value of the variable name that is returned by the HP-28C numerical root-finder. Where the mathematical behavior of the procedure is appropriate, root is a math- ematical root—a value of the variable for which the procedure has a numerical value zero. Refer to “Interpreting Results” for more in- formation on interpreting the results of the root-finder. The single guess, or the list of guesses, are guesses of the value of the root that you must supply to indicate to the root-finder the region in which the search for a root is to begin. “Choosing Initial Guesses” explains how to choose initial guesses. If you interrupt ROOT by pressing the key, the procedure is re- turned to level 3, the name to level 2, and a list containing three intermediate values of the unknown variable to level 1. The current best value for the root is stored in the unknown variable. The list is suitable for use as a first guess if you wish to restart the root-finder. 284 3: Dictionary «SOLVE Symbolic Solutions ISOL Isolate Command Level 2 Level 1 ‘symb;' ‘name’ symbp' ISOL returns an expression symb, that represents the rearrangement of its argument algebraic symb, to “isolate” the first occurrence of vari- able name. If the variable occurs only once in the definition of symb,, then symb, is a symbolic root (solution) of symb,. If name appears more than once, then symby is effectively the right side of an equation obtained by rearranging and solving symb, to isolate the first occur- rence of name on the left side of the equation. (If symb, is an expression, consider it as the left side of an equation symb, = 0.) If name appears in the argument of a function within symb,, that function must be an analytic function—the HP-28C must be able to compute the inverse of the function. Thus ISOL cannot solve IP(X) = 0 for X, since IP has no inverse. Commands for which the HP-28C can compute an algebraic inverse are identified as analytic functions in this manual. 3: Dictionary 285 «SOLVE QUAD Quadratic Form Command | Level2 Level 4 Level 4 | *symb,' ‘name’ ' symba!' QUAD solves an algebraic symb, for the variable name, and returns an expression symb, representing the solution. QUAD computes the sec- ond-degree Taylor series approximation of symb, to convert it to a quadratic form (this will be exact, if symb, is already a second order polynomial in name). QUAD evaluates symb, before returning it to the stack. If you want a symbolic solution, you should purge any variables that you want to remain in the solution as formal variables. SHOW Show Variable Command Level 2 Level 1 Level 1 *symb,* ‘name! » — 'symb2' SHOW returns symb , which is equivalent to symb,, except that all implicit references to a variable name are made explicit. For example, if we define 'R+i' 'A' STO '¥+2' 'B!' STO, then ‘AXB!' '¥' SHOW returns 'AXCY +2)! and ‘ASB! 'X' SHOW returns 'CX+19¥B'. 286 3: Dictionary Te eoducw@¢uut eee@eewgewdcuwrwc&¢e «SOLVE General Solutions HP-28C functions are functions in the strict mathematical sense, that is, they always return exactly one result when evaluated. This means, for example, that 4 always returns +2, not —2 or +2. For other functions, such as ASIN, a principal value is returned, according to common mathematical conventions. This implies, however, that pairs of functions such as \/ and SQ, or SIN and ASIN, do not necessarily represent the general inverse rela- tion implied by their names. Consider the equation x? = 2. If we take the square root of both sides, we obtain the “solutions” x= +V2 and x= —y2. The HP-28C equation 'X={2' cannot represent correctly both solu- tions—the \/ function always returns the positive square root. Similarly, if we solve sin x = .5 for x, there are an infinite number of solutions x = 30° + 360n°, where n is any integer. Applying the ASIN function to .5 will only return the single result 30°. The principal value flag, user flag 34, determines the nature of solutions returned by ISOL and QUAD. If the flag is set, all arbitrary signs and integers are chosen automatically to represent principal values. If the flag is clear, solutions are returned in their full generality. 3: Dictionary 287 SOLVE General Solution Mode When the HP-28C is in general solution mode, signified by flag 34 clear, the commands QUAD and ISOL solve expressions in their full generality by introducing, where appropriate, special user variables representing arbitrary signs and arbitrary integers. You can select val- ues for these variables in the usual way by storing the desired values into the corresponding variables, then evaluating the expression. QUAD and ISOL introduce variables in this manner: ™ When a command returns a result containing one or more arbitrary signs, the first such sign is represented by a variable 1, the second by s2, and so on. Example: "RO2+5kX+4' 'X' QUAD returns '(-S+s1*3)-2'. The s1 represents the conventional + symbol. You can choose ei- ther root by storing +1 or —1 into 1, then executing EVAL. @ If ISOL returns a result containing one or more arbitrary integers, the first is represented by a variable n1, the next by n2, and so on. Example: 'RAdey' 'x' ISL returns 'EXPC2krkikniv4d#*Y* 25", The exponential represents the arbitrary complex sign of the result; there are three unique values, corresponding to nl = 0, 1, and 2. You can choose one of these values by storing the appropriate number into nl, then evaluating the expression. An alternate keyboard method of substituting for the arbitrary vari- ables in an ISOL or QUAD result expression is to EDIT the expression and make the arbitrary variables into temporary variables for which you supply values. For example, to choose the negative root in the above QUAD example, press §[EDIT] to copy the result expression to the command line, then press Se -1 > s1 (ENTER). This makes s1 into a local variable, assigns it the value —1, and then evaluates the expression. This method has the advantage that it avoids creating “permanent” variables in user memory corresponding to the arbitrary variables. 288 = 3: Dictionary «SOLVE Principal Value Mode If you set flag 34, QUAD and ISOL will return “principal” values for their solutions. That is: ™ Arbitrary signs are chosen to be positive. This applies both to the ordinary +, and to the more general complex “sign” exp (2ani/x) that arises from inverting expressions of the form y*. In the latter case, the arbitrary integer n is chosen to be 0. ™ Arbitrary integers are chosen to be 0. Thus “SINCXD=Y¥' 'X' ISOL returns 'ASINCY)', which always lies in the range 0 through 180 degrees. You should understand that these choices of “principal” values serve primarily to simplify the result expressions. Mathematically, they are no better or worse than any other roots of an expression. If you desire symbolic results that can subsequently be evaluated for purposes other than simple visual inspection, you should work with flag 34 clear, so that the results are completely general. 3: Dictionary 289 STACK DUP OVER DUP2 DROP2 ROT LIST+ ROLLD PICK DUPN DROPN DEPTH LIST This menu provides commands to manipulate the contents’ of the stack. The most frequently used of these commands are provided on the keyboard; the remainder are available as menu keys in the STACK menu. The keyboard commands are (DROP), §(SwaP], MH(ROLL), and WCCLEAR). Keyboard Commands DROP Drop Command DROP removes the first object from the stack. The remaining items on the stack drop one level. You can recover the dropped object by executing LAST if it is enabled. SWAP Swap Command [ Level 2 Level 1 Level 2 Level 1 | obj; a obj SWAP switches the order of the first two objects on the stack. ictionary eu aaeroneeoweeoeereePearlhlUlcer lm eC Oe Oe awe wee «STACK ROLL Roll Command ROLL takes an integer n from the stack and “rolls” the first n objects remaining on the stack. For example, 4 ROLL moves the object in level 4 to level 1. CLEAR Clear Command Level n ... Level 1 CLEAR removes all objects from the stack. If UNDO is enabled, you can recover the stack that has been lost due to an inadvertent CLEAR by pressing [UNDO] immediately after the CLEAR. DUP OVER DUP2 DROP2 ROT LIsT- DUP Duplicate Command DUP returns a copy of the object in level 1. Pressing [ENTER] when no command line is present executes DUP. 3: Dictionary 291 STACK OVER Over Command Level 2 Level 1 Level 3 Level 2 Level 1 obj, objg Ob obj obj; OVER returns a copy of the object in level 2. DUP2 Duplicate Two Objects Command Level 2. Level 1 Level 4 Level 3 Level 2 Level 1 obj, objg © ~— obj objp obj, obj DUP2 returns copies of the first two objects on the stack. DROP2 Drop Command Level 2 Level 1 obj, Objo . DROP2 removes the first two objects from the stack. The two objects are saved in LAST arguments. They can be recovered with LAST if it is enabled. ROT Rotate Command Level 3 Level 2 Level 1 Level 3 Level 2 Level 1 obj obj obig bn objg obj ROT rotates the first three objects on the stack, bringing the third ob- ject to level 1. ROT is equivalent to 3 ROLL. 292 3: Dictionary oe o Te CoCPCcerTTwuw#e eee guuucwe4de STACK LiST- List to Stack Command Level 1 Leveln+1 ... Level 2 Level 4 LObjy 2. big? Objy ... Objn a LIST~ takes a list of n objects from the stack, and returns the objects comprising the list into separate stack levels 2 through n+1. The number 1 is returned to level 1. ROLLD PICK DUPN DROPN DEPTH -LIST ROLLD Roll Down Command Int+1 ...Level 2 Level 1 Leveln Level n—1 . | Obj; ... Obj, n » Obj, Obj, . ROLLD takes an integer n from the stack and “rolls down’ the first n objects remaining on the stack. For example, 4 ROLLD moves the ob- ject in level 1 to level 4. PICK Pick Command [bevel n+4 ... hevel 2. Level 4 Leveln+1 ...Level 2 Level 1 | | Obj, ... ODjy n » Obj; ... Obj, Obj, PICK takes an integer n from the stack and returns a copy of obj, (the nth remaining object). For example, 4 PICK returns a copy of the object in level 4. 3: Dictionary 293 STACK DUPN Duplicate n Objects Command Leveint+1...Level2 Level Level 2n...Leveln+1 Leveln...Level1 Obj, ... Obj; Obj, ... Obj, DUPN takes an integer number n from the stack, and returns copies of the first remaining 1 objects on the stack (the objects in levels 2 through n + 1 while n is on the stack). DROPN Drop n Objects Command Level n+1 ... Level 2 Level 1 DROPN removes the first n + 1 objects from the stack (the first n excluding the number 1 itself). The number n is saved in LAST argu- ments, for recovery by LAST. You can use §§J(UNDO) to recover the dropped objects that remain. DEPTH Depth Command Level 1 » n DEPTH returns a real number n representing the number of objects present on the stack (before DEPTH was executed). 294 3: Dictionary rueeCneCenceWmeucuouvuded STACK LIST Stack to List Command Level n+ Level 2. Level 1 LObjy ... Objy >LIST takes an integer number n from level 1, plus n additional ob- jects from levels 2 through n +. 1, and returns a list containing the n objects. Executing DEPTH +LIST combines the entire contents of the stack into a list, which you can, for example, store in a variable for later recovery. 3: Dictionary 295 STAT =+ z- ND CLE STO RCL TOT MEAN SDEV VAR MAX MIND COL: CORR cov LR PRDEV UTPC UTPF UTPN UTPT HP-28C statistics commands deal with statistical data collected in an n X m matrix called the current statistics matrix. The current statistics matrix is defined to be a matrix stored in the variable SDAT. The current statistics matrix SDAT is created automatically, if it does not already exist, when you begin entry of statistical data points with the command »+. A data point is a vector of m coordinate values (real numbers), and is stored as one row in the statistics matrix. The first data point entered sets the m dimension (number of columns) of the statistics matrix. The n dimension (number of rows) is the number of data poinis that have been entered as illustrated below:. Coordinate Number Data Point 1 2 m 1 Xa X12 Xim 2 Xar Xo2 Xam a Xo Xne Xnm Certain statistics commands combine data from two specified col- umns of the statistics matrix. User variable SPAR contains a list of four real numbers, the first two of which identify the two columns. You select the columns with the command COLS. The last two num- bers in the list are the slope and intercept computed from the most recent execution of the linear regression command LR. 296 3: Di a uugd env qgogoweurueuogb O © © GF O& OF «STAT Because EDAT and EPAR are ordinary variables, you can use ordi- nary commands to recall, view, or alter their contents, in addition to the specific statistics commands that deal with the variables. The commands SDEV (standard deviation), VAR (variance), and COV (covariance) calculate sample statistics using data that represent a sam- ple of the population. These commands are described in detail below. If the data represent the entire population, you can calculate the popu- lation statistics as follows. 1. Execute MEAN to return a data point representing the mean data 2. Execute 2+ to add the mean data point to the data. 3. Execute SDEV, VAR, or COV. The result is the statistics for the population. 4. Execute 2— DROP to remove the mean data point from the data. Z+ z- NY cLy STO RCLY These commands allow you to select a statistics matrix, and to add data to or delete data from the matrix. =+ Sigma Plus Command Level 1 x » Oxy Xp... Xm] » DOK 2 Xm] i ° Dxnt Xno +++ Xam] + adds one or more data points to the current statistics matrix =DAT. 3: Dictionary 297 sa STAT For a statistics matrix with m columns, you can enter the argument for =+ in several ways: Entering one data point with a single coordinate value. The ar- gument for 2+ is a real number. Entering one data point with multiple coordinate values. The argument for 2+ is a vector of m real coordinate values. Entering several data points. The argument for 2+ is a matrix of n rows of m real coordinate values. In each case, the coordinate values are added as new rows to the cur- rent statistics matrix stored in ZDAT. If EDAT does not exist, creates it as an m X m matrix stored in the variable YDAT. If DAT does exist, an error occurs if it does not contain a real matrix, or if the number of coordinate values in each data point entered with 5+ doesn’t match the number of columns in ZDAT. =- Sigma Minus Command Level 1 . [x4 X00 Xd 2— returns a vector of m real numbers, or one number if m = 1, cor- responding to the coordinate values in the last data point entered by =+ into the statistics matrix ZDAT. The last row of the statistics ma- trix is deleted. The vector returned by X— can be edited or replaced, then restored to the statistics matrix by 2+. 298 3: Dictionary peoece@deecuoet¢rd iad oS TAT NZ Sigma N Command >» n NE returns the number of data points entered in the statistics matrix stored in 2DAT. The number of points is equal to the number of rows of the matrix. CLy Clear Sigma Command » CLE clears the statistics matrix by purging the ZDAT variable. STO Store Sigma Command Cmatrix] » STOX takes a matrix from the stack and stores it in the variable [DAT. RCLY Recall Sigma Command Level 1 » obj RCL® returns the current contents of the variable DAT. RCLY is equivalent to 'EDAT' RCL. 3: Dictionary 299 STAT TOT MEAN SDEV VAR MAXY = MINY These commands compute elementary statistics for the data in each column of the current statistics matrix. TOT Total Command | Level 1 > x Dey Xp oes Xn] TOT computes the sum of each of the m columns of coordinate values in the statistics matrix DAT. The sums are returned as a vector of m real numbers, or as a single real number if m = 1. MEAN Mean Command Level 1 > x » [xy Xp 2. Xm] MEAN computes the mean of each of the m columns of coordinate values in the statistics matrix NDAT, and returns the mean as a vector of im real numbers, or as a single real number if m = 1. The mean is computed from the formula n mean = > Jn where x; is the ith coordinate value in a column, and n is the number of data points. 300 3: Dictionary »STAT SDEV Standard Deviation Command Level 1 | x » Oxy xp... Xm] SDEV computes the sample standard deviation of each of the m columns of coordinate values in the current statistics matrix. The standard deviations are returned as a vector of m real numbers, or as a single real number if m = 1. The standard deviations are computed from the formula where x; is the ith coordinate value in a column, ¥ is the mean of the data in this column, and n is the number of data points. R Variance Command Level 1 » x » Cx Xp ee Xm] VAR computes the sample variance of the coordinate values in each of the m columns of the current statistics matrix. The variance is returned as a vector of m real numbers, or as a single real number if m = 1. The variance is computed from the formula 1 Dd oy - 3) n— 1 (24 where x; is the ith coordinate value in a column, X is the mean of the data in this column, and n is the number of data points. 3: Dictionary 301 «STAT MAX Maximum Sigma Command Level 4 » x » Oxy XQ 06. Xm MAXZ finds the maximum coordinate value in each of the m columns of the current statistics matrix. The maxima are returned as a vector of m real numbers, or as a single real number if m = 1. MINZ Minimum Sigma Command Level 1 x Dey XQ eee Xm MINZ finds the minimum coordinate value in each of the m columns of the current statistics matrix. The minima are returned as a vector of m real numbers, or as a single real number if m = 1. COL> CORR cov LR PREDV COL> Sigma Columns Command | Level 2 Level 1 | m me 302 3: Dictionary PUCeCCCCTCTCuCcuws STAT COLE takes two column numbers, m; and 1, from the stack and stores them as the first two objects in the list contained in the variable =PAR. The numbers identify column numbers in the current statistics matrix DAT, and are used by statistics commands that work with pairs of columns. nj designates the column corresponding to the inde- pendent variable for LR, or the horizontal coordinate for DRWE or SCL2. 1 designates the dependent variable or the vertical coordinate. For CORR and COV, the order of the two column numbers is unimportant. If any of the two-column commands is executed when SPAR does not yet exist, it is automatically created with default values n, = 1 and Ny = 2. CORR Correlation Command Level 1 ® correlation CORR returns the correlation of two columns of coordinate values in the current statistics matrix. The columns are specified by the first two elements of ZPAR (default 1 and 2). The correlation is computed from the formula n > Gin, — Fn.) Ginn — Fay) VE Gin — BP D Cin — Fe? i=1 t=1 “ “ where x, is the ith coordinate value in column ny, Xin, is the ith co- ordinate value in the column 1, ¥,,, is the mean of the data in column 1, X,,, is the mean of the data in column 1, and n is the number of data points. 3: Dictionary 303 cov Covariance Command Level 1 | COV returns the sample covariance of the coordinate values in two columns of the current statistics matrix. The columns are specified by the first two elements in ZPAR (default 1 and 2). The covariance is computed from the formula : D, On, 9 Cn ~ B) n-1 where Xin, is the ith coordinate value in column m1, Xj, is ith coordi- nate value in the column 1, X,,, is the mean of the data in column nj, X,,, is the mean of the data in column np, and n is the number of data points. LR Linear Regression Command | Level 2 Level 4 | ® — intercept slope LR computes the linear regression of a dependent data column on an independent data column, where the columns of data exist in the cur- rent statistics matrix. The columns of independent and dependent data are specified by the first two elements in ZPAR (default 1 and 2). The intercept and slope of the regression line are returned to levels 2 and 1 of the stack, respectively. LR also stores these regression coef- ficients as the third (intercept) and fourth (slope) items in the list in the variable SPAR. 304 3: Dictionary = = = = = = = = = Ooo oS TAT PREDV Predicted Value Command Level 1 Level 1 x * predicted value PREDV computes a predicted value from a real number argument x, using the linear regression coefficients most recently computed with LR and stored in the variable ZPAR: predicted value = (x x slope) + intercept. The regression coefficients intercept and slope are stored by LR as the third and fourth items, respectively, in the variable SPAR. If you exe- cute PREDV without having previously executed LR, a default value of zero is used for both coefficients, so that PREDV will always return zero. UTPC UTPF UTPN- UTPT The HP-28C provides four upper-tail probability commands, which you can use to determine the statistical significance of test statistics. The upper-tail probability function of a random variable X is the probability that X is greater than a number x, and is equal to 1 — F(x), where F(x) is the distribution function of X. The inverses of distribution functions are useful for constructing con- fidence intervals. The argument of an inverse upper-tail probability function is a value from 0 through 1; when the argument is expressed as a percent, the inverse function values are called percentiles. For example, the 90th percentile of a distribution is the number x for which the probability that the random variable X is greater than x is 100% — 90% = 10%. 3: Dictionary 305 «STAT You can use the Solver to obtain the inverses of the upper-tail prob- ability functions. Suppose you wish to determine a percentile of the normal distribution. Let P = percentile/100 M = mean of the distribution V = variance X = random variable UTPN (described below) returns the upper-tail probability for normal distribution. To solve the equation 1 — P = utpn (M, V, X), for X, create the program «1P- M YX UTPN - %, and store it as the current equation by pressing (SOLV] J. Then press to produce the Solver menu: A Ek GS GN ELL wee - Try a normal distribution with M = 0, V = 1: eo Be Now compute the 95th percentile: 95 Hae © yields the result X = 1.6449. 306 3: Dictionary Saeed « STAT UTPC Upper Chi-Square Distribution Command [ Level2 Level 4 Level 4 n x » utpo(n, x) UTPC returns the probability utpe(n, x) that a chi-square random variable is greater than x, where n is the number of degrees of free- dom of the distribution. n must be a positive integer. UTPF Upper Snedecor’s F Distribution Command Level 3 Level 2 Level 4 Level 1 ny Np x . utpi(ny, Mo, x) UTPF returns the probability utpf (1, m2, x) that a Snedecor’s F ran- dom variable is greater than x, where n, and ny are the numerator and denominator degrees of freedom of the F distribution. n; and nj must be positive integers. UTPN Upper Normal Distribution Command Level 3 Level 2 Level 1 Level 1 m v x » utpr{m, v, x) | UTPN returns the probability utpn(m, v x) that a normal random variable is greater than x, where m and v are the mean and variance, respectively, of the normal distribution. 7 must be a non-negative number. 3: Dictionary 307 »STAT UTPT Upper Student's t Distribution Command Level 2 Level 1 T Level 1 | n x * utpt(n, x) | UTPT returns the probability utpt(n, x) that a Student's ¢ random variable is greater than x, where n is the number of degrees of free- dom of the distribution. 1 must be a positive integer. 308 3: Dictionary oegew a nuseeweeoeeP eS weer ee STORE STO+ sTOo— SsTOx STO; SNEG SINV SCONJ The STORE menu contains storage arithmetic commands which allow you to perform addition, subtraction, multiplication, division, inver- sion, negation, and conjugation on real and complex numbers and arrays that are stored in variables, without recalling the variable con- tents to the stack. Besides minimizing keystrokes in many cases, the STORE commands provide an “in-place” method of altering the con- tents of an array, which requires less memory than manipulating the array while it is on the stack. Storage arithmetic is restricted to ordinary variables—you cannot use a local name as an argument for any of the commands in the STORE menu. STO+ STO-— STOx STO/ SNEG SINV sTo+ Store Plus Command 2 Level 4 Zz "name! » “name * Zz » Caray] ‘name’ ® ‘name’ = Caray] 3: Dictionary 309 «STORE STO+ adds a number or array to the contents of the variable. The variable name and the number or array can be in either order on the stack. The object on the stack and the object in the variable must be suitable for addition to each other—you can add any combination of real and complex numbers, or any combination of conformable real and com- plex arrays. sTo— Store Minus Command Level 2 Level 4 z ‘name' . “name! Zz . Carray] “name' » ‘name! Caray] STO— computes the difference of two numbers or arrays. One object is taken from the stack, and the other is the contents of a variable specified by a name on the stack. The resulting difference is stored as the new value of the variable. The result depends on the order of the arguments: ™@ If name is in level 1, the difference (value in level 2) — (value in name) becomes the new value of name. = If name is in level 2, the difference (value in name) — (value in level 1) becomes the new value in name. The object on the stack and the object in the variable must be suitable for subtraction with each other—you can subtract any combination of real and complex numbers, or any combination of conformable real and complex arrays. 310 3: Dictionary eq qa gg aged eg @ @ & @ @ & © c_fTlUw ws OS STOx Store Times Command Level 1 Zz ‘name‘ ® ‘name ' z » Carray] “name! » ‘name ' Caray] ® Li STO multiplies the contents of a variable by a number or array. When multiplying two numbers or a number and an array, the vari- able name and the other object can be in either order on the stack. When multiplying two arrays, the result depends on the order of the arguments: @ If name is in level 1, the product (array in level 2) X (array in name) becomes the new value of name. @ If name is in level 2, the product (array in name) x (array in level 1) becomes the new value in name. The arrays must be conformable for multiplication. STO/ Store Divide Command Level 2 Zz ‘name ‘name! z Carray] “name ' ‘name* — Caray STO/ computes the quotient of two numbers or arrays. One object is taken from the stack, and the other is the contents of a variable speci- fied by a name. The resulting quotient is stored as the new value of the variable. 3: Dictionary 311 + STORE The result depends on the order of the arguments: @ If name is in level 1, the quotient (value in level 2)/(value in name) becomes the new value of name. = If name is in level 2, the quotient (value in name)/(value in level 1) becomes the new value in name. The object on the stack and the object in the variable must be suitable for division with each other. In particular, if both objects are arrays, the divisor (level 1) must be a square matrix, and the dividend (level 2) must have the same number of columns as the divisor. SNEG Store Negate Command Level 1 ‘name' » SNEG negates the contents of the variable named on the stack; the result replaces the original contents of the variable. The variable may contain a real number, a complex number, or an array. SINV Store Invert Command Level 1 | ‘name ‘ » SINV computes the inverse of the contents of the variable named on the stack; the result replaces the original contents of the variable. The variable may contain a real number, a complex number, or a square matrix. wed + STORE SCONJ SCONJ Store Conjugate Command Level 1 ‘name’ ® SCONJ conjugates the contents of the variable named on the stack; the result replaces the original contents of the variable. The variable may contain a real number, a complex number, or an array. 3: Dictionary 313 = » ” » » 7 - 7 7 _ 7 = 7 > = ” = > = = = = = > = 7] “ 7 7 . . . _ STRING +STR STR- CHR NUM Pos DISP SUB SIZE A string object consists of a sequence of characters delimited by dou- ble-quote marks " at either end. Any HP-28C character can be included in a string, including the object delimiters ¢, 9, C, 1, 4, +, #, ", ', », and «, Characters not directly available on the keyboard can be entered by means of the CHR command. Although you can include " characters within a string (using CHR and +), you will not be able to EDIT a string containing a " in the usual way. This is because ENTER attempts to match pairs of "’s in the command line—extra "’s within a string will cause the string to be broken into two or more strings that will contain no "’s. Strings are used primarily for display purposes—prompting, labeling results, and so on. The commands included in the STRING menu pro- vide simple string and character operations. However, the commands -STR and STR add an important application for strings—they can convert any object, or sequence of objects, to and from a character- string form. In many cases, the string form requires less memory than the normal form of an object. You can store objects in variables as strings and convert them to the normal form only when you need them. See the descriptions of +STR and STR+ below for more information. 314 3: Dictionary COdecdcdectedcdddcddddadd Psrra a @gaeaonucuwewew@e¢@ «STRING Keyboard Function + Add Analytic "string," "stringy" ® "string, stringy" + concatenates the characters in the string in level 1 to the characters in the string in level 2, producing a string result. -STR STR-> CHR NUM Pos DISP ~STR Object to String Command Level 1 Level 1 obj = "string" ~STR converts an arbitrary object to a string form. The string is es- sentially the same as the display form of the object that you would obtain when the object is in level 1, and multi-line display mode is active: ™ The result string includes the entire object, even if the displayed form of the object is too large to fit in the display. © If the object is displayed in two or more lines, the result string will contain newline characters (character 10) at the end of each line. The newlines are displayed as the default character =. 3: Dictionary 315 «STRING ™ Numbers are converted to strings according to the current number display mode (STD, FIX, SCI, or ENG) or binary integer base (DEC, BIN, OCT, or HEX) and wordsize. The full-precision internal form of the number is not necessarily represented in the result string. You can insure that +STR preserves the full precision of a number by selecting STD mode or a wordsize of 64 bits, or both, prior to executing +STR. ™ If the object is already a string, ~STR returns the string. You can use +STR to create special displays to label program output or provide prompts for input. For example, the sequence “Result = " SWAP #STR + 1 DISP displays Result = object in line 1 of the display, where object is a string form of an object taken from level 1. STR-> String to Objects Command Level 1 "string" » STR+ is a command form of ENTER. The characters in the string ar- gument are parsed and evaluated as contents of the command line. The string may define a single object, or it may be a series of objects that will be evaluated just like a program. STR can also be used to restore objects that were converted to strings by +STR back to their original form. The combination +STR STR leaves objects unchanged except that +STR converts numbers to strings according to the current number display format and binary integer base and wordsize. STR will reproduce a number only to the precision represented in the string form. 316 © 3: Dictionary a a Sewer reser rll sSelhlUh «STRING CHR Character Command n * "string" CHR returns a one-character string containing the HP-28C character corresponding to the character code n taken from level 1. The default character * is used for all character codes that are not part of the normal HP-28C display character set. Character code 0 is used for special purposes in the command line. You can include this character in strings by using CHR, but attempt- ing to edit a string containing this character causes the Can't Edit CHR¢@> error. NUM Character Number Command Level 1 "string" NUM returns the character code of the first character in a string. The following table shows the relation between character codes (re- sults of NUM, arguments to CHR) and characters (results of CHR, arguments to NUM). For character codes 0 through 147, the table shows the characters as displayed in a string. For character codes 148 through 255, the table shows the characters as printed by the HP 82240A printer; these characters are displayed on the HP-28C as the default character *. 3: Dictionary 317 » STRING Character Codes (0-127) 318 3: Dictionary NUM CHR | NUM CHR | NUM CHR 32 33 34 35 36 a7 38 39 48 4t 42 43 44 45 46 47 48 49 38 51 52 53 54 55 56 57 58 59 68 61 oe a as NOUR YR Ew ' WA we ww oe 64 65 66 67 63 69 78 at 72 73 74 @ vom D Awa eVvozZRarAcHrAnMm rPN (lists > SUB takes a string and two integer numbers n, and 1, from the stack, and returns a new string containing the characters in positions n, through 1 of the original string. If ny < nj, SUB returns an empty string. Arguments less than 1 are converted to 1; arguments greater than the size of the string are converted to the string size. Refer to “LIST” for the use of SUB with lists. SIZE Size Command Level 1 Level 1 "string" n Caray] » “lists 4 list ¥ » n "symb' ow n SIZE returns a number 1 that is the number of characters in a string. Refer to “ALGEBRA”, “ARRAY” and “LIST” for the use of SIZE with other object types. 3: Dictionary 321 TRIG SIN ASIN cos acos TAN ATAN P-R R-P R-C c-R ARG -HMS HMS~ HMS+ HMS— D-R R-D The TRIG (trigonometry) menu contains commands related to angular measurement and trigonometry: circular functions, polar/rectangular conversions, degrees/radians conversions, and calculations with val- ues expressed in degrees-minutes-seconds or hours-minutes-seconds form. SIN ASIN cos ACOS TAN ATAN These are the circular functions and their inverses. SIN, COS and TAN interpret real arguments according to the current angle mode (DEG or RAD), returning real results. ACOS, ASIN, and ATAN ex- press real results according to the current angle mode. All six functions accept complex arguments, producing complex re- sults. For ACOS and ASIN, real arguments with absolute value greater than 1 also produce complex results. Complex numbers are interpreted and expressed in radians. ASIN, ACOS, and ATAN return the principal values of the inverse relations, as described in “COMPLEX.” 322 = 3: Dictionary vwuvwvuvrwvuvewsvweueguod wg SP SP SP OD = «TRIG SIN Sine Analytic Level 1 Level 1 z » sinz "symb' ® “SINCsymb>* SIN returns the sine of its argument. For complex arguments, sin (x + iy) = sin x cosh y + i cos x sinh y. ASIN Arc sine Analytic Level 1 Level 1 Zz ° arc sin z ‘symb' # — 'ASINCsymb)* ASIN returns the principal value of the angle having a sine equal to its argument. For real arguments, the range of the result is from —90 to +90 degrees (—7/2 to +7/2 radians). For complex arguments, the complex principal value of the arc sine is returned: are sin z = —i In (iz + V1 — 27) A real argument x outside of the domain —1 < x <1 is converted to a complex argument z = x + Oi, and the complex principal value is returned. 3: Dictionary 323 cos Cosine Analytic Level 1 z » cos z ‘symb' » 'COS¢symb3' COS returns the cosine of its argument. For complex arguments, cos (x + iy) = cos x cosh y — i sin x sinh y ACOS Arc cosine Analytic Zz » are cos z ‘symb' SSI N&symb>! ACOS returns the principal value of the angle having a cosine equal to its argument. For real arguments, the range of the result is from 0 to 180 degrees (0 to m radians), For complex arguments, ACOS re- turns the complex principal value of the arc cosine: arc cos z = ~i In (2 + V2? —1) A real argument x outside of the domain —1 < x < 1 is converted to a complex argument z = x + Oi, and the complex principal value is returned. 324 3: Dictionary ue » TRIG TAN Tangent Analytic Level 1 Level 4 Zz > tan z ‘symb' = = TANGsymb> * TAN returns the tangent of its argument. For complex arguments, _ sin x cos x + i sinh y cosh y tan(x + iy) = > 2 (sinh y)° + (cos x) If a real argument is an odd integer multiple of 90, and if DEG angle mode is set, an Infinite Result exception occurs. If flag 59 is clear, the sign of the (MAXR) result is that of the argument. ATAN Arc tangent Anal Lew Level z » arc tan z ‘symb' = 'ATANGsymb>* ATAN returns the principal value of the angle having a tangent equal to its argument. For real arguments, the range of the result is from —90 to +90 degrees (—2/2 to +7/2 radians). For complex argu- ments, ATAN returns the complex principal value of the arc tangent: arc tan z = + In (22) z i-z 3: Dictionary 325 ot TRIG P-R R-P R-C C-R ARG The functions P+R (polar-to-rectangular), R+P (rectangular-to-polar), and ARG (argument) deal with complex numbers that represent the coordinates of points in two dimensions. R+C (real-to-complex) and C>R (complex-to-real) convert pairs of real numbers to and from com- plex notation. The functions P+R and R-P can also act on the first two elements of a real vector. P-R Polar to Rectangular Function Level 1 Level 1 x » Oa cr, 8) » xay? Cré.d» C xy. "symb' "PRC symb) ' P+R converts a complex number (r, #) or two-element vector [14 ], representing polar coordinates, to a complex number (x, y) or two-ele- ment vector [xy], representing rectangular coordinates, where: x=rcos#, y=rsin é The current angle mode determines whether @ is interpreted as de- grees or radians. If a vector has more than two elements, P+R converts the first two elements and leaves the remaining elements unchanged. For three- element vectors, P+R converts a vector [p @z] from cylindrical coordinates (where p is the distance to the z-axis, and 0 is the angle in the xy-plane from the x-axis to the projected vector) to the vector [yz] in rectangular coordinates. 326 =. 3: Dictionary eens eee eee leeeeerllCaelCcae Ceres me hme —eaEee TRIG You can represent a vector in spherical coordinates as [ r ¢ 6], where r is the length of the vector, ¢ is the angle from the z-axis to the vector, and @ is the angle in the xy-plane from the x-axis to the projected vector, To convert a vector from spherical to rectangular coordinates, execute: PR ARRY? DROP ROT (3) SARRY PR Rectangular-to-Polar Function Level 1 Level 1 Zz » Cr. Cx y...d® Cra@..d ‘symb' ® "RP Csymb>' R-+P converts a complex number (x, y) or two-element vector [x y ], representing rectangular coordinates, to a complex number (r, 6) or two-element vector [1], representing polar coordinates, where: = abs (x, y), 6 = arg (x, y) The current angle mode determines whether # is expressed as degrees or radians. A real argument x is treated as the complex argument (x, 0). 3: Dictionary 327 wT RIG If a vector has more than two elements, R+P converts the first two elements and leaves the remaining elements unchanged. For three- element vectors, R+P converts a vector [ x y z ] from rectangular coordinates to a vector [ p 4z] in cylindrical coordinates, where p is the distance to the z-axis, and @ is the angle in the xy-plane from the x-axis to the projected vector. You can represent a vector in spherical coordinates as [ r 6], where r is the length of the vector, ¢ is the angle from the z-axis to the vector, and @ is the angle in the xy-plane from the x-axis to the projected vector. To convert a vector from rectangular to spherical coordinates, execute: R>P ARRY>* OROP ROT ROT {3} ZARRY R2P R-C Real to Complex Command Level 2 Level 1 Level 1 x yoo ®) Gyy> R=+C combines real numbers x and y into a coordinate pair (x, y). Refer to “ARRAY” for the use of R+C with arrays. C-R Complex to Real Command Level 1 Level2 Level 1 x,yd * x y CR converts a coordinate pair (x, y) into two real numbers x and y. Refer to “ARRAY” for the use of C>+R with arrays. 328 3: Dictionary «TRIG ARG Argument Function Level 1 Level 1 Zz » 4 ‘symb' ow» "ARG Csymb>* ARG returns the polar angle # of a coordinate pair (x, y) where arc tan y/x for x > 0, 6 = 4 arc tan y/x + @ sign y for x < 0, radians mode, arc tan y/x + 180 sign y for x < 0, degrees mode. The current angle mode determines whether @ is expressed as degrees or radians. A real argument x is treated as the complex argument (x, 0). ~HMS HMS~ HMS+ HMS- D-R R-D The commands +~HMS, HMS+, HMS+, and HMS— deal with time (or angular) quantities expressed by real numbers in HMS (hours-min- utes-seconds) format. 3: Dictionary 329 wi TRIG The HMS format is 4.MMSSs, where: © his zero or more digits representing the integer part of the number. ™ MM are two digits representing the number of minutes. ® SS are two digits representing the number of seconds. ™ s is zero or more digits representing the decimal fractional part of seconds, Here are examples of time (or angular) quantities expressed in HMS format. Quantity HMS Format 12h 32m 46s (12° 32’ 46”) 12.3246 —6h 00m 13.2s (—6° 00’ 13.2”) | —6.00132 36m (36’) 0.36 >HMS Decimal to H-M-S Command Level 1 Level 1 x » Ams +HMS converts a real number representing decimal hours (or de- grees) to HMS format. HMS~ H-M-S to Decimal Command | Level 1 Level 4 | hms » x HMS- converts a real number in HMS format to its decimal form. 330 3: Dictionary vee veweuegeoegeoeoegePgeggseudgd @ wv. os TRIG HMS+ Hours-Minutes-Seconds Plus Command Level 2 Level 1 Level 1 Ams, Amsp > Ams, + hmsp HMS-+ adds two numbers in HMS format, returning the sum in HMS. format. HMS— Hours-Minutes-Seconds Minus Command Level 2 Level 1 hms, hms, — hms hms HMS — subtracts two real numbers in HMS format, returning the dif- ference in HMS format. D-R Degrees to Radians Function Lev Level 1 x » (7/180) x ‘symb' ® "D+RCsymb>' D-R converts a real number expressed in degrees to radians. R-D Radians to Degrees Function Level 4 [ Level 4 ——-—| x » (180/x) x ‘symb' ® "R2D¢symb>" R=+D converts a real number expressed in radians to degrees. 3: Dictionary 331 UNITS The value of a physical measurement includes units as well as a nu- merical value. To convert a physical measurement from one system of units to another, you multiply the numerical value by a conversion factor, which is the ratio of the new units to the old units. The HP-28C automates this process through the command CONVERT. You specify a numerical value, the old units, and the new units, and then CONVERT computes the appropriate conversion factor and mul- tiplies the numerical value by the conversion factor. The HP-28C’s unit conversion system is based upon the International System of Units (SI). There are 120 units included in the HP-28C’s permanent memory. CONVERT recognizes any multiplicative com- bination of these units, as well as additional units that you can define. The UNITS catalog lists the built-in units and their values in terms of standard base quantities. The International System specifies seven base quantities: length (me- ter), mass (kilogram), time (second), electric current (ampere), thermodynamic temperature (kelvin), luminous intensity (candela), and amount of substance (mole). In addition, the HP-28C recognizes one undefined base quantity, which you may specify as part of user- defined units. CONVERT Convert Command Level3 Level2 —_Level Level2 Level 1 x "old" "new" y "new" x “olg" "new! ow y "new! x “old* “new” ow» y "new" x ‘old’ ‘new! ow y "new! 332 3: Dictionary av a werwe 2 we 2s UNITS CONVERT multiplies a real number x by a conversion factor, which is computed from two arguments representing old and new units. The resulting real number y is returned to level 2, and the new unit string is returned to level 1. Generally the old and new units are represented by string objects, as described below. For convenience in simple conversions, however, you can use a name object to represent a unit. For example, assuming you haven't created variables named ‘ft’ or ‘m’, you could convert 320 feet to meters by executing: 320 ft m CONVERT. The unit strings are string objects that represent algebraic expressions containing unit abbreviations. A unit string may contain: @ Any built-in or user-defined units. Built-in units are represented by their abbreviations (refer to “The UNITS Catalog”). User units are represented by their variable names (refer to “User-Defined Units”). ™ A unit followed by the * symbol, plus a single digit 1-9. For exam- ple: "m*2" (meters squared), "a*s*3" (gram-seconds cubed). ® A unit preceded by a prefix representing a multiplicative power of 10. For example: "Mpc" (Megaparsec), "nm" (nanometer). (Refer to “Unit Prefixes’). ™ Two or more units multiplied together, using the * symbol. For ex- ample: "acm" (gram-centimeters), "f t%1b" (foot-pounds), "m&k aks" (meter-kilogram-seconds). = One / symbol to indicate inverse powers of units. If all units in a unit string have inverse powers, the unit string can start with "te". For example: "mssec" (meters per second), "1/m" (inverse meters), “gktcm/s*2**K" (gram-centimeters per second squared per degree Kelvin). ™ The ' symbol, which is ignored. This allows you to create an alge- braic expression on the stack and then use +STR to change the expression to a unit string. However, parentheses are not allowed in unit strings. 3: Dictionary 333 UNITS The two unit strings must represent a dimensionally consistent unit conversion, For example, you can convert "1" (liters) to "em*3" (cu- bic centimeters), but not to "acre". CONVERT checks that the powers of each of the eight base quantities (seven SI base quantities plus one user-defined base quantity) are the same in both unit strings. (Dimensionality consistency is checked in modulo 256.) Here are some examples of using CONVERT (numbers shown in STD. format): Old Old New New New Value Units Units Value Units 1 it “eth » = 3.28083989501 "ete 1 “baMpo" "comes" » 3.085678 "ome3" 12.345 “katmes*2" “dun » 18585 "dun" Temperature Conversions Conversions between the four temperature scales (°K, °C, °F, and °R) involve additive constants as well as multiplicative factors. If both unit string arguments contain only a single, unprefixed temperature unit with no exponent, CONVERT performs an absolute temperature scale conversion, including the additive constants. For example, to convert 50 degrees Fahrenheit to degrees Celsius, execute: S@ °F *C CONVERT If either unit string includes a prefix, an exponent, or any unit other than a temperature unit, CONVERT performs a relative temperature unit conversion, which ignores the additive constants. 334 3: Dictionary » UNITS The UNITS Catalog Pressing §§(UNITS) activates the UNITS catalog, which is analogous to the command catalog obtained with [CATALOG]. The UNITS catalog lists each unit included in the HP-28C, along with the abbreviation recognized by CONVERT and the value of the unit in terms of the SI base quantities. When you press §§(UNITS), the normal HP-28C display is superceded by the UNITS display: a m2 CEG Be The top line shows the unit abbreviation of the selected unit, in this example a, followed by the full name, are. Are is the first unit in the HP-28C alphabetical unit catalog. The second line shows the unit's value in SI base units, which are shown in the third line. Alto- gether, this display shows that ar e is abbreviated a and has the value 100 meters squared. 3: Dictionary 335 UNITS The UNITS menu is shown in the bottom line. The five active menu keys act as follows: | Menu Key Description Advance the catalog to the next unit in the catalog. Move the catalog to the previous unit in the catalog. Scan forward through the unit catalog, showing each unit's name briefly. Pressing changes the menu label to $RGEE : pressing halts the scan at the current unit. The scan stops automatically at the last unit in the catalog (the unit “1"). Exit the catalog and add the current unit abbreviation to the command line at the cursor position (start a new command line if none is present). Exit the catalog, leaving any current command line unchanged. In addition to the operations available in the UNITS menu, you can: ™ Press any letter key to move the catalog to the first unit that starts with that letter. ™ Press any non-letter key on the left-hand keyboard to move the catalog to “°”, the first non-alphabetic unit. @ Press cal unit. @ Press ON i} to move the catalog display to “1”, the last non-alphabeti- to exit the catalog and clear the command line. The following table shows all the units in the UNITS catalog, includ- ing descriptions of the units. 336 3: Dictionary HP-28C Units Uni Full Name vi a Are Area 100 m*2 A Ampere Electric current 1A acre Acre Area 4046.87260987 m*2 arcmin | Minute of arc Plane angle 2.90888208666E — 4 arcs Second of arc Plane angle 4.8481368111E—6 atm Atmosphere Pressure 101325 Kg/m*s*2 au Astronomical unit Length 149597900000 m Ae Angstrom Length 0000000001 m b Barn Area 1.E-28 m*2 bar Bar Pressure 100000 Kg/m*s*2 bbl Barrel, oil Volume -158987294928 m*3 Bq Becquerel Activity 11s Btu International Table Btu | Energy 1055.05585262 Kgxm*2/s*2 bu Bushel Volume 03523907 m*3 Cc Coulomb Electric charge 1 Axs cal International Table Energy 4.1868 Kgkm*2/s*2 calorie cd Candela Luminous intensity led chain Chain Length 20.1168402337 m Ci Curie Activity 3.7E10 1/s ct Carat Mass .0002 Kg cu US cup Volume 2.365882365E —4 m*3 d Day Time 86400 s dyn Dyne Force 00001 Kgxm/s*2 erg Erg Energy 0000001 Kgxm*2/s*2 3: Dictionary 337 HP-28C Units (Continued) UNITS T unit Full Name Description LL Value ev Electron volt Energy 1.60219E—19 Kgkm*2/s"2 F Farad Capacitance 1 A*2ks*4/Kgm*2 fath Fathom Length 1,82880365761 m fom Board foot Volume 002359737216 m*3 fc Footcandle Luminance 10.7639104167 cdjm*2 Fdy Faraday Electric charge 96487 Axs termi Fermi Length 1.E-15 m flam Footlambert Luminance 3.42625909964 edjm*2 ft International foot Length -3048 m ftUS Survey foot Length 304800609601 m g Gram Mass .001 Kg ga Standard freefall Acceleration 9.80665 m/s*2 gal US gallon Volume 003785411784 m*3 galC Canadian gallon Volume 00454609 m*3 galUk | UK gallon Volume 004546092 m3 af Gram-force Force -00980665 Kgxm/s*2 grad Grade Plane angle 1.57079632679E —2 grain | Grain Mass .00006479891 Kg Gy Gray Absorbed dose 1 m*2/s*2 h Hour Time 3600 s H Henry Inductance 1 Kgkm*2/A*2*s*2 hp Horsepower Power 745.699871582 Kgkm*2/s*3. Hz Hertz | Frequency _ | 11/s 338 3: Dictionary ee a ee le | HP-28C Units (Continued) UNITS [ Unit Full Name Description Value in Inch Length 0254 m inHg Inches of mercury Pressure 3386.38815789 Kg/mks”2 inH2O | Inches of water Pressure 248.84 Kg/ms*2 J Joule Energy 1 Kgkm*2/s*2 kip Kilopound-force Force 444822161526 Kgkm/s*2 knot Knot Speed 514444444444 m/s kph Kilometer per hour Speed 2T7TTTTTTT7B m/s. ' Liter Volume 001 m*3. lam Lambert Luminance 3183.09886184 ed/m*2 Ib Avoirdupois pound Mass 45359237 Kg Ibf Pound-force Force 444822161526 Kgm/s*2 lot Troy Ib Mass 8732417 Kg Im Lumen Luminance flux ted Ix Lux Mluminance 1 cdjm*2 lyr Light year Length 9.46055E15 m m Meter Length 1m mho Mho. Electric conductance 1 A*2ks*3/Kgkm*2 mi International mile Length 1609.344 m mil Mil Length 0000254 m min Minute Time 60s miUS US statute mile Length 1609.34721869 m mmHg | Millimeter of mercury | Pressure 133.322368421 Kg/mxs*2 mol Mole Amount of Substance | 1 mol 339 UNITS HP-28C Units (Continued) —y Full Name Description Value Tron Miles per hour Speed 44704 m/s 7 N Newton Force 1 Kg*m/s*2 nmi Nautical mile Length 1852 m ohm Ohm Electric resistance 1 Kgm*2/A*2*s*3 oz Ounce Mass 028349523125 Kg ozfl US fluid oz Volume 2.95735295625E—5 m3 ozt Troy oz Mass 031103475 Kg ozUK UK fiuid 02 Volume 000028413075 m*3 P Poise Dynamic viscosity 1 Kg/ms. Pa Pascal Pressure 1 Kg/m*s*2 pc Parsec Length 3.08567818585E16 m pdl Poundal Force 138254954376 Kgxm/s*2 ph Phot Luminance 10000 cd/m*2 pk Peck Volume .0088097675 m*3 psi Pounds per square Pressure 6894.75729317 inch Kg/mks*2 pt Pint Volume 000473176473 m*3 qt Quart Volume 000946352946 m*3 r Radian Plane angle 1 R Roentgen Radiation exposure 000258 Axs/Kg rad Rad Absorbed dose .01 m*2/s*2 td Rod Length 5.02921005842 m rem. Rem Dose equivalent .01 m*2/s*2 s Second Time 1s Ss Siemens Electric conductance 1 A°2ks*3/Kgxm*2 sb Stilb Luminance 10000 cd/m*2 —t 340 3: Dictionary -UNITS HP-28C Units (Continued) a Unit Full Name Description Value 7 e > slug | Slug Mass 14,5939029372 Kg _ sr Steradian Solid angle 1 ’ st Stere Volume 1 m3 . St Stokes Kinematic viscosity .0001 m*2/s > Sv Sievert Dose equivalant 4 m*2/s*2 7 t Metric ton Mass. 1000 Kg > T Tesla Magnetic flux 1 Kg/Axs*2 ; tbsp | Tablespoon Volume ‘ ATOBTEATBASE 8 . therm | EEC therm Energy 105506000 > Kgxm*2/s*2 . ton Short ton Mass 907.18474 Kg ” tonUK | Long ton Mass 1016.0469088 Kg ’ torr Torr Pressure 133.322368421 > Kg/m*s*2 > tsp Teaspoon Volume 4,92892159375E—6 m3 , u Unified atomic mass | Mass 1.66057E-27 Kg , v Volt Electric potential 1 Kgkm*2/A¥S*3 ; Ww Watt Power 1 Kg&m*2/s*3 . wb Weber Magnetic flux 1 Kgkm*2/AxkS"2 . yd International yard Length 9144 m ’ ye Year Time 31536000 s ” ° Degree Angle 1,74532925199E —2 , °C Degree Celsius Temperature 1°K °F Degree Fahrenheit Temperature 555555555556 °K ; °K Degree Kelvin Temperature 1°K 7 y 3: Dictionary 341 wUJNITS HP-28C Units (Continued) Unit | Full Name | Description Value °R Degree Rankine Temperature -555555555556 °K Micron Length -000001 m User quantity 1? 1 Dimensionless unit 1 Sources: The National Bureau of Standards Special Publication 330, The International System of Units (SI), Fourth Edition, Washington D.C., 1981. The Institute of Electrical and Electronics Engineers, Inc., American National Standard Metric Practice ANSI/IEEE Std. 268-1982, New York, 1982. American Society for Testing and Materials, ASTM Standard for Metric Practice E380-84, Philadelphia, 1984. Aerospace Industries Association of America, Inc., National Aerospace Standard, Washington D.C., 1977. Handbook of Chemistry and Physics, 64th Edition, 1983-1984, CRC Press, Inc., Boca Raton, FL, 1983. 342 3: Dictionary UNITS User-Defined Units You can create a variable containing a list that CONVERT will accept as a user-defined unit in a unit string. The list must contain a real number and a unit string (similar to the second and third lines in the UNITS display). For example, suppose you often use weeks as a unit of time. Executing 4? "ad" 'WK' STO allows you to use "WK" in conversions or in creating more compli- cated user-defined units. The user defined unit string can contain any element of a conversion unit string, along with two other special units: = To define a dimensionless unit, specify a unit string " ® To define a new unit not expressible in SI units, specify a unit string "?". CONVERT will check dimensionality for this unit along with the SI units. For example, to convert money in three curren- cies, dollars, pounds, and francs, define: 41 "2"3 'DOLLAR' STO €2.25 "?"> *POUND' STO 4.4 "2"} 'FRANC' STO and then convert between any two of these currencies (the values chosen are just for illustration). Unit Prefixes In a unit string you can precede a built-in unit by a prefix indicating a power of ten. For example, "mm" indicates “millimeter”, or meter X 10-3. The table below lists the prefixes recognized by CONVERT. 3: Dictionary 343 UNITS Unit Prefixes Prefix | Name | Exponent E exa +18 P peta +15 T tera +12 G giga +9 M mega | +6 k or K | kilo +3 horH | hecto | +2 D deka +1 d deci -1 c centi —2 m milli —3 micro —6 nano -9 p pico 12 f femto —15 a atto —18 Most prefixes used by the HP-28C correspond with standard SI nota- tion. The one exception is “deka”, indicating an exponent of +1, which is “D” in HP-28C notation and “da” in SI notation. 344 3: Dictionary UNITS 43 You can’t use a prefix with a unit if the resulting com- bination would match a built-in unit. For example, you Note can’t use "min" to indicate milli-inches because "min" is a built-in unit indicating minutes. Other possible com- binations that would match built-in units are: "Pa", "cd 7 “Slam”, "nmi", "mph", "kph", "ct", "pt", "Ft", "au", and "eu", Although you can’t use a prefix with a user-defined unit, you can create a new user-defined unit whose name includes the prefix character. 3: Dictionary 345 | ORDER CLUSR MEM The USER menu contains, in addition to the three “permanent” en- tries ORDER, CLUSR, and MEM, an entry for each current user variable. User variables appear first in the menu, starting at the left with the most recently created variable. If there are more than six user variables, activates the first six; each press of T] activates a successive group of si 43, @&{59, and #28 appear when is pressed while the last group of user variables is displayed, or when (§(PREV] is pressed while the first group is active. Pressing a USER menu key corresponding to a variable causes the as- sociated variable name to be evaluated in immediate entry mode, or appended to the command line in algebraic or alpha entry mode. The menu-key labels are derived from the user variable names. A la- bel will show the leading characters from the corresponding variable name, as many as will fit in the label display, up to five characters. A variable name may contain lower-case letters, but these will appear as upper case in the menu label. ORDER CLUSR MEM ORDER Order Command | Level 1 | tname,namen... } ® 346 3: Dictionary USER ORDER takes a list of variable names, and rearranges variable mem- ory so that the variables will appear in the user menu in the same order as specified in the list. Those variables named in the list are moved to the start of the user menu. Variables not in the list remain in their current order, following the variables named in the list. CLUSR Clear User Memory Command . CLUSR purges all current variables. To prevent accidental execution, pressing always executes ENTER and puts CLUSR in the com- mand line. Then you can press [ENTER] to execute CLUSR. MEM Memory Command MEM returns the number of bytes of currently unused memory. The number returned by MEM should be used only as a rough indicator of available memory, since the amount of memory used by the calcu- lator can vary depending on current and pending operations that may not be directly visible. The recovery mechanisms associated with (ELCOMMAND), M§(UNDO), and (MAST), for example, can consume or release substantial amounts of memory when any operations are executed. 3: Dictionary 347 A This appendix lists all error and status messages given by the HP-28C. Messages are normally displayed in display line 1 and disap- pear at the next keystroke. (Solver qualifying messages are shown in line 2.) Messages noted as status messages are for your information, and do not indicate error conditions. Messages noted as math exceptions will not appear if the corresponding exception error flag is clear. (Math exceptions are described in “Fundamentals.”) Messages Listed Alphabetically Error Number Message Meaning Hex Decimal Bad Argument Type 202 514 A command required a different argument object type. Bad Argument Value 203 515 An argument value was out of the range of oper- ation of a command. Bad Guess(es) AO1 2561 The guess or guesses supplied to the Solver or ROOT caused invalid re- sults when the current equation was evaluated Can't Edit CHR(0) 102 258 An attempt was made to edit a string containing character 0. Messages 349 Messages Listed Alphabetically (Continued) Message Error Number Hex Circular Reference Command Stack Disabled Constant? Constant Equation Extremum HALT not Allowed Improper User Function Inconsistent Units 129 T 07 125 A02 Status Status 121 103 BOo2 293 2562 289 259 2818 An attempt was made to store an object in a vari- able, using the Solver menu, when the object refers to the variable di- rectly or indirectly. WELCOMMAND] was pressed while COM- MAND was disabled. The current equation re- turned the same value at every point sampled by the root-finder. The current equation re- turned the same value for every point within the specified range sampled by DRAW. The result returned by the Solver is an extre- mum rather than a root. DRAW or the Solver en- countered a HALT command in the program EQ. An attempt was made to evaluate an improper user-defined function. Refer to “Programs” for correct syntax. CONVERT was executed with unit strings of differ- ent dimensionality. 350 = A: Messages Messages Listed Alphabetically (Continued) Message Error Number Hex Decimal Infinite Resuit Insufficient Memory Insufficient Data Interrupted Invalid Dimension Invalid PPAR Invalid Unit String Invalid DAT Invalid SPAR LAST Disabled Low Memory! 305 001 603 Status 501 11E BOo1 604 205 Status 773 001 1539 1281 286 2817 1537 1540 Math exception. A cal- culation returned an infinite result, such as 1/0 or LN(O). There was not enough free memory to execute an operation. A statistics command was executed when DAT did not contain enough data points for the calculation. The Solver was inter- rupted by the [ON] key. An array argument had the wrong dimensionality. DRAW or DRW* encoun- tered an invalid entry in PPAR. CONVERT was executed with an invalid unit string. A statistics command was executed with an invatid object stored in Sy PAR is the wrong object type or contains an invalid or missing entry in its list. LAST was executed with flag 31 clear. Indicates fewer than 128 bytes of free memory remain. A: Messages 351 Messages Listed Alphabetically (Continued) Error Number Hex Decimal Memory Lost Negative Underflow No Current Equation Nonexistent SDAT Non-real Result No Room for UNDO No Room to ENTER No Room to Show Stack name, Not in Equation 005 302 104 602 VIF 101 105 Status Status 005 770 260 1538 287 257 HP-28C memory has been reset. Math exception. A cal- culation returned a negative, non-zero result greater than —MINR. SOLVR or DRAW was executed with a nonexis- tent variable EQ. A statistics command was executed with a non- existent variable =DAT. A procedure returned a result other than a real number, which was re- quired for the Solver, ROOT, DRAW, or J. There was not enough free memory to save a copy of the stack. UNDO is automatically disabled. There was not enough memory to process the command line. There is not enough memory for the normal stack display. DRAW was executed when the independent variable name, in PPAR did not exist in the cur- rent equation. This message is followed by either Constant Equa- tion or Using name. 352 A: Messages Messages Listed Alphabetically (Continued) Error Number Out of Memory Overflow Positive Underflow Sign Reversal Syntax Error Too Few Arguments Unable to Isolate Undefined Local Name 303 301 Status 106 201 120 003 769 262 513 288 003 No free memory is avail- able for continued calculator operation. You must purge one or more objects to continue. Math exception. A cal- culation returned a result greater (in absolute value) than MAXR. Math exception. A cal- culation returned a positive, non-zero result less than MINR. The Solver was unable to find a point at which the current equation evalu- ates to zero, but did find two neighboring points at which the equation changed sign. An object in the com- mand line was entered in an invalid form. A command required more arguments than were available on the stack. The specifed name could not be isolated in the ex- pression. The name was either absent or con- tained in the argument of a function with no inverse. Attempted to evaluate a local name for which a corresponding local vari- able did not exist. A: Messages 353 Messages Listed Alphabetically (Continued) Undefined Name Undefined Result UNDO Disabled Using name Wrong Argument Count Zero Error Number Status 128 Status Decimal 296 Attempted to recall the value of an undefined (formal) variable. A function was executed with arguments that lead to a mathematically un- defined result, such as 0/0, or LNP1(x) for x<—1 was pressed while UNDO was disabled. DRAW has selected the independent variable name. A user-defined function was evaluated in an ex- pression, with the wrong number of arguments in parentheses. The Solver found a value for the unknown variable at which the current equation evaluated to 0. 354 =A: Messages ~~ swvevwvewvewereweweqgeseewd ues rreOeeensesr rere sa’ —5— ere ss cUMSSUeP Error Messages Listed by Error Number r Hex | Decimal Message Errors Resulting From General Operations 001 001 Insufficient Memory 003 003 Undefined Local Name 005 005 Memory Lost 101 257 No Room for UNDO 102-258 Can't Edit CHR(0) 103 259 Improper User Function 104-260 No Current Equation 105 261 No Room to ENTER 106 96.262 Syntax Error WE 286 Invalid PPAR V1F (287 Non-real Result 120 288 Unable to Isolate 121 289 HALT not Allowed 124 292 UNDO Disabled 125 293 Command Stack Disabled 128 296 Wrong Argument Count 129 297 Circular Reference Errors Resulting From Stack Operations 201 513 Too Few Arguments 202 514 Bad Argument Type 203 515 Bad Argument Value 204 «516 Undefined Name 205 517 LAST Disabled Errors Resulting From Real Number Operations 301 769 Positive Underflow 302 770 Negative Underflow 303.771 Overflow 304-772 Undefined Result 305 773 Infinite Result A: Messages 355 Error Messages Listed by Error Number (Continued) Hex | Decimal Message Errors Resulting From Array Operations 501 1281 Invalid Dimension Errors Resulting From Statistics Operations 601 1537 Invalid SDAT 602 1538 Nonexistent SDAT 603 1539 insufficient = Data 604 1540 Invalid SPAR Errors Resulting From the Root-finder A01 2561 Bad Guess(es) A02 2562 Constant? Errors Resulting From Unit Conversion BO1 92817 Invalid Unit String BO2 2818 Inconsistent Units 356 A: Messages Notes for HP RPN Calculator Users Starting with the HP-35 in 1972, Hewlett-Packard has developed a series of handheld scientific and business calculators based upon the RPN stack interface. Although there are many differences in the ca- pabilities and applications of these various calculators, they all share a common implementation of the basic stack interface, which makes it easy for a user accustomed to one calculator to learn to use any of the others. The HP-28C also uses a stack and RPN logic as the central themes of its user interface. However, the four-level stack and fixed register structure of the previous calculators is inadequate to support the mul- tiple object types and symbolic mathematical capability of the HP-28C. Thus while the HP-28C is a natural evolution of the “origi- nal” RPN interface, there are sufficient differences between the HP-28C and its predecessors to require a little “getting used to” if you are accustomed to other RPN calculators. In this appendix, we will highlight the major differences. The Dynamic Stack The most dramatic difference in the basic interface of the HP-28C compared with previous HP RPN calculators is the size of the stack. The other calculators feature a fixed, four-level stack consisting of the X-, Y-, Z- and T-registers, augmented by a single LAST X, or L-regis- ter. This stack is always “full’—even when you “clear” the stack, all you are doing is filling the stack with zeros. B: Notes for HP RPN Calculator Users 357 The HP-28C has no fixed size to its stack. As you enter new objects onto the stack, new levels are dynamically created as they are needed. When you remove objects from the stack, the stack shrinks, even to the point where the stack is empty. Thus the HP-28C can generate a Too Few Arguments error that previous HP RPN calculators could not. The dynamic versus fixed stack implementation gives rise to the fol- lowing specific differences between the HP-28C and fixed-stack calculators: Numbered levels. The indefinite size of the HP-28C stack makes the X Y Z T stack level names inappropriate—instead, the levels are numbered. Thus level 1 is analogous to the X-register, 2 to Y, 3 to Z, and 4 to T. The key labels 1/x and x? were preserved on the HP-28C for the sake of familiarity—they make the keys more visible than their actual command names INV and SQ, respectively. However, the RPN fixture X<>Y has been renamed SWAP on the HP-28C. Stack Manipulation. The HP-28C requires a more general set of stack manipulation commands than the fixed-stack calculators. Rt and R#, for example, are replaced by ROLL and ROLLD, respectively, each of which require an additional argument to specify how many stack levels to roll. The STACK menu contains several stack manipu- lation commands that do not exist on the fixed-stack calculators. No Automatic Replication of the T-register. On fixed-stack calcu- lators, the contents of the T-register are duplicated into the Z-register whenever the stack “drops” (that is, when a number is removed from the stack). This provides a convenient means for constant multiplica- tion—you can fill the stack with copies of a constant, then multiply it by a series of numbers by entering each number, pressing {x], then (Clx] after you have recorded each result. You can’t do this on the HP-28C—but it is easy to create a program of the form « 12345 * » 'MULT' STO where 12345 represents a typical constant. Then all you have to do is press [USER], enter a number and press gyi, enter a new number and press §jji{aig again, and so on, to perform constant multiplication. You can leave successive results on the stack. 358 _B: Notes for HP RPN Calculator Users Stack Memory. A dynamic stack has the advantage that you can use as many levels as you need for any calculation, without worrying about losing objects “off the top” as you enter new ones. This also has the disadvantage that you can tie up a significant amount of memory with old objects, if you leave them on the stack after you are finished with a calculation. With the HP-28C, you should get in the habit of discarding unneeded objects from the stack. DROP Versus CLX. In fixed-stack calculators, CLX means “replace the contents of the X-register with 0, and disable stack lift” (see be- low). Its primary purpose is to throw away an old number, prior to replacing it with a new one—but you can also use it as a means to enter 0. On the HP-28C, CLX is replaced by DROP, which does what its name implies—it drops the object in level 1 from the stack, and the rest of the stack drops down to fill in. No extraneous 0 is entered. Similarly, CLEAR drops all objects from the stack, instead of replacing them with zeros as does its fixed-stack counterpart CLST (CLEAR STACK). Stack-Lift Disable and ENTER Certain commands on fixed-stack calculators (ENTERt, CLX, 5+, =~) exhibit a peculiar feature called stack-lift disable. That is, after any of these commands is executed, the next number entered onto the stack replaces the current contents of the X-register, rather than push- ing it into the Y-register. This feature is entirely absent on the HP-28C. New objects entered onto the stack always push the previous stack objects up to higher levels. The X-register and ENTER on fixed-stack calculators play dual roles that are derived more from the single-line display of the calculators than from the stack structure. The X-register acts as an input register as well as an ordinary stack register—when you key in a number, the digits are created in the X-register, until a non-digit key terminates entry. The (ENTER#] key is provided for separating two consecutive number entries. But in addition to terminating digit entry, the (ENTER? } key also copies the contents of the X-register into Y, and dis- ables stack lift. B: Notes for HP RPN Calculator Users 359 On the HP-28C each of these dual roles is separated—there is no stack lift disable. A command line completely distinct from level 1 (the “X-register”) is used for command entry. ENTER is used only to Process the contents of the command line—it does not duplicate the contents of level 1. Note, however, that the (ENTER) key will execute DUP (which copies level 1 into level 2) if no command line is present. This feature of (ENTER) is provided partly for the sake of similarity to previous calculators. Prefix Versus Postfix HP-28C commands use a strict postfix syntax. That is, all commands using arguments require that those arguments be present on the stack before the command is executed. This departs from the convention used by previous RPN calculators, in which arguments specifying a register number, a flag number, and so on, are not entered on the stack but are entered after the command itself—for example, STO 25, TONE 1, CF 03, and so on. This latter method has the advantage of saving a stack level, but the disadvantage of requiring an inflexible format—STO on the HP-41, for example, must always be followed by a two-digit register number. Similar operations of the HP-28C are closer in style to indirect opera- tions on the fixed-stack calculators, where you can use an i-register (or any register, in the case of the HP-41) to specify the register, flag number, and so on, addressed by a command. You can view STO, RCL, and so on, on the HP-28C as using level 1 as an i-register. RCL, for example, means “recall the contents of the variable (‘register’) named in level 1”— equivalent to RCL IND X on the HP-41. You should be aware also that most HP-28C commands remove their arguments from the stack. If you execute, for example, 123 ‘Xx’ STO, the 123 and the ‘X’ disappear from the stack. Without this behavior, the stack would be overloaded with “old” arguments. If you want to keep the 123 on the stack, you should execute 123 DUP ‘x’ STO. 360 ~=—B: Notes for HP RPN Calculator Users Se Meee eee eer eee eee Te Ee rae ae Registers Versus Variables Fixed-stack calculators can deal efficiently only with real, floating- point numbers for which the fixed, seven-byte register structure of the stack and numbered data register memory is suitable (the HP-41 in- troduced a primitive alpha data object constrained to the seven-byte format). The HP-28C replaces numbered data registers with named variables. Variables, in addition to having a flexible structure so that they can accomodate different object types, have names that can help you remember their contents more readily than can register numbers. If you want to duplicate numbered registers on the HP-28C, you can use a vector: £58 3 @ CON 'REG' STO creates a vector with 50 elements initialized to 0; « 1 9LIST 'REG' SWAP GET * 'NRCL' STO creates a program NRCL that recalls the nth element from the vector, where n is a number in level 1; « 1 SLIST 'REG' SWAP ROT PUT ® 'NSTO' STO creates the analogous store program NSTO. B: Notes for HP RPN Calculator Users 361 LASTX Versus LAST The LASTX command on fixed-stack calculators returns the contents of the LASTX (or L) register, which contains the last value used from the X-register. This concept is generalized on the HP-28C to the LAST command, which returns the last one, two, or three arguments taken from the stack by a command (no command uses more than three arguments). Thus 1 2 + LASTX returns 3 and 2 to the stack on a fixed-stack calculator, but 1 2 + LAST returns 3, 1, and 2 to the stack on the HP-28C. Although the HP-28C LAST is more flexible than its LASTX predeces- sor, you should keep in mind that more HP-28C commands use arguments from the stack than their fixed-stack calculator counter- parts. This means that the LAST arguments are updated more frequently, and even such commands as DROP or ROLL will replace the LAST arguments. Remember also that UNDO can replace the entire stack, which for simple error recovery may be preferable to LAST. 362 B: Notes for HP RPN Calculator Users Cc Notes for Algebraic Calculator Users Many calculators, including the great majority of simple, “four-func- tion” calculators, use variations of the algebraic calculator interface. The name derives from the feature that the keystroke sequences used for simple calculations closely parallel the way in which the calcula- tion is specified in algebraic expressions “on paper.” That is, to evaluate 1 + 2 ~ 3, you press G4) GJ] @)G) G) &). This interface works nicely for expressions containing numbers and operators—functions like +, —, x, and / that are written in infix notation between their arguments. More sophisticated calculators al- low you to enter parentheses to specify precedence (the order of operations). However, the introduction of prefix functions, like SIN, LOG, and so on, leads to two different variations: ®™ Ordinary algebraic calculators use a combination of styles—infix operators remain infix, but prefix functions are entered in a postfix style (like RPN calculators). For example, 1 + SIN(23) is entered as 1] 4) 2) (3) (SIN) ©). This approach has the advantages of being able to show intermediate results, and of preserving single-key evaluations of prefix functions (that is, without parentheses), but the disadvantage of losing the correspondence with ordinary math- ematical notation that is the primary advantage of the algebraic interface. Cc: Notes for Algebraic Calculator Users 363 @ “Direct formula entry” calculators, and BASIC language computers that have an immediate-execute mode, allow you to key in an en- tire expression in its ordinary algebraic form, then compute the result when you press a termination key (variously labeled [ENTER], (ENDLINE], [RETURN], and so on). This approach has the advantage of preserving the correspondence between written expressions and keystrokes, but usually the disadvantage of providing no intermedi- ate results. (The HP-71B CALC mode is an exception.) You have to know the full form of an expression before you start to enter it—it is difficult to “work your way through a problem,” varying the cal- culation according to intermediate results. Getting Used to the HP-28C HP-28C operating logic is based on a mathematical logic known as “Polish Notation,” developed by the Polish logician Jan Lukasiweicz (Wookashye'veech) (1878-1956). Conventional algebraic notation places arithmetic operators between the relevant numbers or variables when evaluating algebraic expressions. Lukasiweicz’s notation speci- fies the operators before the variables. A variation of this logic specifies the operators after the variables—this is termed “Reverse Pol- ish Notation,” or “RPN” for short. The basic idea of RPN is that you enter numbers or other objects into the calculator first, then execute a command that acts on those entries (called “arguments”). The “stack” is just the sequence of objects wait- ing to be used. Most commands return their results to the stack, where they can then be used as arguments for subsequent operations. The HP-28C uses an RPN stack interface because it provides the nec- essary flexibility to support the wide variety of HP-28C mathematical capabilities in a uniform manner. All calculator operations, including those that can not be expressed as algebraic expressions, are per- formed in the same manner—arguments from the stack, results to the stack 364 Notes for Algebraic Calculator Users Nevertheless, using the RPN stack for simple arithmetic is most likely the biggest stumbling block for algebraic calculator users trying to learn to use RPN calculators. RPN is very efficient, but it does require you mentally to rearrange an expression before you can calculate re- sults. But the HP-28C’s capability of interpreting algebraic expressions without translation should make the transition from algebraic calcu- lator use more straightforward than has been possible on previous RPN calculators. The four-line display can also help to take away some of the mystery of the stack, by showing you the contents of up to four levels at a time. For the purpose of evaluating algebraic expressions, the HP-28C is essentially a “direct formula entry” calculator. That is, to evaluate an algebraic expression, all you have to do is precede it with a(¢], key in the expression in its algebraic form, including infix operators, prefix functions, and parentheses, and then press (E' to see the result. You can use this method even for simple arithmetic: 70)4) 2) EC) @ Eva) returns 0. Except for the preceding [*], these are the same keystrokes you would use on a simple algebraic calculator, where you substitute L} for a Don’t confuse the HP-28C [=] key with that found on algebraic calculators—on the HP-28C, [=] is used for the Note sole purpose of creating algebraic equations (described in “ALGEBRA’). C: Notes for Algebraic Calculator Users 365 When you use the HP-28C as a “direct formula entry calculator,” each result that you compute is retained on the stack, which takes on the role of a “history stack.” This allows you to save old results indefi- nitely for reuse later. It also allows you to break up large calculations into smaller ones, keeping each partial result on the stack and then combining the results when they are all available. (When carried to the extreme, this is the essence of RPN arithmetic). The stack provides a much easier-to-use and more powerful history stack than the single “result” function available on algebraic or BASIC calculators. A key feature of the HP-28C is that you really don’t need to concern yourself over whether RPN logic is better or worse than algebraic logic. You can choose the logic that is best suited for the problem at hand, and intermix algebraic expressions with RPN manipulations. 366 C: Notes for Algebraic Calculator Users Glossary accuracy: For numerical integration, the numerical accuracy of the integrand, which determines the sampling intervals for computation of the integral. algebraic: Short for algebraic object. algebraic object: A procedure, entered and displayed between ' ‘ delimiters, containing numbers, variables, operators, and functions combined in algebraic syntax to represent a mathematical expression or equation, algebraic entry mode: The entry mode in which a key correspond- ing to a function appends its function name and a left parenthesis (if applicable) to the command line. Keys corresponding to other com- mands execute their commands immediately. algebraic syntax: The restrictions on a procedure, that (1) when evaluated, it takes no arguments from the stack and returns one re- sult, and (2) it can be subdivided into a hierarchy of subexpressions. These conditions are satisfied by all algebraic objects and some programs. alpha entry mode: The entry mode in which all keys corresponding to commands add their command names to the command line. analytic function: A function that can be differentiated or solved for its argument. annunciators: The icons at the top of the LCD display that indicate the states of certain calculator modes. Glossary 367 arbitrary integer: A variable n1, n2, and so on, that appears in the solution of an expression with multiple roots. Different roots are ob- tained by storing real integers into the variables. arbitrary sign: A variable s1, s2, and so on, that appears in the solu- tion of an expression with multiple roots. Different roots are obtained by storing +1 or —1 into the variables. argument: An object taken from the stack by an operation as its input. array: An object, defined by the C1 delimiters, that represents a real or complex matrix or vector. associate: To rearrange the order in which two functions are ap- plied to three arguments, without changing the value of an expression—for example, (a + b) + c is rearranged to a + (b + c). (In RPN form, a b + c + is rearranged to a bc + +.) base: The number base in which binary integers are displayed. The choices are binary (base 2), octal (base 8), decimal (base 10) and hexa- decimal (base 16). base unit: One of the seven units that are used as the basis for HP-28C unit conversions. The base units are the meter (length), kilo- gram (mass), second (time), ampere (electric current), kelvin (thermodynamic temperature), candela (luminous intensity) and mole (amount of substance). binary integer: An object identified by the delimiter #, which repre- sents an integer number with from 1 to 64 binary digits, displayed according to the current base. clause: A program sequence between two program structure com- mands, such as IF test-clause THEN then-clause END. clear: (1) To empty the stack (CLEAR). (2) To blank the display (CLLCD). (3) To assign the value 0 to a user flag (CF). 368 Glossary Se NE ND TE EES ee EEE Ea eee ese eee ee ero command: Any HP-28C operation that can be included in the defi- nition of a procedure or included by name in the command line. command line: The input string that contains non-immediate-exe- cute characters, numbers, objects, commands, and so on, that are entered from the keyboard. ENTER causes the command line string to be converted to a program and evaluated. command stack: Up to four previously entered command lines that are stored for future retrieval by COMMAND. commute: To interchange the two arguments of a function. complex array: An array in which the elements are complex numbers. complex number: An object delimited by <> symbols, consisting of two real numbers representing the real and imaginary parts of a com- plex number. conformable: For two arrays, having the correct dimensions for an arithmetic operation. contents: The object stored in a variable. Also referred to as the variable’s value. coordinate pair: A complex number object used to represent the co- ordinates of a point in two-dimensional space. The real part is the “horizontal” coordinate, and the imaginary part is the “vertical” coordinate. current equation: The procedure stored in the variable EQ, used as an implicit argument by DRAW and by the Solver. current statistics matrix: The matrix stored in the variable SDAT, containing the statistical data accumulated with 2+. Glossary 369 cursor: A display character that highlights a position on the display. (1) The command line cursor indicates where the next character will be entered into the command line. It varies its appearance to indicate the current entry mode. (2) The FORM cursor is an inverse-video highlight that identifies the selected subexpression. (3) The DRAW/DRWS cursor is a small cross that indicates the position of a point to be digitized. data object: An object that, when evaluated, returns itself to the stack. Includes real and complex numbers, arrays, strings, binary inte- gers, and lists. delimiter: A character that defines the beginning or end of the dis- play or command line form of an object: ', ", #, £, 1, £, % © 9, &, or ®. dependent variable: A variable whose value is computed from the values of other (independent) variables, rather than being set arbi- trarily. Refers also to the vertical coordinate in plots. digit: One of the characters 0-9, and, when referring to hexadecimal binary integers, one of the characters A-F. direct formula entry calculator: A calculator in which you perform numerical calculations by entering a complete formula in ordinary mathematical form, without obtaining intermediate results. distribute: To apply a function to the arguments of the + operator, before performing the addition: a x (b + c) distributes to (ax b)+(axo). domain: The range of values of an argument over which a function is defined. entry mode: The calculator mode that determines whether keys cause immediate command execution or just enter their command names into the command line. The entry mode can be immediate mode, algebraic mode, or alpha mode. equation: An algebraic object consisting of two expressions com- bined by a single equals sign (=). 370 = Glossary error: Any execution failure, caused by a mathematical error, argu- ment mismatch, low memory, and so on, that causes normal execution to halt with an error message display. evaluation: The fundamental calculator operation. (1) Evaluation of a data object returns the data object. (2) Evaluation of a name object returns the object stored in the associated variable and, if this object is a name or program, evaluates it. (3) Evaluation of a procedure object returns each object comprising the procedure and, if an object is a command or unquoted name, evaluates it. exception: A special type of mathematical error for which you can choose, by means of a user flag, whether the calculator returns a de- fault result or halts with an error message. execute: To evaluate a procedure object or some portion of a proce- dure, including HP-28C operations, which are procedure objects stored in ROM. exponent: The power of 10 included in the exponential notation representation of a floating-point number; specifically, the one-, two-, or three-digit signed number following the “E” in a number display. The exponent of x is IP (LOG (x). exponential notation: A representation of a number as a sign, a mantissa between 1 and 9.99999999999, and an exponent “E” fol- lowed by a signed three-digit integer. expression: An algebraic object that contains no equals sign (=). factor: Either of the arguments of * (multiply). false: A flag value represented by the real number 0. fixed-stack calculator: An RPN calculator with a fixed, (usually) four-level stack. flag: A real number used as an indicator to determine a true/false decision. The number 0 represents false; any other number, usually +1, represents frue. Glossary 371 formal variable: A variable that is named but does not exist, that is, has no value. function: An HP-28C operation that can be included in the defini- tion of an algebraic object. Various functions may take up to three arguments, but all return one result. function plot: A plot produced by DRAW, for which the current equation is evaluated at up to 137 values of a specified (independent) variable. hierarchy: The structure of a mathematical expression, which can be organized into a series of levels of subexpressions, each of which can be the argument of a function. HMS format: A real number format in which digits to the left of the radix mark represent integer hours (or degrees), the first two digits to the right of the radix represent minutes (arc or time), the next two digits integer seconds, and any remaining digits fractional seconds. independent variable: A variable whose value can be set arbitrarily rather than being computed from the values of the other variables. In plotting, the horizontal coordinate. In the Solver, a variable that doesn’t contain a procedure with names in its definition. infinite result: A mathematical exception resulting from an opera- tion that would return an infinite result, such as divide by zero. initial guess: One or more numbers supplied to the root-finder to specify the region in which a root is to be sought. intercept: The vertical coordinate value at which the straight line determined by a linear regression intersects the vertical (dependent variable) axis. inverse: (1) The reciprocal of a number or array. (2) A function, which when applied to a second function, returns the argument of the second function. Thus SIN is the inverse of ASIN. 372 = Glossary iterative refinement: A process of successive approximations to the solution of systems of equations. key buffer: A memory location that can hold up to 15 pending key codes, representing keys that have been pressed but not yet processed. level: (1) A position in the stack, capable of containing one object. (2) The position of a subexpression in an algebraic expression hierarchy. list: A data object, consisting of a collection of other objects. local name: A name object that names a local variable. Local names are a different object type (type 7) from ordinary names (type 6) Evaluation of a local name returns the contents of the associated local variable, unevaluated. local variable: A variable created by the command ~+ or FOR for temporary use within a program structure. The variable is automati- cally purged when the procedure has completed execution. machine singular: Describes a numerical value that is too large to be represented by an HP-28C floating-point number. mantissa: The portion of a number represented by the decimal part of its logarithm. Specifically, the part of the number to the left of the “E” when it is displayed in exponential notation. matrix: A two-dimensional array. memory reset: A system clear in which all calculator modes and memory locations are reset to their default contents, including clearing the stack, COMMAND stack, UNDO stack, LAST arguments, and user variable memory. menu: A collection of operations with common properties that are assigned, six at a time, to the menu keys. menu keys: The six unlabeled keys in the top row of the right-hand keyboard, the operation of which is determined by the active menu shown in the bottom display line. Glossary 373 menu selection key: Any key that activates a menu of operations that can be executed by pressing menu keys. message flag: An internal flag that determines whether the normal stack display is shown when all pending execution is complete. The message flag is set by errors and by commands that produce special displays. mode: A calculator state that affects the behavior of one or more op- erations other than through the explicit arguments of the operation name: An object that consists of a character sequence representing a variable name. (1) Evaluation of a name object returns the object stored in the associated variable and, if this object is a name or pro- gram, evaluates it. (2) Evaluation of a local name returns the object stored in the associated local variable. non-singular: The opposite of singular. number: A complex number or a real number. numeric mode: A mode in which the evaluation of functions causes repeated evaluation of their arguments until those arguments return numbers. numeric object. A real or complex number or array. object: The basic element of calculator operation. Data objects repre- sent quantities that have a simple “value;” name objects serve to name variables that contain other objects; and procedure objects represent sequences of objects and commands. operation: Any built-in HP-28C capability available to the user, in- cluding non-programmable keystrokes and programmable commands. operator: A function that is subject to special rules of precedence when included in an algebraic expression. overflow: A mathematical exception resulting from a calculation that returns a result too large to represent with a floating-point number. 374 = Glossary Parse: To convert a character string to a program consisting of the series of objects defined by the string. Usually applied to the action of ENTER on the command line. pixel: A single LCD picture element, or dot. plot parameters: The contents of the list variable PPAR, which de- termine the position and scaling of a plot and the name of the independent variable. Polish Notation: A mathematical notation in which all functions and operators are written in prefix form. In Polish Notation, “1 plus 2” is written as “+(1, 2)’. precedence: Rules that determine the order of operator execution in expressions where the omission of parentheses would otherwise make the order ambiguous. principal value: A particular choice among the multiple values of a mathematical relation or solution, chosen for its uniqueness or sim- plicity. For example, ASIN (.5) returns 30°, a principal value of the more general result (~1)" 30° + 180n°, where n is any integer. procedure: An object of the class that includes programs and algebraics, where evaluation of the object means to put each object comprising the procedure on the stack and, if the object is a command or an unquoted name, evaluate the object. program: A procedure object defined with RPN logic, identified by the delimiters « *. program structure: A set of commands that must follow a specific sequence within a program. Program clauses, delimited by the com- mands, that comprise logical units for decision making and branching. quadratic form: A second-order polynomial in a specified variable. qualifying message: A message displayed by the Solver to provide information about the result returned by the Solver. Glossary 375 radix mark: The punctuation that separates the integer and decimal fraction parts of a number. real array: An array object that contains only real number elements. real integer: A real number used as the argument for a command that deals with integer values. real number: An object consisting of a single real floating-point number, displayed in base 10. recall: To return the object stored in a variable. resolution: In a plot, the spacing of the points on the abscissa for which ordinate values are computed. Resolution 1 is every point, 2 is every other point, and so on. results: Objects returned to the stack by commands. Reverse Polish Notation: A modification of Polish Notation in which functions follow their arguments: 1 2 + means 1 plus 2. This mathematical notation corresponds to the calculator interface where functions take their arguments from a stack and return results to a stack. root: A value of a variable for which an expression has the value 0, or an equation is satisfied—both sides of the equation have the same value. row order: An ordering of the elements of an array, from left to right across each row, with successive rows following from top to bottom: RPN: Reverse Polish Notation. scatter plot: A plot of data points from the statistics matrix, pro- duced by DRW. 376 =©Glossary selected subexpression: The subexpression that is subject to the active menu of FORM operations, identified by the inverse video cursor that highlights the object defining the subexpression. set: To assign the value true, or non-zero, to a flag. simplification: To rewrite an algebraic expression in a form that pre- serves the original value of the expression, but appears simpler. Simplification may involve combining terms, or partially evaluating the expression. single step: To execute one object or structure in a program’s definition. singular: Refers to a mathematical quantity that evaluates to 0 at some point, or has derivatives that are 0, such that it can’t be evalu- ated or inverted without returning an infinite result. A singular matrix has determinant 0, so it can’t be inverted. slope: The slope of the straight line obtained from a linear regression. solution: Equivalent to root. solve: To find a root of an expression or equation. solver: The HP-28C system that builds a variables menu from the definition of the current equation, enabling you to store values for the variables and solve the equation for any of the variables. stack: The series of objects that are presented in a “last-in, first-out” stack, providing a uniform interface for dealing with the arguments and results of commands. stack diagram: A tabular summary of the arguments and results of a command, showing the nature and position of the arguments and results in the stack. status message: A message displayed by the calculator to inform you of some calculator status that is not an error condition. Glossary 377 storage arithmetic: Performing arithmetic operations on the con- tents of variables, without recalling the contents to the stack. string: An object containing a sequence of characters (letters, num- bers and other symbols), delimited by " marks. subexpression: A portion of an algebraic expression consisting of a number, name, or function and its arguments. Any subexpression can contain other subexpressions as arguments, and can itself be an argu- ment to another subexpression. summand: Either of the arguments of + (addition) suspended program: A program for which execution has been stopped by HALT, and which may be resumed by i or (CONT). symbolic: Representing a value by name or symbol rather than with an explicit numerical value. symbolic constant: Any of the five objects e, i, 7, MAXR, and MINR, which either evaluates to its numerical value or retains its symbolic form according to the states of flags 35 and 36. symbolic mode: The calculator mode in which functions of symbolic arguments return symbolic results. system halt: An initialization in which all pending operations are stopped and the stack is cleared test: To make a program branch decision based upon the value of a flag. true: A flag value represented by a real number of value other than 0. When a command returns a true flag, it is represented by the num- ber 1. underflow: A mathematical exception resulting from a calculation that returns a non-zero result too small to represent with a floating- point number, 378 = =©Glossary unit conversion: A multiplication of a real number by a conversion factor determined by the values of two unit strings representing “old” and “new” units for the number. unit string: A string that represents the physical units associated with a real number value. A unit string can contain unit names, pow- ers, products, and one ratio. unknown: The variable for which the Solver, ROOT, QUAD, or ISOL attempts to find a numerical or symbolic root. user flag: A one-bit memory location, the value of which can be set to 0 or 1, and which can be tested. The HP-28C contains 64 user flags, numbered from 1 through 64. user interface: The procedures, keystrokes, displays, and so on, whereby a user interacts with a calculator. user memory: The region of memory where user variables are stored. value: The numerical, symbolic, or logical content of an object. When referring to variables, value means the object that is stored in the variable. variable: A combination of a name object (the variable name) and any other object (the variable value) that are stored in memory together. variables menu: The menu created by the Solver, where each vari- able referred to by the current equation is represented by a menu key. vector: A one-dimensional array. wordsize: The number of bits to which the results of binary integer commands are truncated. Glossary 379 Operation Index This index contains basic information and references for all operations in the HP-28C. For each operation this index shows the following: Name. For operations, the key or menu label associated with the op- eration. For commands, how the command appears in the command line. Description. What the operation does. Type. Where you can use the operation and how its corresponding key acts. This information is given in the following codes. Code Description A Analytic Function. Can be solved or differentiated. F Function. Can be included in algebraic objects or programs. Cc Command. Can be included in programs but not algebraics. ° Operation. Cannot be included in the command line or in a procedure. . The corresponding key or menu key does not perform ENTER in immediate entry mode. t The corresponding key or menu key always adds the command name to the command line. In. How many objects are required on the stack. (This entry is left blank for operations that don’t use the stack.) Out. How many objects are returned to the stack. (This entry is left blank for operations that don’t use the stack.) Where. Where the command is described in this manual. Operation Index 381 ABORT $901 8h ‘ ‘ v ‘auls ayjoquedAy uy HNISV ze OIL L b v “auls oly NiSv “sjoalgo vib AvuuY | L+u L 9 | yes ajeredas se sjuawiaja sy yim Aeue ue seoeday “AMY 90L AVY 0 NuawW AVHYY a4} S193\ag Aveuv 62 Sldl SOL X31dWOO L L 4 “uewnbiy ou 892 ASaL WYY90ud eel AMWNIG L z 4 ‘ONY Aueuig 40 je91607 aNy eb $901 L ‘ Vv (uamod eB 0} O14) wyeGoUY 901v 6s vugao1v +0 nuew yYasOTy om sioaiag | [VEEsOTV IM 68 (wHo4) vuaao1V .0 suonoeyy SpPY are Sel spoT L I Vv ‘auisoo oyoquedAy aay HSOOV yee OldL L L Vv “auISOD dy sooyv 692 wad Sol X31dWO9 S2t AvaHV ‘ b J ‘anjea aynjosqy sav 9¥2 OHNO WWHOOUd 0 0 9 -uonoaxe wesboid syoqy 14uoay 104M mo} uw | adkL uondusseg owen xepul u0ije49dQ 98Z-dH Operation Index 382 CLEAR 46z ee LIE 9S2 602 tLe gsh GEL cee ot eh 6re 2 802 es 98h See Leb MOWLS seg ONIDLS: S31 WVH9OYd LO1d Wau SO1WLWS AYWNIS HONWYS WY¥Yd9O0ud AYWNIG AYWNIG TOHLNOD WYYH9OUd (Wao) vuaso1V 101d o1seg $901 Old AYVNIG. roo “yoRIS OU) SUBBID ‘O3N sainoaxe 40 aul] pUeWWOD ay) UI JaquNU e Jo UBIs ay) sabueUD Bunys 18)9eseYd-aUO B Sexe “Bey sasn eB suea|Q. ‘Ae\dsip yojd jo 4a]U90 sag yaGaqu! 19)8016 xan “Boyejeo puewwod ay} syeIS UOIS1@AUOO |21-0)-AeUIg “nua HONVYS WVHDOUd 3} S}9|eS, NueW AYWNIG Sul $199|8S aseq Aieuig seg ‘deaq e spunog 16 ayy 0} sayeoossy “Saxe JO UONDESIAIUI S}9g ‘sheldsip joid ‘WHOS ‘s6oyeyeo sy -X@ ‘aul PUBWWWCD ay} suea|o ‘uoNNIexa WeiBoud soqy “juaBue) ooqueadAy ay uabue} uy qu6u yius onewuuy Yvato SHO wHO 40 YIN3O 1380 DSow.1vo | ued HONVUS | (ane) Nig 433@ Lv | Sax ((No}) (tv) HNVLY NYY ySv 383 Operation Index CLLCD oye €9l 82h 42h ey 20e Lhe 08 WL get gh 662 Lee ose ple 6r2 Ze TOXLNOD WYHDOHd ° “weiBoud payey e sanuljuog INOO|M X31dWOO AVEYY IL 1 4 -ayeBnluoo xajdwiog Noo AvVddv | | ‘0 @ 9 “XUJEW JURJSUOD B Sa}BA1D NOO aul) puew orseg © | -woo ay; 0} yoRIs puewWOD a4} Woy Asjua ue serow | [ONVWWOO | AWLS 101d 0 z ° “SUWINJOD XUTBW SONSHEIS $}99Iag 5109 (WxO4) VHasO1V Re) uolssaudxagns @ Ul Swe} a1] $193)|09 Seeney vuaao1Vv L t 9 “SULO} OH!) SIO3]}OD 19109 AVE \ L ° “wu0U UWN|OO e sajndwog: WYNO X31dW09 re) “nus XIIdWOD su} s99jag x7aN0 | iwis 0 0 9 “xuyeW soysneys au) sabing 510 yasn 0 0 49 “SO|QRURA JASN |B S1e3|D ysNTo TOYLNOD WvH9O"d LO1d 0 0 9 “Bey abessew waysks ay) ssBaiQ 419 OYWLNOD Wye90"d LO1d 0 0 9° ‘Aeidsip ayy syuetg aon 248UM mo up | eda uondiusseg eaweN (panujuod) xepuy uoNesedQ 98Z7-dH Operation Index 384 DET Seb v6E 6 £02 6e 46h eb teh 8ze 2ab dé ere vel 222 vOE S8h vee e0e cee AVYYY MOWLS ose 101d oseg GOW AYYNIG sninoje Old X31dWOO AVY OYLNOD WVHOOHd AVY ANd AvLS $907 OWL ivis SLINN an ooo con 0 oO + 0 oo«< c 000 xujeu B JO jUeUILIEIEG yORIS BY} UO s}oalqo ayy s}uNOD qy6u @Y) 0} Sua}oBIeYO |B PUe JOSIND ye JaJOBIBYD Sa}9|eq uiod sazni6ip ‘sosno ye sjoRJeyo sareieq -apow saaibap siag ‘aseq [ewioap slag (uonoun, 9) aayeauag UOIS9AUOD |2a1-0}-Ka|dWOD nuewW JOHLNOD WYYDOdd 84) Si998|8S *S10]09A JuawWa|a-aalU) JO JoNpo1d-sso1g, yy6u-abelues e sjUd aOURLIENOD ‘aulsod oyoquedAy ‘@uIsop JUBIDYJ9OI UONE|SLOD UOISIBAUOD WUN B SWOJAd 13a H1d30 730)8 YO. AO0O HSOO soo YHOO LHaANOD 385 x o 3 = © 3 = 6 & 3 a ° DINV £8 (WHO4) Vusa91V 0 “quBu ayy 0} sainquisiq ew 262 HOVLS v @ 2 “yoRJs ey} UO sjoaigo om} sayeoydng zana 62 wOWLS | UZ | btu 9 “yok}s ay} UO syoalgo u seyeo!|dng Nana 162 OWLS @ L 0 “yoR}s ay} UO Joalqo auO sayeoydng dna zz oid 0 0 9 yod seyeos sonsHes & sayea19 Mya 262 MOVLS 0 @ ° “yOR}S ay} WO. S}oalqo OM} sdosq z2dOud 62 OWLS oO} itu 9 “yORIS ay) WO, syoalgo |+u sdoiq NdOwa 062 MOVLS 0 L o “yORIS OY] WO, y9algo auo sdoug doua ele 101d 0 0 ° “sexe SMeIG. xXvua 902 LO1d 0 0 ° “od uoHoUN; jeoneweyyeW e seyeeiD, MyHa vel Wad \ z o “S10}08A OM) JO JoNposd 10g loa €€2 =HONVYE WYHDOUd 40 “ON3"* TILNN' "OG $0 Wed oa se (WHO) vuaao1Vv me) “sayeBeu aiqnog ENS 0ze ONIDLS: 0S% OYLNOD WYYDOUd ele LO1d 0 @ ° ‘yoalqo ue shejdsiq dsia 98 (wuo4) vuaao1Vv 0 “syenut 9jgnoq eure 104M wo up | eda, uondusseg owen (penujuod) xepuy uoResedQ 98z7-dH Operation Index 386 EXPAN 08 el 28h 08 gL oy 4g% 1Ge or t6L £€% 2Et 22% ee ly 992 OL lee (wuOs) Vuaao1V Vvudao1V s901 (wuos) vuaaoqv vugso1V oseg TOYLNOD Wve90ud TOHLNOD WVHDOud o1seg 300N HONVHE WVHDOud HONVYE WVH9OUd o1seg oseq Wad vuaaov OWL oo 0 < 0 ooo 0 oO 49 4o 0 44 “uolssoudxaqns eB spuedxy -oreuqabye ue spuedx3, jeluauodxa jenjen, “uoissaudxaqns & sia ‘uoissaudxagns & sjaQ ‘yoalgo ue sayenjeaz yEqUINU J0U8 \Se] BU) SUUMAY abessaw Joe Se] ey) SUIMEY “and $9]NDOXA JO Bul] PUBWWOD ay) SayeNjeAs pue sasied “yewio} Aejdsip Buuseulbua sjas_ “saanjonujs wesboid spu3 -asnejo 3973 sulbeg “aul| PUBWWOD UI JUaUOdxXa S18}UZ Bunipa 404 aul] PUBLUWIOD 4} 0} | J8Aa| UI JOalgo ayy saidoD “a JueySUOD d1}OqWAS “UOISJ9AUOD SUBIPEL-O}-See.69q ORESE! NvdXa axa £33553] 139X3 waa Nuua wuya FEMME] ‘ONS N23 3s13 x33 dag a a SL ne a _ EXPM 9s2 be aL vl eee be 68L Loh 9ee Lge 9g2 192 68 68 SL Ble eet isa. WYY90ud \ \ 9 Gel) sasn e sisay éS4 Wad L L d “ed jeuonoely dd (Wyo) vua3zo1v vuda3o1V | €'L L 2 ‘oreugaBle ue yo wo) ayy sabueyo WyO4 HONWHE WYH9Oud 0 z to doo} ayuyap suibeg wO4 Wad L ‘ d ‘yeBelUul Jaws 1x8 4OO14 3q0W 0 \ 9 yew} Aeidsip x14 s18g Xid S.LINA Sul] PUBWWOD ay} Ul JUN JO SOTO .Q | PueWWOD jUaNd ey} SAUM “SLINN JO DOIWLWO siXa CarER ASAL WyYd50ud ‘ L o ‘Gey Jasn e sueejo pue sjsay 294 is3l WVH9Oud L L a ‘Gey uasn e sjsay 404 Wad ‘ L d “uonouny ewweb 10 jeu0}Oe4 Lov (WHO) VYaS91¥ 0 yonpoud-jo-samod WWM JaMod-jo-samod saoRidey (WHO) WHSS9TV 0 yamod-jo-amod yy Jonpoid-jo-zemod saoedey vuaso L & 9 uolssaidxagns e saimsang ansxa amos ‘ 0 ° “uolenba juaund ay} sayenjeag ere) $901 L L v “| snutw jenuauodxe jeimen WdXa 310UM ino ul adky uonduoseg oweN (penujuod) xepuy uoNesedQ 98z-dH Operation Index 388 INDEP 902 zl 82h be Lee eee aes eh oL oe Lee lee eeh ore BLL Sth 92h Ot 9Se 101d X31dWOO AVE HONVHE WVH9Oud HONVYS WWHDOud HONVYS WWYDOUd HONVYS WWY9OUd AVYEY vudao1v OIL Old OIL AYVNIG OYLNOD Wv8o0"d isn AVYYY isn AVOYY Asal Wv¥90ud oon m onan to 40 43 oO +9 eigeuen yuspuadepul Jojd ayy s}oajag_ ‘Aewe 40 Jaquinu 8 yo yed AueuBew! ay) suinjay uonouny asja-vay)-}| PUEWWOD UaY)-}] ‘asne}o YOUN 4| suibeg ‘asnejo 4] sulbeg xuyew Aiuap! ue sayee1D, 1 yuRysUOD aOquiAS “YEWO} SWH WO. sLiaAuog JEUWNO} SWH ul syengns yeWUO) SWH ul sppy ‘aseq Jewioapexay s}ag uoynoaxa wies6oid spuadsng “xepur dy} S}uawaroU! puke joalgo UP Woy jUaWala UP s}eD “yoalgo ue wWo1J Juawaja Ue sjaq. “Bey sasn eB suelo pue ssa d30Ni Wi sldi didi wuad! dl Nal ~SWH ~SWH +SWH X3H WH 1139 1a9 OeS4 INS tr £62 OWLS GLb isi] | btu ‘ o “yoR}S BY} 0} S]UBWa|@ }Si] S2AO/) -isn vlb isn 10 nuaw 1S eu sjoajeg. isnj@ 08 (wuos) vugao1V 0 ‘uoissaudxagns pajoajas ay) jo [ana] ayy sAeidsiq GEER 812 amos L 0 ° “uonenba juauino aly JO apis ye] ays SayeN|erz EERE? ee o1seg ,O | “Sapow aseo-samo] pue aseo-iaddn usamjag sayoumg € 6b aseg | 'Z ‘Lb 0 9 “sjuauinBue }Se| SUINaY asv1 2v@ TOULNOD WYHDOud 0 0 9 ‘swesBoud papuadsns j|2 suoqy mt 2v@ JOWLNOD WyH9Oud | 2 ‘E 0 9 Buus hay @ suiney Aa S82 3A10S 92 vudso1v L z ° “uonenba 40 uolssaudxa ue sanjos Jos 022 Wad L L J “ed sabeyuy ebb AVHYY ol ReWyy L 1 Vv (yeooudioa4) assanul 6e o1seg 0 JOSIN ay JO Ya] BY 0} S1BIOBIEYO [Ie SaI9jaQ £02 LO1d “quiod 6e oiseg | 1 ‘0 0 0 | seznibip ‘sepow aoeide: pue yuesu) usemjaq soyoyms. 2404M no up | edvy uondusseg owen ° (panujuoD) Xepuy uole13adQ D8zZ-dH 8 a z xuyeW = 20€ LWLS L 0 ° sonsieyS ay} Ul SANjeA ayeulpsood WNWIUIW a4} Spul4 NIW 892 Wad OL vudao1v ‘ 0 d jea4 wnulUIW }UB}SUdd o}OquIAS NIN, ele Wad L z 4 “suaqUINU OM} JO WUNWIUIW ay} SUNY NIN Lye yasn L 0 9 ‘Aiowauw aigeyene swnay waw 00€ vis t 0 o ‘sueaW |edlsiye}s sayndwog NvaW xuyeW 0c iwis L 0 © | sonsneis ay) ul sanjea eyeups00d wNwiKeW a4} Spul4 XV 892 Wad OL vugao1v L 0 d {ead WNWIXEL JUR}SUOD o}OquAS YXVW zz wad L z@ 4 Srequinu om) JO WNWIXeW ayy sUIN|eY xy 02 ‘Wad L L J uequNu e JO essUBW ay} SUIN}oY NVI 88 (wos) vuaao1v 0 “BoLyo-onpoid yim samod-4o-B0| soeidey ee 98 (wos) vus391V 0 uamod-4o-60) yy Go|-J0-onpoid sade\dey ey vor AWLS @ 0 9 uoissaiBa. saul) e sajndwo9, Ww tab s9o7 me) “nua SHO} ey} S}081eS So (8b s9o7 I ‘ v “wyjue6o| (91 aseq) uoWWwoD 901 eet s9o7 L L Vv “(1 +JuawinBse) jo wyueBo) jeameN LdN1 eet $901 \ ‘ Vv “wyyuebo; jeunyen N71 i im |i nl en 391 MOD “xe 662 Avis 1 9 SONSHEIS a4) U! Sjulod BYep Jo Jequinu ayy sUIMeY SN Le ONIWLS: t o “@poo JajEJeYO SUNY WwoN 092 isal WVH9OUd Ort AYVNIG L d “LON Aueuig 40 2016807 Lee ALNIHd 0 “apow aoe.) sajuud sajqesiq 2 oseg 10. ‘Aaowsy $0 YN BuuNp abind oj you esooyD. 8st S01VWLVD 0 "FOVSN ul uondo juewnbue \xeu 0} seoueapy gee SLINN 2st DOWLVO Re) Gojeyeo & UI JUN 10 puEWWOD yxaU 0} SaoURAPY ae 1S 0 “sjaqe| nuaw jo mos yxaU ay) skedsiq IXaN 86% HONVHE WWHDOUd 0 do doo) ajluyap spug iver 992 Way gol X31dWOO 621 AVY 01 oneWYY L Vv ‘quauinBue ue sayeGan 93N $8 (WHOS) WHaa91V 0 yojoe) 1yBu sebiey ee 28h 30OW 0 “nus 3GOW eu) s}999g 300N ele Wad ‘ d “OINPOW GoW e10UM no uondyuosag (penujuoD) xepuy uoe4edQ O8z-dH Operation Index 392 4 Ie 3 u 262 wOVLS & z 9 “% Jona] ul yoalgo ayy sayeoydnq Y3AO a ° ove wasn 0 L 9 Nuaw yasn ay) sabueueey 43040 x 892 Asal WYY90ud g 6el AMYNIG L z 4 WO Areuig 40 je01607 yO = €¢ oiseg me} “Yo s0yeINOe9 ey} SUN 330) 8 5 sg aiseg mo} "ysa} wajsks snonunuod sys > (No 3 Sg aiseg 0 38a} wajsAs SHES (a (NO é “yORIS ay} sieafo ‘saiqe 4S oseg 0 | -HeA je09] sueajo ‘uoNNdexa WeiGoid sdoyg (72H Wa}shS) Cy )[No eS oiseg 0 “ysesju0o Aejdsip ay) saseaiag E)(No) eg oseg 0 “ysequod Aejdsip ay) seseasdu| +)(NO sBey sasn sjasal ‘yORIS au) SuBajo ‘'sa|qeueA Jasn pue 9S aseg .O | (200) sueajo ‘uonnoexa WesBoid sdoig (lasay Aoway) <4)(SNIJ[NO. “paseajai SI og aiseg «0 | e0jaq passaid 4! ase Aiowaui 40 yey WasAs sjaoueD 730 )(NO “shejdsip iid ‘WHO ‘sBole}20 syxe ‘euy puewiUOD ay) s1B9I0 es oseg, 0 tuognoexe weiBoud syioge ‘uo s0}ZIngJeo ayy sun, | ([NILV]) (NO cel ABYNIG 0 0 oO “aseq [2100 S18 190 SL vusao1V 1 € 9 “olesqabje ue jul jalgo ue saynisqns ansgo QL vugsoIV I z 9 ‘oleqabje ue wo4 y9alqo ue s}oR.xZ, 13980 PICK 2ee ANIYd 961 acow 0 0 ° ‘S@pow JUIN SAe|dsIp puke Ss}uLig OWud 022 ANd le 101d 0 0 2 ‘Ae\dsip ayy jo aBew! ue siuid gold oie ANIWd 0 “nua INIHd eu) $}o3[ag, INted | gst Do IWLvO 0 AOVSN ul uondo juawinbue snoinaid ayy skeidsiq EEE gee SLINN Lgt 901WLVO .0 “Boyes & ul! YUN 40 pueWWOD snoinasd ay) sheldsiq Perey us Re) “sjaqe| nuaw jo moi snoinaud au) skeidsiq (aa S0e AWLS ‘ L o “ON|EA PaIPSd AQ3Yd 802 Lord L 0 9 ‘JsI| suejewesed jo|d ayy sijeoay IEEE oze ONINLS L z 9 ‘Bus & u) Buuisqns ue spulg 80d soz 101d 0 1 2 *S@JEUIPIO09 jo|d yJa|-18MO] BY} S}aS NIWd 902 101d 0 I ° “$ajeUIp009 jo}d yyBu-seddn ay) sjag XWWd 86h 101d 0 “NuswW LOTd a4} $}99/8g 101d) ele 101d 0 L ° lexid Aejdsip e uo suuny, TaXld 62 wows | btu | piu 9 yoalgo yyu ey) sayeordng WOld 270UM ino juoseq owen (panuyuod) xapuy uonesedQ 987-dH Operation Index 394 Quit 6SL £Sh gee 98z gL 92 vol alt dh SLL SUL Ly 812 022 cee ee 612 ere cee rAd S01WLVO SLINA SOTVLVD 3A10S vugso1V SldL X31dWOO isn AVY isn AVYYY oiseg ANIHd ANIdd ANIGd ANI8d ANISd sal WYYdO"d OYLNOD WYH9Oud HONVYa WYH9O"d coo eo oo Ss - ore ooo ° CO0000 000 3} ‘Keidsip 3DvSN sux3 “SLINN 40 DOTWLVO Six yelwoudjod oyespenb e serjos “uolsi@Auod JejNBUeIDAI-0}-12|0d ‘x@pul UY} JUaWSJU! PUR ‘}SI| 10 ABE UB O}UI JUBWAJe Ue INd “yst| 40 Aewe ue OjU! JUaWa|a UB }Ng “sajqeueA a10w 10 auo sabind “yoalqo 1 Jara ayy SJUig “a]QeUeA B JO SyUayUOD ay) SJUd “S9|eUeA JO 3SI| B S\uUd YEW} oedwWod UI y9R}S @Y) Sud “yOR}S BU) SIU “nuaW LSA WWYDOUd au} $}99/aS, “nua JOULNOD WYYDOUd 8} $}09|9S “nua HONVHE WYHDOUd 84} s}99/8¢ ae nit avnod ded ILAd ind aud hdd YWAYd usndd OLSYd iskd CsOe Guo | CGonvec al WVHDOud 395 Operation Index RAD €€2 HONVYS WyH9Oud 0 t 49 NS’ LW3d3H"** STIHM 40 Wed AWwad3¥ 792 way He) nuaw JW3Y ety sioajag Ovae eal X31dWOO Lh Ava L IL 4 ‘Aewe 40 Jaquinu xaidwioo @ jo yed yeas ayy suMjay 3H 892 wad 0 4 9 ‘pees Jaqunu wopues ay} s}ag Z04 961 3GOW Re} XIPEd BU} SB”. S}BS aa 96h 3Jaow .0 XIPEJ BU] SB”, S}Og ale ozl Avduy | 1 ‘0 z 2 ‘Aeue ue suoisuawipay way eel AWWNIG L 0 9 ‘azispiom saBaiu Aueurg sy) sijeoay SMOU 662 AWls Ole 101d L 0 o XU}BW SONSEIS JUBUND ay} SI|EIY 704 79e iS3L WYY90ud L 0 0 s6ey) sasn ay) Gunuesaidas saGajui Aseuig e suNay 4d10W 9v oseg L I 2 PAIEN|PAAUN ‘ajqeUBA e JO S]Ua]UOD ay} S|Ieday Ou Lle 3N10S g02 LOid L 0 oO uonenbe juaund ay} s\je99y 050" 192 Wad b 0 o vaquinu wopues e swunjeay ONVH 261 3GON 0 0 9) ‘@pow suRIpe! s}ag av 2104M ino uy edly uondussag owen (panujuog) xapuy uoNesedQ 98z-dH Operation Index 396 Old OIL X31dWOO WHY AQYNIG amos o° AVY AYWNIG AYYNIG OWLS aN10S OWLS MOVLS AVUYY Wad AMYNIG AMVNIG 101d eooou00000K00 00 “volsseauoo see/6ap-o}-sueipey “UOISJBAUOD xA\dWOS-01-(23y “uo|ssaauoo Areuig-0}-1294 “uonenbe juauno aly jo apis yy6u ayy sayenjeaz, “suoljenba JO wajsks & JO UONN|OS ay} 0} UOHDaI09 B sa;ndWwoD -ayAq auo Aq yybu sayejoy Iq auo Aq yy6u sayejoy “| [ana] 0} y0algo ¢ jena] ayy EAC, jauunu & spi “u [anal 0} yoalgo Z JaAg| Buy SBAOW, “L [2AQ] 0} yOa!go | +u jana] ayy SAC ‘Aeue Ue JO WIOU Mod ay} sayndwos ‘apow Aejdsip saquinu jee, 0} Buipsoo0e spunoy “aykq auo Aq ya] Saye}oy “yg auo Aq ya] sereIoy “uonnjoses jojd ey} s}eg 397 Operation Index ale SaYOLS 9 L 3 “a1QeUeA B JO SjUa]UOD ay} S}J@AU] ANS 8b s907 t L v “auls ayjoquedky HNIS eee Old L t Vv ‘aus NIS 692 Wad e9L xa1dWoo L 1 4 vyaquinu @ jo uBig NOIS 982 3M10S ‘oreuqaBye 92 vuasolv L 2 2 ue ui yordul aweu e 0} saduarajas |e SaAjosoy MOHS gz 1S4L WVHDOUd 0 L ° “Bey ssn e sjag 4s Loe ivis L 0 ° suoneIAap psepue}s sayndwog Aaas ele aYO1S 0 t o ‘aigeuen e Jo syuajuoo ayy saye6nluog fNoos eyep (201) le LO1d 0 0 O | -sileis au) 0) Bulpioooe suajawesed joj ay) sajeos-oiny 5710S O6L 300W 0 I 2 yewoy Aeidsip oyWUaI9s sjag 10S dst S.LINN gee SOTWIVO +0 | “SLINN 40 DOTWLYO YBno.W) AijeoneWorne seouRApY irs 092 4S31 WYHDOUd L @ 9 “Auyenba 40} syoalqgo omy sysop avs Lee Old 9h X31dW09 L 1 4 uoisisauoo 4e/0d-0}-2e|nBue}aY, d-¥ —t ——| 248UM nO up | ada uondusseg owen {panujuod) xepuy uoesedo 98Z-dH Operation Index 398 LL soz £ez sel 962 eee 062 She Leh 9eL elt Ol Ble gle Ze Let gel 12e Ost 6LL bl STEQ 3A10S 101d 0 HONVYS WYY9Oud 0 acOW lvls HONVYS WvY9Oud 0 MOWLS TOHINOD WYHDOUd AYVNIG ‘ AYWNI L AWYYY OnOWYyY L 3M0S 3A10S SdYOLS 0 ABWNIG L AYVNIG ' ONINLS: isn AVaY Vuaao1V t 40 oO re) 49 +0 uolenba juaund ay} S3i01S doo} ajiuyap spuz yeuo) Aejdsip puepuers sjag NuaW WLS Au) s199|9g doo) ayuyap suiéeg “NUaW YOVLS aul s}oaIeg -weifioid papuadsns e sdajs-ajbuis “aykq auo Aq qYBu syuS “yq auo Aq yy6u syiys “xuyew Jo Jaquinu eB sazenbs “NuaW! Se|qeueA JanjOg ayt s}99|ag Nuaw 3ATOS eu) si0aIeg “a|qeueA jo sjuajuod au} sayeHan “aihq auo Aq ya] sylUS ig auo Aq 149) SYIUS -oreuqaBje 40 ‘Buus ‘Aewe ‘js1] & JO SUOISUaWIP ay) SPUly O3LS d3LS als ivis]@ luvis ovis] ws gus YS os ESS (A108) D3NS as 1s azis 399 Operation Index sTOo ee ONIYLS 08h isn L € o Buujs 40 ysI| @ Jo uoNsod e s}oRNXZ ans eel ABYNIG 0 L ° “azispiom saBayul Aueuig ay) s}aS SMLS. sie ONIDLS: 0 L 2 | ‘Gunys e Aq pauyep spuewwoo ey} sayenjene pue sasueg +yH1S rie ONIHLS .0 Nuaw ONIHLS aul siajeg ONGIS) 662 lvls Ole LO1d 0 L sO “XLJEW SONSHEIS JUGN ay} S910} SOLS be aYuOLS 0 2 9 API onaUyIE aBe10IS /ols ole BYOLS 0 @ o yoragns oawyyue aBe10}g -OLls 60€ HOLS 0 z 9 “poe anawyue abeioisg +01S Le 3YOLS 0 @ 9 “Adyinw onewyue abesois *O1LS 60€ SYOLS 0 “Nua FYOLS 8u) $198]8S 3401S] igh S.INN gee DOTWLvO “SLINN 40 DOTWIVO YBnosy) BuUUeDs sdoys Ey ‘yaGauy 292 131 WYH9Oud 0 1 9 | Aueuiq e jo anjen ayy 0} Buipicooe sBey sasn je siag 4O1S ov oseg 0 Z| ° ‘@IQeURA B Ul algo Ue Se10}$ ols wo up | edAy 49S80q owen (panujuod) xepuy uoNesedg 98z-dH Operation Index 400 USER Ove dst eee cee BY £98 tab ace bee 00e cee ese ist 9L s8h 9Ze ey 062 ¥asn SO01WLV HONVYS WYH9Odd SIND aiseg sal WVH9O"d AVUYY Oldt ANIYd ivls HONWYS WYH9O"d sal WvdOud sningjeo vugao1v $901 SldL oiseg MOVLS .0 «0 40 re) 0 0 0 40 10 oo< <0 “nuaw YSN au) si9ajeg DOTWLYD Ul puewWoD Juauind 40) 3OvSN sfeldsiq “ON3"* TILNA’* NID3E JO Wed “Bojeyeo syun ay) sigajag “squayuoo yoe}s ay) sadeiday joao ue jo edky oy; sumo “xuye @ sasodsued “NUBW OIYL au) $}09[aS “apow oes} Jajuld sayqeuz XUJEW SONSHE}S AY} Ul SANA ayeUIPs009 ay) swNg -asne|o NIH suibeg “nua 1S31 WVYDOUd 84) s}989¢ uonewixoidde sauas s0jAe, & sayndwog. joquadAy quobuey “quabue} yoalgo waishs e sajndexy “% pue | sjaaa} ul syoalqo ayy sdemg, (zasn) 25m TILNN (sino) ‘OaNnn | AdAL NUL (elss) EREEES LOL N3HL css) WAL HNVL NVL WAASAS dVMS 401 Operation Index UTPC ay) SanoyW 2s oseg fiaowayy $0 4MQ GBuunp abind 0} sasooyg ebb AVY 0b OnOWwu NY L L Vv OS uoloUN) saynoaxy 022 Wad ‘ L J uaquinu @ Jo juauodxa au} suumay 692 iSd.l Wvd50ud 6eL AUYNIG. t @ d YOX Areuig 40 {20/507 ete HONVYa WY890"d 0 0 49 “ONS * LVad3u" * STIHM sulbeg lvy@ TOHLNOD WYd9Oud 0 t ° “uoynoaxa weiboud sasneg ay aseg 0 1 ° 8 JO} Ul] PUBWLUOD a4} 0} J9alGo Ue saidoD Or oseg 0 “aul| au0 UMOP MopUIM Ae;dsi ov oiseq 0 “aulj auo dn mopuim Kejdsip yy sonow Loe LWis ‘ 0 9° “S2OURLIEA |PoIsHe}s seyndwog e80e Lvs t z ° ‘uORNquIsip-} ey-sadde, LOE iWls L & ° “uONNqUISIP ;eWOU {!e}-4addj) Loe iWis 1 € ° “uoNquisip-4 [!e}-saddr L0e ivis ‘ z o * UONNQUISIP aJenbs-1u9 |WeI-seddy, no ur edAL 9seqg Ens a NOdX wOx SIHM LVM TSIA)S (main) MSI UWA idin Nd LA Ad Od owen (penujuod) xepuy uonesedQ 98z-dH Operation Index 402 60r 66 98 v6t S6L e6L £61 80L 86 88 v6L S6L e6L €6L Sle vlb 80l 96 28 el £01 AVdUY onawuuy (WYOs) VuaaO1V 3GOW 30OW 3aow 30dOW AVYYY onewyly (wo) yua39O1V 300W aGOW 3GOW 3GOW ONINLS: isn AVY onewyLiy (Wyo) vuaso1V AVaEY onewyuy 0 <0 ne] 0 ie} +0 0 0 0 0 <0 “syoalgo om) sal RW “sainquisip pue sayefeu ajqnog “OGNN seigesiq ‘apow Aejdsip aur-ajBuls s}oajag “LSV7 saigesiq “ONVWWNOD saiqesiq 'sj9a[go om) sjae4QNS “| sloengns pue sppy “OGNN seiqeuz “LSW1 seiqeu3 ONVWWOD seiqeuz “syoalqo om) sppy “@INQUISIP pue Yaru! ajgnog ‘ANI UOHOUN, sayndax3, anne ates revan rns ss ch He 1 - * + ya 403 Operation Index 99 Veddao1V t z 4W yoyesedo sjenb3 = Sz 4831 WWH9Oud L @ 44 “vosueduiod jenba-10-UeY-Sso7 > ese ASSL WYY9Oud L @ 44 “uosuedwiod uey}-ss27 > Meh sningeg L z 4 AANeAUOQ e Crh sningjeg | 2 ‘Lb € o ‘yesBaqu! ayuyapul 40 ayUYIQ | €0l onawyyy L L v Joo. auenbs ay) sexe \ 88 (WHO) vuaa91V 0 | samod auy 0} sasiey 2a Z0l oneWwyy L z Vv uamod e 0} saquinu e sasiey y pL qwau L z 4 “TRI0) jo UBdI8q 1% 992 Wad 1 z d @BueYo JUaDIag 10% 59% Wad ‘ z 4 qUaQed % 18 (wos) vea3a91V Re} “| fq sapinig meee 60L WHY OL neWURY L z Vv “sjoalgo Om) sapiaig i 8 (wuO3) vua391v 0 Aq saudninw = 602 101d 0 b 9 Jord & yo UIPIM ayy sisnipy Mx ole 101d 0 L o oid e jo WyBley ayy sisnipy Hx 3134M wo ul edly uondusseg owen (panunuod) xepuy uonesedgQ 98Z-dH Operation Index 404 s Ze oseg Re) uo pow eydje $4907 Goo?) 2 Zé oseg 0 “yO JO UO apow eYdje sayoIMs D ee oseg 0 “eoedsyoeg » 0g (Hos) vuaao1Vv .0 4B 40sin9 WHOS SeAoW gee og (wos) vuaa9o1V 0 “Ye| sosuno WHOS seAoW 6 oseg .0 ‘Rem ayy j|@ }yBu 10S3nd sano; 6e ojseg 10 ‘WyBu Josuno seaojw 6e aseg .0 ‘Aem ayy 12 149] JOSuND sano 6c o1seg Re) Ya] J0sino senoy 6e oseg .O “Kem au} |[e UMOP JOSINO SeAO|W 6e o1seg 0 “UMOP JOSJND SBAO\Y 6e aiseg 0 ‘Kem ayy (je dn sosino seao, vie 6e gseg, 0 “dn Josina sano ea 86 oseg te} Nuaw se] $aio}sa1 40 NuaW Josund s\a|ag ns 0 “fox US a €S2 SAL WWH5Oud L z 44 “UOSHBdWOO UBU)-1818815) < St sai WV¥Y9Oud L @ 44 “uostuedwoo jenba-10-ueY}-12}2015, = es isa Wvu9Oud L z 4d uosiedwoo jenba-on 4 toe sal WYY9Ou"d L é d ‘uosuedwos Ayjenb3 == eo an a ae 405 Operation Index 28 gle ey S62 vt oee phe 822 18 8 £8 18 862 162 992 02 (WHOs) vusaO1v 0 soyesedo xyeud seinquisiq ae ONIYLS ‘ L o “Buiis & 0) yOa[qo Ue Ss}aAUOD y1s+ olseg 0 t ° ‘apow jeouawnu ul yalgo ue sayenjeay WwaN+ YOWLS isn by} e+e 9 “JSl| B Olu! syoaigo seuIquog isn+ OWL ' L 2 “YEWO} SWH 0} Jaquinu eB sjaAuog SNH AVUYY Ly btu ° ‘ARUE UB OJU! SJaquNU saUIqUOD AHY< sweiBo1g 0 u 49 “S@|QRUEA |e90] SayeaID - (Wyo) Wuaso1v 0 sjuawn6ue senWwog Re (WHyO4) vHa391V 0 “s10joe) yal sabuey, | | (wuo4) vuaso1Vv 0 “Wal 8) 0} saingiasiq Lc] (WHOS) Vua39T1V 0 “yal ayy 0) sayeIoossy ce Awl 1 0 2 | -xulew sonsneys ayy wou yuiod eyep Ise] ays sajjaq -5 Ws 0 L ° ew SONSHEIS ay) 0} JUIOd Bjep & spy +5 qW3d vu@ao1v L 0 44 4 yuB}sUOd dOquIAS a 3404M wo up | adh, uondu9seg owen (penujuod) xepuy uoyesedg 98z-dH Operation Index 406 : > > . 7 = Terms Used in Stack Diagrams Term Description obj Any object xory Real number. Ams Real number in hours-minutes-seconds format. n Positive integer real number. flag Real number, zero (false) or non-zero (true). z Real or complex number. oxy? Complex number in rectangular form. rAd Complex number in polar form. tn Binary integer. "string" Character string. Carray] Real or complex vector or matrix. CvectorI Real or complex vector. Cimatrix] | Real or complex matrix. CR-array1 Real vector or matrix. CC-array1 | Complex vector or matrix. t list} List of objects. {index } List of one or two real numbers specifying an array element. tdim} List of one or two real numbers specifying the dimension(s) of an array. ‘name’ Name or local name. program» | Program. “symb' Expression, equation, or a name treated as an algebraic. Contents Page 11 17 31 57 349 357 363 367 381 How To Use This Manual 1: Fundamentals 2: Basic Operations 3: Dictionary ALGEBRA ALGEBRA (FORM) Arithmetic ARRAY BINARY Calculus CATALOG COMPLEX LisT Locs MODE PLOT PRINT A: Messages Programs PROGRAM BRANCH PROGRAM CONTROL PROGRAM TEST REAL SOLVE STACK STAT STORE STRING TRIG UNITS USER B: Notes for HP RPN Calculator Users C: Notes for Algebraic Calculator Users Glossary Operation Index LD HEWLETT PACKARD Reorder Number 00028-90021 00028-90051 Printed in U.S.A. 1/87

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy