home *** CD-ROM | disk | FTP | other *** search
/ Current Shareware 1994 January / SHAR194.ISO / calculat / ex122.zip / EX.DOC next >
Text File  |  1993-06-28  |  63KB  |  1,853 lines

  1.  
  2.                                 Ex
  3.                                ====
  4.  
  5.                      A Scientific Calculator
  6.  
  7.                            Version 1.22
  8.  
  9.                       by J. Andrzej Wrotniak
  10.  
  11.                           June 28, 1993
  12.  
  13.  
  14. If  you  have a  need for  scientific or  engineering calculations 
  15. exceeding capabilities of an electronic calculator  (including the 
  16. HP Calc, built into the HP Palmtop), or  if you  find some  of the 
  17. advanced math programs too difficult to  use, then  Ex may  be the 
  18. program you need.
  19.  
  20.  
  21. Table of Contents
  22.  
  23.    1. Introduction
  24.       1.1. What does Ex do?
  25.       1.2. PC-DOS and HP95LX mutations
  26.       1.3. Extended (registered) version
  27.       1.4. Disclaimer
  28.    2. The Main Screen
  29.       2.1. The Expression Line.
  30.            2.1.1. Editing the Expression Line
  31.            2.1.2. Switching between expressions
  32.            2.1.3. Clear, cut and paste
  33.       2.2. The Status Line
  34.            2.2.1. Line number
  35.            2.2.2. Last result
  36.            2.2.3. Significant digits
  37.            2.2.4. Angular mode
  38.            2.2.5. F-Key menu indicator
  39.       2.3. Variables
  40.       2.4. The F-Key Menu
  41.            2.4.1. Nested menus
  42.            2.4.2. Nested F-Key notation
  43.            2.4.3. Toggle markers
  44.            2.4.4. Help and Exit keys
  45.       2.5. The Prompt Line
  46.    3. Evaluating expressions
  47.       3.1. Input format
  48.       3.2. Expression reformatting
  49.       3.3. Errors
  50.            3.3.1. Syntax errors
  51.            3.3.2. Unassigned variables
  52.            3.3.3. Computation errors
  53.       3.4. Error diagnostics
  54.       3.5. Arithmetic precision and range
  55.       3.6. Syntax check
  56.    4. Expression components
  57.       4.1. Numeric constants.
  58.       4.2. Variables.
  59.       4.3. Symbolic constants.
  60.       4.4. Arithmetic operators.
  61.       4.5. Implied multiplication
  62.       4.6. Functions.
  63.       4.7. Separators.
  64.       4.8. Angles in DMS notation
  65.    5. Implemented functions
  66.       5.1. Logarithmic and exponential
  67.       5.2. Trigonometric and inverse
  68.       5.3. Hyperbolic and inverse
  69.       5.4. Miscellaneous arithmetic
  70.       5.5. Euler and related functions
  71.       5.6. Conditional functions
  72.       5.7. User-defined functions
  73.       5.8. Statistical functions
  74.            5.8.1. Function types
  75.            5.8.2. Supported distributions
  76.       5.9. Feet and pounds functions
  77.    6. Operation priority
  78.    7. Other operations on expressions
  79.       7.1. Numerical integration
  80.       7.2. Numerical differentiation
  81.       7.3. Equation solving
  82.       7.4. Computing sums
  83.    8. Function plotting.
  84.       8.1. Logarithmic scale
  85.       8.2. Axis and grid visibility
  86.       8.3. Plot precision
  87.       8.4. Errors and points out of range
  88.       8.5. Plot screen buffering
  89.       8.6. Plot overlays
  90.    9. User-defined functions
  91.       9.1. Defining a user function
  92.       9.2. Recalling a user function
  93.   10. Data conversions
  94.       10.1. Unit conversion
  95.             10.1.1. The unit menus
  96.             10.1.2. Units supported
  97.       10.2. Angle display as DMS
  98.       10.3. Conversion to fractions
  99.       10.4. Feet and pounds
  100.       10.5. Result rounding
  101.   11. Miscellaneous operations
  102.       11.1. On-line help
  103.       11.2. Display precision
  104.       11.3. Autoscroll
  105.       11.4. Angular modes
  106.       11.5. Clearing expressions and data
  107.       11.6. Exiting the program
  108.   12. Program installation and use
  109.       12.1. The packing list
  110.       12.2. Installing Ex on your computer
  111.       12.3. Character set compatibility
  112.             12.3.1. Screen (PC)
  113.             12.3.2. Printer (HP)
  114.       12.4. Running Ex from DOS
  115.       12.5. Running from the Filer (HP)
  116.       12.6. Making a loader file (HP)
  117.       12.7. Saving disk space (HP)
  118.   13. Registration and distribution
  119.       13.1. How to register
  120.       13.2. The extra goodies
  121.       13.3. Registration fees
  122.       13.4. Distribution
  123.       13.5. Support
  124.       13.6. Improvements and new features
  125.       13.7. Credits
  126.       13.8. About the author
  127.  
  128.  
  129. 1. Introduction
  130.  
  131. 1.1. What does Ex do?
  132.  
  133. At  its  simplest level,  Ex is  a calculator.  It will  accept an 
  134. arithmetic expression, compute its value, and store the  result in 
  135. a variable. For example, typing in
  136.  
  137.                        2.5*12+log 1000 = t
  138.  
  139. will evaluate the expression, display the result (33) and store it 
  140. in the variable t.
  141.  
  142. Expressions can be more complicated, while still readable, as in
  143.  
  144.                   ln(sq sin 2t + sq cos .5t) = u
  145.  
  146. If t already contains some value, the expression will be computed, 
  147. and the result will be stored in the variable u.
  148.  
  149. Being  able  to  see  the whole  expression before  and after  its 
  150. evaluation, you can modify and re-compute it at  any moment.  This 
  151. is  more  convenient  than  seeing just  the current  intermediate 
  152. result  and  re-entering  everything  from scratch  in case  of an 
  153. error.
  154.  
  155. This alone would have justified the effort of writing Ex,  but the 
  156. program is more than just a handy calculator.
  157.  
  158. An  expression  can  be  more than  just evaluated.  Treated as  a 
  159. function of the selected variable, it can be plotted or  submitted 
  160. to  some   numerical  operations:   integration,  differentiation, 
  161. summation or root finding.
  162.  
  163. Therefore,  Ex  can  be  understood  as  an arithmetic  expression 
  164. processor and its usability  should exceed  that of  an electronic 
  165. calculator, although in each case you will be judge of this claim.
  166.  
  167.  
  168. 1.2. PC-DOS and HP95LX mutations
  169.  
  170. Ex  has  been  originally  written  for  the Hewlett-Packard  95LX 
  171. palmtop computer. Although the latter runs under a version of DOS, 
  172. its screen handling is significantly different  than on  "regular" 
  173. DOS machines.
  174.  
  175. This is why a separate mutation of the  program has  been created, 
  176. with "PC" in the version number, while the  HP palmtop  program is 
  177. denoted as "HP". Except for the screen driver,  both versions  are 
  178. identical.
  179.  
  180. The PC version of Ex (for example, 1.20/PC) will run  on virtually 
  181. all PC-DOS clones with  a CGA,  EGA or  VGA display.  On computers 
  182. with other video adapters the graphic operations will be disabled. 
  183. A math coprocessor, if present, will be detected and used.
  184.  
  185. On the new HP100LX palmtop you  may run  either version,  although 
  186. the HP one is recommended (in the 95 compatibility mode).
  187.  
  188.  
  189. 1.3. Extended (registered) version
  190.  
  191. Ex is shareware; the details on its distribution  and registration 
  192. are given in Chapter 13.
  193.  
  194. *** Some of the enhanced program  features, introduced  in Version 
  195. 1.2 and  above, are  available only  in registered  copies of  Ex, 
  196. distributed exclusively to those  who paid  the registration  fee. 
  197. These are designated with letter "R" in the version  number (e.g., 
  198. 1.20R/HP).
  199.  
  200. ***  Parts  of  this  document  referring   specifically  to   the 
  201. registered version are marked with a "***" string.
  202.  
  203.  
  204. 1.4. Disclaimer
  205.  
  206. Although  the  author  has  extensively  tested  the software  and 
  207. reviewed the documentation, he makes no warrant or representation, 
  208. explicit or implied, with  respect to  this package,  its quality, 
  209. performance, merchantability or fitness for a  particular purpose, 
  210. in any hardware or software environment.
  211.  
  212. In  no  event shall  the author  be liable  for direct,  indirect, 
  213. special, incidental or consequential  damages arising  out of  the 
  214. use, misuse or inability to use the software or documentation.
  215.  
  216.  
  217. 2. The Main Screen
  218.  
  219. When you run Ex,  you will  find yourself  first in  the program's 
  220. Main Screen, which consists of four parts.
  221.  
  222.              ┌──────────────────────────────────────┐
  223.              │2/3+sin 2D-3·sin 24°12'32"/H²=X       │
  224.              ├───┬─────────────────────────┬──┬─┬───┤
  225.              │  1│X: 1.429336169866998     │16│R│Top│
  226.              ├───┴────────┬────────────┬───┴──┴─┴───┤
  227.              │@           │I           │R           │
  228.              │A           │J           │S           │
  229.              │B           │K           │T           │
  230.              │C           │L           │U           │
  231.              │D 1.04719755│M           │V           │
  232.              │E           │N           │W           │
  233.              │F           │O           │X 1.42933617│
  234.              │G           │P           │Y           │
  235.              │H 3.45000000│Q           │Z           │
  236.              └────────────┴────────────┴────────────┘
  237.              Hlp Set Plt Num     Con Def Sho Clr Exit
  238.  
  239. These  are,  from  top  to bottom,  Expression Line,  Status Line, 
  240. Variable Fields  and the  F-Key Menu.  The last  one is  sometimes 
  241. taken over by prompts asking for some input.
  242.  
  243.  
  244. 2.1. The Expression Line
  245.  
  246. This  is  the  long  (initially  empty)  line  near  the top.  The 
  247. expression being typed in is displayed here. Its length is limited 
  248. to 37 characters.
  249.  
  250. *** In the registered version the maximum expression length is  75 
  251. characters, and  the text  will, if  necessary, scroll  across the 
  252. Expression Line, with arrows indicating parts extending in  either 
  253. direction.
  254.  
  255.  
  256. 2.1.1. Editing the Expression Line
  257.  
  258. Most of the typing will show in the  Expression Line  the way  you 
  259. would expect it to.
  260.  
  261. The Backspace and Delete keys retain their customary functions and 
  262. so do the left and right arrow keys.
  263.  
  264. Editing is in the insert mode: new characters are inserted  at the 
  265. cursor.
  266.  
  267. The Home and End keys (on the HP:  shifted left  and right  arrow) 
  268. will  jump  to  the  beginning  or  to  the   end  of   the  line, 
  269. respectively.
  270.  
  271. Page Up and Page Down (on the HP: shifted up and down  arrow) will 
  272. change the case of  the character  under cursor,  and step  to the 
  273. right. This is useful in correcting syntax errors.
  274.  
  275.  
  276. 2.1.2. Switching between expressions
  277.  
  278. Ex remembers up to twelve expressions at any time. Pressing the up 
  279. and down arrow keys allows to switch between them.
  280.  
  281. *** The registered version of Ex has 24 expression lines.
  282.  
  283.  
  284. 2.1.3. Clear, cut and paste
  285.  
  286. Pressing Escape clears the Expression Line. The text  is, however, 
  287. not lost; it is stored in the Paste Buffer.
  288.  
  289. Pressing Escape when the Expression Line is already empty puts the 
  290. contents of the buffer back into the line.
  291.  
  292. This means  that to  copy a  line, without  clearing it,  into the 
  293. buffer,  Escape  has  to  be pressed  twice: the  second keystroke 
  294. restores the line, but its contents remains in the buffer as well.
  295.  
  296. Pressing  the  Insert  key  (Shift+Delete  on  the  HP)  swaps the 
  297. contents of the buffer with the current line,  unless the  current 
  298. line is empty: then Ex will just paste the buffer without clearing 
  299. it.
  300.  
  301.  
  302. 2.2. The Status Line
  303.  
  304. This line is located below the  Expression Line  and contains  the 
  305. following information (left to right).
  306.  
  307.  
  308. 2.2.1. Line number
  309.  
  310. This is the number of the currently displayed  expression. A  down 
  311. arrow in front of it denotes that the autoscroll mode (see Section 
  312. 11.3) is on.
  313.  
  314.  
  315. 2.2.2. Last result
  316.  
  317. The next  field shows  the result  of the  last operation  and the 
  318. variable where that result has been stored. The  display precision 
  319. can be adjusted as described in Section 11.2.
  320.  
  321. The  last  result  is  also  used  as a  base for  some operations 
  322. (conversions, rounding), see Chapter 11.
  323.  
  324.  
  325. 2.2.3. Significant digits
  326.  
  327. This  field  shows  the  precision  with  which  the  results  are 
  328. displayed in the Last Result field.
  329.  
  330. Preceded with a dot (e.g., ".6"), it denotes the number  of digits 
  331. after the decimal point;  without the  dot -  the total  number of 
  332. significant digits. In the latter case the trailing zeros will  be 
  333. truncated. See Section 11.2 for more on this subject.
  334.  
  335.  
  336. 2.2.4. Angular mode
  337.  
  338. "R"  or  "D"  is   displayed  here,   depending  on   whether  the 
  339. trigonometric functions  expect arguments  (or return  results, as 
  340. appropriate)  in  radians  or  degrees. Switching  between angular 
  341. modes is described in Section 11.4.
  342.  
  343.  
  344. 2.2.5. F-Key Menu indicator
  345.  
  346. This field  shows which  of the  function key  menus is  currently 
  347. active and shown at the bottom of the screen (see Section 2.4). It 
  348. makes the navigation between different menus easier.
  349.  
  350.  
  351. 2.3. Variables
  352.  
  353. 27 Variable Fields show the names and values of Ex  variables A..Z 
  354. and @ (the "default variable").
  355.  
  356. Values in these fields are always shown using  an eleven-character 
  357. width (usually nine significant digits), except for those computed 
  358. in the Financial Mode, see Section 11.2.
  359.  
  360.  
  361. 2.4. The F-Key Menu
  362.  
  363. The bottom line is taken by the Function  Key Menu  with mnemonics 
  364. for the function keys F1..F10. We  will be  referring to  function 
  365. keys  with  these abbreviations  in square  brackets, e.g.,  [Hlp] 
  366. instead of F1.
  367.  
  368.  
  369. 2.4.1. Nested menus
  370.  
  371. Some  of  the function  keys do  not cause  any immediate  action. 
  372. Pressing  such  a  key  will, instead,  bring up  a new  menu with 
  373. different operations assigned to the F-keys.
  374.  
  375. For example,  F2, marked  as [Set],  will bring  up another  menu; 
  376. while  that  one  is  active, F4,  denoted as  [Deg], will  toggle 
  377. between Deg and Rad angular modes.
  378.  
  379.  
  380. 2.4.2. Nested F-Key notation
  381.  
  382. Nested function key sequences are denoted in this manual with  key 
  383. mnemonics  separated  by  a  vertical  bar;  thus  the   operation 
  384. described above would be referred to as [Set|Deg].
  385.  
  386. As the  current menu  is indicated  with the  key mnemonic  in the 
  387. Status Line, [Set|Deg] may be also interpreted as "Press the [Deg] 
  388. key while [Set] is being displayed in the F-Key Menu Indicator".
  389.  
  390.  
  391. 2.4.3. Toggle markers
  392.  
  393. If a function key toggles a feature on and off, an arrow  pointing 
  394. to it (at its left) denotes the "on" status.
  395.  
  396.  
  397. 2.4.4. Help and Exit keys
  398.  
  399. In all function key menus, F1 activates on-line help, while F10 is 
  400. used to return to the next higher menu  level or,  in case  of the 
  401. top menu, to leave the program.
  402.  
  403.  
  404. 2.5. The Prompt Line
  405.  
  406. Some times  Ex will  ask you  for a  numeric or  textual input  by 
  407. displaying  a  prompt  at  the bottom  of the  screen, temporarily 
  408. replacing the F-key menu.
  409.  
  410. A default (or previous) answer will be shown after the  prompt. It 
  411. can  be  edited  with  use of  the special  keys: arrows,  Delete, 
  412. Backspace, Home and End.
  413.  
  414. After  having  entered the  appropriate response,  press Enter  to 
  415. continue. The same effect can be  achieved by  pressing again  the 
  416. same F-key in response to which the prompt has been displayed.
  417.  
  418. Pressing Escape when any input is present on the Prompt  Line will 
  419. clear it. The same key with no input present will exit the prompt, 
  420. and the operation of which the prompted input was a part, will  be 
  421. abandoned.
  422.  
  423.  
  424. 3. Evaluating expressions
  425.  
  426. To evaluate an arithmetic  expression, enter  it into  the Display 
  427. Line, following with the equal sign and a variable name:
  428.  
  429.                       Expression = Variable
  430.  
  431. Pressing the Return key will now compute the expression value  and 
  432. store it in the selected variable. The result will be shown in the 
  433. Last Result Field as well as in the appropriate Variable Field.
  434.  
  435. If Variable is not entered, then the result will be stored in  the 
  436. default variable, @, i.e. "=@" will be appended to the line.
  437.  
  438. Note that  this convention  is opposite  to the  one used  in most 
  439. programming languages, where "A=B+C" means "add A to  B and  store 
  440. the result in C". In Ex the same  operation has  to be  entered as 
  441. "B+C=A".  In  the  long  term  we  find the  latter notation  more 
  442. convenient,  although  this is,  obviously, a  matter of  personal 
  443. preferences.
  444.  
  445. The details of expression syntax will be given  in Chapters  4 and 
  446. 6; now we will discuss the general aspects of the process.
  447.  
  448.  
  449. 3.1. Input format
  450.  
  451. An  expression  may  consist  of  components  (or  tokens)  of the 
  452. following kinds:
  453.  
  454. - numeric constants, e.g., 3.25
  455.  
  456. - angular (DMS) constants, e.g., 3°32'
  457.  
  458. - variables, e.g., X
  459.  
  460. - symbolic constants: ⌠ (Pi) and É (e)
  461.  
  462. - arithmetic operators, e.g., + or ²
  463.  
  464. - functions, e.g., sin
  465.  
  466. - separators (parentheses, comma)
  467.  
  468. Descriptions of these classes will be given in Chapter 4;  here we 
  469. will focus on how they are identified in the expression text.
  470.  
  471. Ex is quite smart in parsing the expression,  i.e. in  recognizing 
  472. its tokens. You will not find many surprises here.
  473.  
  474. First, any sequence of spaces is  converted into  a single  space. 
  475. Characters separated with a space are  never treated  as a  single 
  476. token.
  477.  
  478. For  example,  "3 5.2"  will be  understood as  a sequence  of two 
  479. numeric constants: "3" followed by "5.2", and not as "3.52".
  480.  
  481. Even  without  a  separating  space  Ex  may split  a sequence  of 
  482. characters into separate tokens. This happens if the sequence does 
  483. not make  sense as  a single  token. For  example, "asin"  will be 
  484. interpreted as  the arc  sine function  name, but  "bsin" will  be 
  485. split into two symbols, as in "B sin".
  486.  
  487. Any upper case letters are treated as variable names: "Asin" means 
  488. "A  sin"  and  "SIN"  will be  understood as  a sequence  of three 
  489. variables, "S I N". (This does not mean that variables have to  be 
  490. entered in uppercase; see below.)
  491.  
  492. A series of related examples will illustrate these rules.
  493.  
  494. "bsina" will be interpreted as "B sin A": Ex knows about "sin" but 
  495. not "bsin" or "sina"  (the list  of recognized  functions will  be 
  496. presented in Chapter 5).
  497.  
  498. "asina"  means  "asin  A":  "asin"  denotes  the  asin  (arc sine) 
  499. function.
  500.  
  501. "as ina" means "A S I N A"  (a sequence  of five  variable names), 
  502. because the space prevents Ex from treating "s in" as "sin".
  503.  
  504. Similarly,  "asIna"  will  be  treated the  same way,  because the 
  505. capital "I" prevents Ex from recognizing "sIn" as a single token.
  506.  
  507. And finally, "as int" means "A  S int",  because Ex  recognizes an 
  508. int function.
  509.  
  510.  
  511. 3.2. Expression reformatting
  512.  
  513. Immediately before computing the expression Ex  will redisplay  it 
  514. in a standard format. Variable names are converted to upper  case, 
  515. and spaces are removed or added as necessary.
  516.  
  517. If  a  sequence  of  two tokens  has been  interpreted as  implied 
  518. multiplication (see Section 4.5), Ex may insert a small dot,  "·", 
  519. between them, to make this fact obvious.
  520.  
  521. Additionally, some numeric or angular constants may be reformatted 
  522. to  a  standard format.  For example,  "2.5000" will  be shown  as 
  523. "2.5", and "0.0000012" as "1.2e-6".
  524.  
  525. It may happen that, as a result of  this reformatting,  the length 
  526. of an  expression line  will increase  beyond the  allowed maximum 
  527. (See  Section  2.1).  The  line  will  be  then  truncated and  an 
  528. appropriate error reported.
  529.  
  530.  
  531. 3.3. Errors
  532.  
  533. During an attempt of expression evaluation, three kinds  of errors 
  534. may occur.
  535.  
  536.  
  537. 3.3.1. Syntax errors
  538.  
  539. The first are syntax errors, due either to symbols unrecognized by 
  540. the parser or to wrong symbol sequence. For example,
  541.  
  542.                           sin 2:3+cos X
  543.  
  544. contains an illegal symbol, ":", while
  545.  
  546.                          2.5-*8-log(2,5)
  547.  
  548. contains two illegal sequences:  a "-"  followed by  "*", and  two 
  549. arguments for the log function.
  550.  
  551. Ex will stop parsing the expression as soon as the first error  is 
  552. detected.
  553.  
  554.  
  555. 3.3.2. Unassigned variables
  556.  
  557. At the moment of expression evaluation  all variables  used in  it 
  558. have to contain previously assigned values.  (Other operations  on 
  559. expressions allow for one exception from this rule;  this will  be 
  560. discussed later.)
  561.  
  562. If this is not the case, an error will be diagnosed.
  563.  
  564.  
  565. 3.3.3. Computation errors
  566.  
  567. Only  if  no errors  of the  above types  have been  detected, the 
  568. actual  computation  begins. During  this stage  other errors  may 
  569. occur.
  570.  
  571. An attempt to divide by zero  is an  obvious case.  Others include 
  572. illegal values of function  arguments (e.g.,  a square  root of  a 
  573. negative value), or a numeric overflow.
  574.  
  575.  
  576. 3.4. Error diagnostics
  577.  
  578. When an error is detected, a message will be shown  at the  bottom 
  579. of the Main Screen. To clear the message  and continue,  press any 
  580. key.
  581.  
  582. In case of syntax errors, the cursor will be placed  at the  point 
  583. where the error has occurred (at least where Ex thinks it did).
  584.  
  585. Some  errors  just  cannot  be  diagnosed  properly, i.e.  with Ex 
  586. guessing  what  you really  wanted to  do. For  example, mistyping 
  587. "sin"  as  "son"  will  be  interpreted  as  a  product  of  three 
  588. variables: S, O and N (the "*" operator is not always necessary in 
  589. Ex, see Section 4.5).
  590.  
  591.  
  592. 3.5. Arithmetic precision and range
  593.  
  594. Regardless of the display accuracy, the arithmetic operations  are 
  595. performed in Ex with a precision of about 18 decimal  digits (some 
  596. functions, like sin or log, may be less accurate: 16 digits or so, 
  597. depending on the argument).
  598.  
  599. The range of expression  values (this  includes also  some of  the 
  600. intermediate results) is limited by the highest absolute  value of 
  601. 9.99e999. As the total number of elementary particles in the known 
  602. Universe is a few orders of  magnitude less  than 1e60,  our range 
  603. should be large enough for most practical purposes.
  604.  
  605.  
  606. 3.6. Syntax checking
  607.  
  608. In order just to  check the  expression syntax,  without computing 
  609. its value, press the Tab key.
  610.  
  611. If the expression contains any syntax  errors, a  diagnostics will 
  612. appear. The Expression Line  will be  reformatted in  the standard 
  613. way.
  614.  
  615.  
  616. 4. Expression components
  617.  
  618. An  arithmetic  expression  in  Ex  may  consist of  the following 
  619. elements.
  620.  
  621.  
  622. 4.1. Numeric constants
  623.  
  624. These are just numbers, using digits, decimal point  and/or letter 
  625. "e" (lower case only!) as the decimal exponent sign. A  minus sign 
  626. may precede the whole number and/or its exponent value.
  627.  
  628. A numeric constant should not contain spaces, and the leading zero 
  629. before the decimal point is optional.
  630.  
  631. It is usually clear from the context whether a lowercase "e" is  a 
  632. variable or a part of a  constant. In  case of  doubt, the  latter 
  633. will be assumed. If  this is  not what  you want,  use a  space to 
  634. break the constant up.
  635.  
  636. For example, "2e-3" will be interpreted as a  constant (.002).  In 
  637. order to enter two times variable E minus three, type "2E-3" or "2 
  638. e-3" or "2e -3" etc.
  639.  
  640.  
  641. 4.2. Variables
  642.  
  643. Variables are denoted with letters from A to Z; additionally,  the 
  644. "default" variable @ is available.
  645.  
  646.  
  647. 4.3. Symbolic constants
  648.  
  649. Two of these are supported: Pi and Euler's e (=2.71...).  They are 
  650. shown in the display as "⌠"  and "É"  (see Section  12.3 if  these 
  651. symbols are not shown or printed properly).
  652.  
  653. The symbolic constants can be entered from the  keyboard as  Alt-p 
  654. and Alt-e or, on the HP Palmtop, as Char-p and Char-e (usually the 
  655. [Alt] key needs to be held down while [p] or [e] is being pressed; 
  656. this is not necessary with [Char]).
  657.  
  658.  
  659. 4.4. Arithmetic operators
  660.  
  661. In addition to the common +,  -, *  and /  (where +  and -  may be 
  662. unary or binary), there is a power operator, ^, like in A^B  (A to 
  663. the power of B).
  664.  
  665. If the first operand  (i.e. the  base) in  the power  operation is 
  666. negative,  then  the  second  one has  to have  an integer  value, 
  667. otherwise an arithmetic error will be detected. Similarly, for the 
  668. base equal zero, only whole positive exponents are allowed.
  669.  
  670. There are also three operators used after a single operand: square 
  671. "²" (a superscript "2", entered as Alt-2 or  Char-2), cube  "ⁿ" (a 
  672. superscript "3", entered as Alt-3 or  Char-3), and  factorial "!".  
  673. These  operators  are  duplicated  by  functions  sq, cu  and fac, 
  674. respectively.
  675.  
  676. (Square and cube may not be displayed or printed properly  on your 
  677. installation, see Section 12.3.)
  678.  
  679.  
  680. 4.5. Implied multiplication
  681.  
  682. The multiplication operator between two operands, x and y, can  be 
  683. skipped if
  684.  
  685. (i) x is a variable or a constant (symbolic or numeric),
  686.  
  687. and
  688.  
  689. (ii) y is a variable, a symbolic constant, a function  invocation, 
  690. or a "(".
  691.  
  692. The difference between explicit and implied multiplication is that 
  693. the latter has the highest priority (see the next section).
  694.  
  695. Here  are  some  examples  of legal  and illegal  attempts to  use 
  696. implied multiplication:
  697.  
  698.                  Legal       Equivalent   Illegal
  699.  
  700.                  3XYZ        3*X*Y*Z      XY3Z
  701.                  2⌠R         2*⌠*R        2 3.1416 R
  702.                  9 sin X     9*sin(X)     (C+1)sin X
  703.                  ln X exp Y  ln(X*exp(Y)) ln(X)exp Y
  704.                  sin 2AB     sin(2*A*B)   (sin 2A)B
  705.                  sin 2(A+B)  sin(2*(A+B)) sin (A+B)C
  706.                  ⌠R²         ⌠*(R²)       R²⌠
  707.  
  708. The  traditional  "blackboard" notation  is somewhat  inconsistent 
  709. here: "exp 3 ln X" is  usually interpreted  by a  human writer  as 
  710. "exp(3*ln(X))" while "2 sin X cos X" as "2*sin(X)*cos(X)". Ex will 
  711. always chose  the first  way, interpreting  the latter  example as 
  712. "2*sin(X*cos(X))".
  713.  
  714. If in doubt, use the "*" operator and/or parentheses.
  715.  
  716. After the expression has  been interpreted  and re-formatted,  the 
  717. implied multiplication  will be  displayed as  a small  dot, e.g., 
  718. "3.5·sin Y".
  719.  
  720.  
  721. 4.6. Functions
  722.  
  723. Functions  supported  by  Ex  include  trigonometric  and inverse, 
  724. hyperbolic, logarithmic and exponential (with three different base 
  725. values). Euler's Gamma and Beta (complete and incomplete) are also 
  726. provided. For the full function list see Chapter 5.
  727.  
  728. Most of the functions accept a single argument.  If this  argument 
  729. is just  a constant,  a variable  or another  function invocation, 
  730. then it does not have to be enclosed  in parentheses  (see Section 
  731. 4.7).
  732.  
  733.  
  734. 4.7. Separators
  735.  
  736. The parentheses  () are  used to  change the  order of  expression 
  737. evaluation, or to group multiple function  arguments. This  is not 
  738. necessary for one-argument functions;  for example,  "ln X"  is as 
  739. good as "ln(X)".
  740.  
  741. A comma is used  to separate  multiple function  arguments, as  in 
  742. "atn2(X,1+Y)".
  743.  
  744.  
  745. 4.8. Angles in DMS notation
  746.  
  747. An expression  may also  contain angular  values expressed  in the 
  748. degree, minute and second notation, e.g., -14°07'30". Such  values 
  749. will  be,  regardless of  where they  occur, converted  to degrees 
  750. (here: -14.125) or to  radians, depending  on the  current angular 
  751. mode.
  752.  
  753. The degree symbol is entered as Alt-d or Char-d, minutes  as Alt-m 
  754. or Char-m and seconds - as Alt-s or  Char-s. For  the two  latter, 
  755. the single-  and double quote keys,['] and ["],  are also  OK. (As 
  756. before, the Char- sequences are available only on the HP Palmtop).
  757.  
  758. Any of the three values may be omitted (together with its symbol); 
  759. a zero will then be assumed. Fractional values are not allowed.
  760.  
  761. Leading zeros are optional. The min/sec values do  not have  to be 
  762. less than 60; a proper reformatting will take place, if necessary, 
  763. before the computation starts.
  764.  
  765. Examples:
  766.  
  767.     5°99' means 6°39'
  768.  
  769.     5°99" means 5°01'39"
  770.  
  771.     5000" means 1°23'20"
  772.  
  773.  
  774. 5. Implemented functions
  775.  
  776. The functions available in Ex can be divided into several groups.
  777.  
  778.  
  779. 5.1. Logarithmic and exponential
  780.  
  781. ln(x) - natural logarithm
  782.  
  783. log(x) - decimal (common) logarithm
  784.  
  785. lg2(x) - logarithm base two
  786.  
  787. exp(x) - exponent
  788.  
  789. ten(x) - ten to x
  790.  
  791. two(x) - two to x
  792.  
  793. The arguments of ln, log and lg2 have to be positive.
  794.  
  795.  
  796. 5.2. Trigonometric and inverse
  797.  
  798. sin(x), cos(x) - sine, cosine
  799.  
  800. tan(x), cot(x) - tangent, cotangent
  801.  
  802. asin(x), acos(x), atan(x), acot(x) - inverses of the above
  803.  
  804. atn2(y,x) - arc tangent of y/x, with result in the proper 
  805. quadrant
  806.  
  807. Depending on the angular mode (see Section 11.4),  these functions 
  808. accept  arguments  or  return  results  (whichever  applicable) in 
  809. degrees  or  in  radians.  The arguments,  obviously, can  also be 
  810. entered in DMS notation, as described in Section 4.8.
  811.  
  812. There are also the usual limitations on arguments  of asin,  acos, 
  813. tan and cot. No restrictions exist on the arguments of atn2.
  814.  
  815.  
  816. 5.3. Hyperbolic and inverse
  817.  
  818. sinh(x),  cosh(x),  tanh(x),  coth(h)   -  the   basic  hyperbolic 
  819. functions
  820.  
  821. asinh(x), acosh(x), atanh(x), acoth(x) - their inverses
  822.  
  823. The  inverse  hyperbolic  functions  impose restrictions  on their 
  824. arguments:  acosh  requires that  x>=1, atanh  needs abs(x)<1  and 
  825. acoth that abs(x)>1.
  826.  
  827.  
  828. 5.4. Miscellaneous arithmetic
  829.  
  830. abs(x) - the absolute value
  831.  
  832. inv(x) - reciprocal, equivalent to 1/x
  833.  
  834. sq(x), cu(x) - square and cube
  835.  
  836. sqr(x), cur(x) - square and cubic root
  837.  
  838. int(x) - integer part rounded towards zero; int(-2.5) is -2
  839.  
  840. ent(x) - entier (truncated down; ent(-2.5) is -3)
  841.  
  842. fra(x) - fractional part, i.e. x-int(x)
  843.  
  844. sgn(x) - the sign of x (-1, 0 or 1)
  845.  
  846. min(x,y) - the smaller of both arguments
  847.  
  848. max(x,y) - the larger of both arguments
  849.  
  850. mod(x,y) - remainder of x divided  by abs(y),  always positive  or 
  851. zero
  852.  
  853. rou(x,y) - rounds x to the nearest whole multiple of y
  854.  
  855. rad(x,y) - square root of sum of squares
  856.  
  857. (Functions  sq  and  cu  are  duplicated  as operators:  ² and  ⁿ, 
  858. respectively).
  859.  
  860. While sqr  requires that  x>=0, there  are no  limitations on  the 
  861. argument of cur.
  862.  
  863. Functions int  and ent  work only  for abs(x)<2^31  (approximately 
  864. 2.1e9); for mod, x/y has to stay within this limit.
  865.  
  866.  
  867. 5.5. Euler and related functions
  868.  
  869. gam(x) - the (complete) Gamma function
  870.  
  871. lgam(x) - the (natural) logarithm of abs(gam(x)) (larger arguments 
  872. allowed than for gam)
  873.  
  874. fac(x) - factorial of x, i.e. x! - computed as gam(x-1) so  that x 
  875. does not have to be integer (this function is duplicated as the  ! 
  876. operator)
  877.  
  878. bet(x,y) - the (complete) Beta function: gam(x)*gam(y)/gam(x+y)
  879.  
  880. com(n,k) - combinations (Newton symbol) of  n over  k, defined  as 
  881. n!/(k!(n-k)!) with n and k not necessarily integer
  882.  
  883. igam(a,x) - incomplete Gamma function
  884.  
  885. ibet(a,b,x) - incomplete Beta function
  886.  
  887.  
  888. 5.6. Conditional functions
  889.  
  890. These functions accept three arguments and, depending on the value 
  891. of the first one, compute and return the  value of  the second  or 
  892. the third argument:
  893.  
  894. ifn(a,b,c) returns b if a<0, else c
  895.  
  896. ifz(a,b,c) returns b if a=0, else c
  897.  
  898. ifp(a,b,c) returns b if a>0, else c
  899.  
  900. The function names translate into "if negative", "if zero" and "if 
  901. positive", respectively.
  902.  
  903. Most importantly, only the needed argument  will be  computed. For 
  904. example,  the  expression  "ifz(x,1,sin  x/x)"  will  be evaluated 
  905. without an error for any value of x.
  906.  
  907.  
  908. 5.7. User-defined functions
  909.  
  910. Up to six functions can be defined by  the user.  Their names  are 
  911. dfa..dff. See Chapter 9 devoted entirely to this subject.
  912.  
  913.  
  914. 5.8. Statistical functions
  915.  
  916. For  statistical  applications Ex  provides you  with a  choice of 
  917. distribution functions for various distributions.
  918.  
  919. For  example,  in  order  to  build  a 95%  mean value  confidence 
  920. interval based on a Normal sample  of N  data points,  we need  to 
  921. know the value of Student variable  (the t-distribution)  with N-1 
  922. degrees of freedom such that the probability integral from -t to t 
  923. will be 0.95. Computing this value is not a trivial task. Ex  does 
  924. it with a single function call: iastu(.95,N-1).
  925.  
  926. The functions follow a  simple naming  convention. The  last three 
  927. letters denote the distribution (e.g., "chi" for Chi-square, "gau" 
  928. for  Normal  or  Gaussian),  while the  one- or  two-letter prefix 
  929. describes the type of the function (e.g., density  or cumulative). 
  930. The following two sections are devoted to these two aspects.
  931.  
  932. Statistical functions are computed with an accuracy of  16 decimal 
  933. digits.
  934.  
  935.  
  936. 5.8.1. Function types
  937.  
  938. For the supported continuous distributions the  following function 
  939. types are available:
  940.  
  941. -  Probability  density (or  dP/dx), denoted  with an  "f" prefix, 
  942. e.g.,   fchi(x,r).   This   is   often  called   PDF  (probability 
  943. distribution function).
  944.  
  945. - Left  probability integral,  i.e. P(<=x),  prefixed with  a "p", 
  946. e.g., pgau(x,m,s). This function is also known as  CDF, cumulative 
  947. distribution function.
  948.  
  949. -  Central  probability  integral  (for symmetrical  distributions 
  950. only,  i.e.  Gaussian and  Student), prefixed  with an  "a", e.g., 
  951. astu(x,r).  If  m  is  the center  of the  distribution, then  the 
  952. central probability is defined as an integral of  the PDF  over an 
  953. interval from m-|x-m| to  m+|x-m|, i.e.  where the  random variate 
  954. departing from m by less than x does.
  955.  
  956. -  Functions  inverse  to  integrals use  prefixes "ip"  and "ia", 
  957. respectively. For example, ipchi(p,r)  returns a  value of  x such 
  958. that pchi(x,r)=p.
  959.  
  960. In other words, inverse probability functions will find a value of 
  961. x,  corresponding  to  a  given  probability  integral.  This   is 
  962. frequently used in confidence interval building and in  hypothesis 
  963. testing.
  964.  
  965. For discrete distributions (Binomial and Poisson) similar types of 
  966. functions are provided, except that "probability  density" in  the 
  967. descriptions  above  should  be  replaced with  "probability", and 
  968. "integral" with "sum".
  969.  
  970. Note  that  the  symbol  "<=" used  in our  definition of  the "p" 
  971. (cumulative) functions is meaningfully different from  a "<"  only 
  972. for discrete distributions. Some authors use "<" instead,  so that 
  973. their discrete formulae may have to be modified before being  used 
  974. with Ex.
  975.  
  976.  
  977. 5.8.2. Supported distributions
  978.  
  979. The following  distributions are  supported, with  x denoting  the 
  980. random  variate   and  other   function  arguments   standing  for 
  981. distribution parameters.
  982.  
  983. fgau(x,m,s)
  984.  
  985. Gaussian (Normal) distribution with mean m and standard  deviation 
  986. s>0.
  987.  
  988. fchi(x,r)
  989.  
  990. Chi-square distribution with r>0 degrees of freedom.
  991.  
  992. fstu(x,r)
  993.  
  994. Student (t) distribution with r>0 degrees of freedom.
  995.  
  996. fsne(x,r1,r2)
  997.  
  998. Snedecor (F) distribution with r1>0 and r2>0 degrees of freedom.
  999.  
  1000. fpoi(x,m)
  1001.  
  1002. Poisson distribution with the parameter (mean) m>0.
  1003.  
  1004. fbin(x,n,p)
  1005.  
  1006. Binomial distribution with success probability 0<p<1 and number of 
  1007. tries n>=0.
  1008.  
  1009. fgam(x,a)
  1010.  
  1011. Gamma distribution with the parameter a>0.
  1012.  
  1013. fbet(x,a,b)
  1014.  
  1015. Beta distribution with parameters a>0 and b>0.
  1016.  
  1017. Replacing "f" with "p" or "a" gives cumulative  probabilities, and 
  1018. with   "ip"   and   "ia"   -  functions   inverse  to   cumulative 
  1019. probabilities.
  1020.  
  1021.  
  1022. 5.9. Feet and pounds functions
  1023.  
  1024. Two convenience  functions are  supplied for  use with  non-metric 
  1025. units:
  1026.  
  1027. lb(x,y) - converts x pounds and y ounces into pounds
  1028.  
  1029. ft(x,y) - converts x feet and y inches into feet
  1030.  
  1031.  
  1032. Obviously, lb(x,y) is defined as x+y/16, while ft(x,y)  as x+y/12. 
  1033. Both  x  and y  may be  any arithmetic  expressions. For  example, 
  1034. ft(3,1+1/2) will result in 3.125.
  1035.  
  1036. Conversions in the inverse direction, e.g., translating feet  into 
  1037. feet-inches and fraction are described in Section 10.4.
  1038.  
  1039.  
  1040. 6. Operation priority
  1041.  
  1042. Functions and operators are executed from high to low priority, as 
  1043. listed below:
  1044.  
  1045. -  High  priority:  "^",  "!", "²"  (square), "ⁿ"  (cube), implied 
  1046. multiplication, functions
  1047.  
  1048. - Medium priority: "*" and "/"
  1049.  
  1050. - Low priority: "+" and "-"
  1051.  
  1052. An operand with operators on both sides of it will  associate with 
  1053. the higher priority operator of the  two. If  both priorities  are 
  1054. the same, then the left operator (low and medium priority)  or the 
  1055. right one (high priority) is applied first.
  1056.  
  1057. This order can be arbitrarily changed with parentheses, as in  the 
  1058. commonly accepted notation.
  1059.  
  1060. Examples:
  1061.  
  1062.    2*sin 2x means 2*sin(2*X)
  1063.  
  1064.    2sin 2*x means 2*sin(2)*X
  1065.  
  1066.    a^b^cd means A^(B^(C*D))
  1067.  
  1068.    a+b*cd^3.1 means A+(B*(C*(D^3.1)))
  1069.  
  1070.    a sin hx means A*sin(H*X)
  1071.  
  1072.    asinh x means asinh(X)
  1073.  
  1074.    ln xⁿ means ln(Xⁿ)
  1075.  
  1076.  
  1077. 7. Other operations on expressions
  1078.  
  1079. Evaluation is just one of the operations which  Ex can  perform on 
  1080. expressions.  The  other operations  are performed  in two  steps. 
  1081. First, enter
  1082.  
  1083.                       Expression = Variable
  1084.  
  1085. into the Display Line.  The expression  defines a  function, F(x), 
  1086. and variable, x, or the function argument, with  respect to  which 
  1087. the operation on F(x) is performed. The result will be also stored 
  1088. in x (if not supplied, @ will be used as a default.)
  1089.  
  1090. Other variables can be used in  F(x) as  constant parameters,  and 
  1091. must have values assigned before the operation is performed.
  1092.  
  1093. After the function and its argument are defined,  pressing one  of 
  1094. the assigned F-keys will perform the operation, prompting  you for 
  1095. the  necessary  parameters.  Here  we  will  discuss  the  numeric 
  1096. operations,  while  plotting  will  be  postponed  until the  next 
  1097. chapter.
  1098.  
  1099.  
  1100. 7.1. Numerical integration
  1101.  
  1102. Computing a definite integral of F(x) over x  is done  by pressing 
  1103. [Num|Int].  Ex  will prompt  you for  the integration  limits (two 
  1104. numbers separated with a space) and for the desired accuracy.
  1105.  
  1106. The Romberg algorithm used here is usually more efficient than the 
  1107. well-known Simpson method.
  1108.  
  1109. The  accuracy  parameter  needs   more  explanation.   Instead  of 
  1110. terminating the algorithm when two subsequent  iterations, r1  and 
  1111. r2, differ by less than some absolute or  relative value,  Ex does 
  1112. it when
  1113.  
  1114.                     abs(r1-r2)/(1+abs(r2)) < h
  1115.  
  1116. where h is the entered accuracy.
  1117.  
  1118. Note  that  for abs(r2)<<1  the value  of h  is equivalent  to the 
  1119. absolute, while for abs(r2)>>1 - to the relative accuracy limit.
  1120.  
  1121.  
  1122. 7.2. Numerical differentiation
  1123.  
  1124. Similarly,  pressing  [Num|Der]  for   a  given   expression  will 
  1125. numerically compute the derivative of F(x) with respect to x.
  1126.  
  1127. The  program  will  ask  for  the  argument  value  at  which  the 
  1128. derivative is to be computed, and  then for  initial step  for the 
  1129. self-adjusting numerical algorithm it uses.
  1130.  
  1131. (This is NOT the step for a linear  approximation of  a derivative 
  1132. with an increment ratio, or for the square  approximation used  in 
  1133. Version 1.0; we now use a better algorithm,  described by  W.Press 
  1134. et al. in Numerical Recipes, 2nd Ed.)
  1135.  
  1136. If the argument value is x and the entered step  h, the  algorithm 
  1137. uses the initial step of d = h*(1+abs(x)), reducing it to get  the 
  1138. most accurate estimate, at least for well-behaved functions.   For 
  1139. most functions the default value of h=0.01 is close to optimum.
  1140.  
  1141. As in the case of integration, the h  parameter corresponds  to an 
  1142. absolute  step  value  for  abs(x)<<1 and  to a  relative one  for 
  1143. abs(x)>>1.
  1144.  
  1145.  
  1146. 7.3. Equation solving
  1147.  
  1148. To solve an equation F(x)=0, press [Num|Zer]. Ex  will prompt  you 
  1149. for  the  initial  interval  estimate, (x1,x2),  and the  required 
  1150. accuracy, h.
  1151.  
  1152. The solution is found using the bisection method.
  1153.  
  1154. It is expected that F(x1)*F(x2)<0, or an error will be diagnosed.
  1155.  
  1156. This is equivalent to asking for an odd number of solutions inside 
  1157. (x1,x2). If it is greater than one, just  one (any)  solution will 
  1158. be found. Plotting F(x) may be a good way to estimate the  initial 
  1159. interval.
  1160.  
  1161. The accuracy parameter h is, again, defined in our specific style: 
  1162. if  the  reached  solution   is  x,   then  its   error  will   be 
  1163. dx<h*(1+abs(x)).  Our  default h=1e-6  seems to  be just  fine for 
  1164. general use.
  1165.  
  1166.  
  1167. 7.4. Computing sums
  1168.  
  1169. [Num|Sum] will compute the sum of F(x) for x ranging from x1 to x2 
  1170. with step h. You will be prompted for  the values  of these  three 
  1171. parameters.
  1172.  
  1173. More precisely, the sum will be computed as
  1174.  
  1175.               F(x1)+F(x1+h)+F(x1+2*h)+...+F(x1+n*h)
  1176.  
  1177. where n is the largest integer such that
  1178.  
  1179.                      x1+n*h < x2+h/2 for h>0
  1180.  
  1181. or
  1182.  
  1183.                      x1+n*h > x2+h/2 for h<0.
  1184.  
  1185.  
  1186. 8. Function plotting.
  1187.  
  1188. A function defined by an expression line as F(x) can be plotted by 
  1189. using the [Plt|Plt] F-key  sequence. After  prompting you  for the 
  1190. horizontal and  vertical plot  range, the  function will  be drawn 
  1191. together with the plot box, scale ticks and tick labels.
  1192.  
  1193. Pressing  F10  while plotting  is in  progress will  interrupt it. 
  1194. (Whatever has been drawn will still  be buffered  as described  in 
  1195. Section  8.5,  unless you  exit the  plot screen  by pressing  F10 
  1196. again.)
  1197.  
  1198. Before the actual plotting, however, you may want  to adjust  some 
  1199. of the plot style parameters. This is done with use  of the  other 
  1200. [Plt|...] keys.
  1201.  
  1202.  
  1203. 8.1. Logarithmic scale
  1204.  
  1205. The [Plt|LgX]  and [Plt|LgY]  keys toggle  the logarithmic  scales 
  1206. along the x- and y-axis, respectively.
  1207.  
  1208. An attempt to use  logarithmic scale  while any  of the  limits is 
  1209. non-positive, will cause an error diagnostic.
  1210.  
  1211.  
  1212. 8.2. Axis and grid visibility
  1213.  
  1214. The x-  and y-axis  visibility is  toggled by  the [Plt|Axs]  key, 
  1215. while the grid - by [Plt|Grd]. The former option does not have  to 
  1216. be selected if the latter is.
  1217.  
  1218. The grid spacing and tick values are selected automatically by the 
  1219. program.
  1220.  
  1221.  
  1222. 8.3. Plot precision
  1223.  
  1224. Our  plotting  algorithm  draws  the function  curve by  joining a 
  1225. series of (x,y) points with straight line segments. Obviously, the 
  1226. acceptable segment length depends on function shape (more exactly: 
  1227. its local curvature).
  1228.  
  1229. The algorithm  adjusts the  segment length  appropriately for  the 
  1230. local curvature. This may be done in two slightly different  ways, 
  1231. differing in drawing speed and in plot accuracy.
  1232.  
  1233. For most functions, the low accuracy  setting (default)  should be 
  1234. good enough. You can always switch into the  higher accuracy  with 
  1235. use of [Plot|Acc], paying the price of slower drawing process.
  1236.  
  1237.  
  1238. 8.4. Errors and points out of range
  1239.  
  1240. Any  arithmetic  errors  during  the  computation  of the  plotted 
  1241. function will be ignored, together with the point in question.  Ex 
  1242. will try to bring the function line as close to any such bad point 
  1243. as possible, usually closer than one pixel along the x-axis.
  1244.  
  1245. Any parts of the  function curve  outside the  plot range  will be 
  1246. clipped off. This may, however, lead to Ex  missing a  very narrow 
  1247. spike (or dip) entering the plot range and then leaving  it again. 
  1248. Such an effect is possible if  the width  of the  whole effect  is 
  1249. less than two screen pixels.
  1250.  
  1251.  
  1252. 8.5. Plot screen buffering
  1253.  
  1254. When a plot is ready, pressing any key will save  the screen  in a 
  1255. plot  buffer  and  return  you to  the Main  Screen. There  is one 
  1256. exception: pressing the F10 key will exit the plot without  saving 
  1257. the buffer (its old contents will not be overwritten).
  1258.  
  1259. The last saved plot screen can be recalled by pressing [Plo|Sho].
  1260.  
  1261.  
  1262. 8.6. Plot overlays
  1263.  
  1264. Instead  of  plotting  a  function on  a clean  slate by  pressing 
  1265. [Plt|Plt], it can also be done on top  of the  previously buffered 
  1266. screen,  with  [Plt|Add].  This  operation does  not ask  for plot 
  1267. limits, using the ones for which the buffered plot has been drawn.
  1268.  
  1269. Similarly, any changes in plot style parameters (except  accuracy) 
  1270. will be ignored, and the saved settings will be used instead.
  1271.  
  1272.  
  1273. 9. User-defined functions
  1274.  
  1275. Ex allows you to introduce up to six user-defined functions. These 
  1276. functions, dfa..dff, can be then used in expressions  exactly like 
  1277. the built-in ones.
  1278.  
  1279.  
  1280. 9.1. Defining a user function
  1281.  
  1282. Any expression can be defined as a function of a  single variable. 
  1283. To do it, enter
  1284.  
  1285.                       Expression = Variable
  1286.  
  1287. and  press  [Def].  At  the "Define  function:" prompt,  enter the 
  1288. function name: dfa..dff. The expression will be then defined as  a 
  1289. function of  the specified  variable (i.e.  the one  following the 
  1290. "=").
  1291.  
  1292. The function parameter variable is just a dummy, used only  in the 
  1293. function definition. The "real" Ex variable of that name will  not 
  1294. be modified by any subsequent function evaluations.
  1295.  
  1296. A  user-defined  function may  refer to  others of  that kind.  It 
  1297. cannot, however, refer to itself, directly or indirectly (i.e. via 
  1298. other functions). Such illegal uses will be detected at an attempt 
  1299. to evaluate an expression.
  1300.  
  1301.  
  1302. 9.2. Recalling a user function
  1303.  
  1304. To  recall  and review  a user-defined  function, press  [Sho] and 
  1305. answer the  prompt with  the function  name. The  function formula 
  1306. will be displayed in the Expression Line.
  1307.  
  1308. The function can be then modified and re-defined.
  1309.  
  1310.  
  1311. 10. Data conversions
  1312.  
  1313. All operations discussed in this chapter  are applied  directly to 
  1314. the variable displayed in the Last Result Field, without involving 
  1315. the Expression Line at all.
  1316.  
  1317. They are activated from the Conversion Menu, available by pressing 
  1318. [Con] in the Main Menu.
  1319.  
  1320.  
  1321. 10.1. Unit conversion
  1322.  
  1323. Pressing  [Con|Uni]  will  convert  the value  of the  last Result 
  1324. Variable from a chosen  physical unit  to another.  The conversion 
  1325. result will be stored in the Result Variable again.
  1326.  
  1327. If the Last Result Field is  empty (i.e.  the Result  Variable has 
  1328. not been designated), Ex will convert a single  unit, storing  the 
  1329. result in the Default Variable, @.
  1330.  
  1331.  
  1332. 10.1.1. The unit menus
  1333.  
  1334. Before the conversion, a sequence of three pop-up menus will query 
  1335. you for the following information:
  1336.  
  1337. - The quantity to convert (e.g., length)
  1338.  
  1339. - Units to convert from
  1340.  
  1341. - Units to convert to
  1342.  
  1343. Inside a pop-up menu use arrow keys to move around, and Return  to 
  1344. make a selection. Pressing Esc or F10 at  any moment  will abandon 
  1345. the operation.
  1346.  
  1347.  
  1348. 10.1.2. Units supported
  1349.  
  1350. In the current non-registered version Ex converts units of length, 
  1351. area,  volume,  time,  speed,  mass,  force,  energy,  power   and 
  1352. pressure. Units range from metric (with SI displayed always at the 
  1353. top of a menu),  to American  (miles, gallons),  traditional (kWh, 
  1354. calories).
  1355.  
  1356. Temperature conversions between Fahrenheit and Celsius degrees are 
  1357. not supported.
  1358.  
  1359. The precision of unit conversions is determined by the accuracy of 
  1360. coefficients used; a care has been taken to use the  most accurate 
  1361. coefficients available.
  1362.  
  1363. ***  The  registered versions  of Ex  come with  a setup  program, 
  1364. taking a text file with any unit definitions supplied by the user, 
  1365. and converting it into a customized .UNI file.  This way  the unit 
  1366. conversion feature can be  customized and/or  extended. The  setup 
  1367. program is described in a separate document.
  1368.  
  1369.  
  1370. 10.2. Angle display as DMS
  1371.  
  1372. The  value  of  the  last Result  Variable can  be, treated  as an 
  1373. angular quantity, converted to degrees, minutes and seconds. To do 
  1374. it, press [Con|Dms].
  1375.  
  1376. The input is assumed to be in degrees or radians, depending on the 
  1377. current  angular  mode. (This  means the  mode at  the moment  the 
  1378. conversion is performed, not when the value was computed.)
  1379.  
  1380. The operation does not affect the  value of  the Result  Variable, 
  1381. just the way in which it is displayed.
  1382.  
  1383. Pressing [Con|Dms] again will return to the previous display mode.
  1384.  
  1385.  
  1386. 10.3. Conversion to fractions
  1387.  
  1388. [Con|Fra] will attempt to display the  Result Variable  in a  form 
  1389. consisting of a whole part and a (proper)  fraction. For  example, 
  1390. if the Result Variable has a value of -3.375, the display will  be 
  1391. "-3 3/8".
  1392.  
  1393. Ex will find the lowest fraction denominator providing  a relative 
  1394. accuracy better  than 10e-16.  The largest  denominator considered 
  1395. this way is 360;  if none  is found,  1000 will  be used,  and the 
  1396. representation will be only approximate.
  1397.  
  1398. This operation does not affect the value of the Result Variable.
  1399.  
  1400. It is also possible to force the result  (by rounding  it) into  a 
  1401. given denominator value; see Section 10.5.
  1402.  
  1403.  
  1404. 10.4. Feet and pounds
  1405.  
  1406. Pressing [Con|Ft] and [Con|Lb], will treat the value of the Result 
  1407. Variable  expressed  in  feet  (pounds),  and  display  it  as two 
  1408. integers: feet  and inches  (or pounds  and ounces)  and a  proper 
  1409. fraction of an inch (ounce).
  1410.  
  1411. As described  in the  previous section,  Ex will  try to  find the 
  1412. lowest  value  of  the  inch  (ounce)  value denominator  with the 
  1413. maximum relative accuracy better than 1e-6. Again, if no value  up 
  1414. to 360 is found, 1000 will be used.
  1415.  
  1416. Both operations affect only the way  in which  the last  result is 
  1417. displayed; its actual value remains unchanged.
  1418.  
  1419. If you need a particular value  of the  inch (ounce)  denominator, 
  1420. use the result rounding feature, described in the next section.
  1421.  
  1422.  
  1423. 10.5. Result rounding
  1424.  
  1425. The  current  result value  can be  rounded to  the nearest  whole 
  1426. multiplicity of 1/n (with n>0, for which you will be  prompted) by 
  1427. pressing [Con|Rou]. The result value will actually be  affected by 
  1428. this.
  1429.  
  1430. If, at the moment of this operation, the result is being displayed 
  1431. in the feet/inches (pounds/ounces) mode, then the rounding will be 
  1432. done to the nearest 1/n-th of an inch  (ounce). If  the result  is 
  1433. shown  as  DMS, then  it will  be rounded  to 1/n-th  of a  degree 
  1434. (regardless  of  the current  angular mode).  After rounding,  the 
  1435. result will be displayed in the same notation as before.
  1436.  
  1437.  
  1438. 11. Miscellaneous operations
  1439.  
  1440. As it  is easy  to guess,  this chapter  will contain  information 
  1441. which did not fit anywhere else.
  1442.  
  1443.  
  1444. 11.1. On-line help
  1445.  
  1446. Ex has a rudimentary on-line help, activated by pressing the [Hlp] 
  1447. key  in  any  menu.  The  Help  Screen contains  a list  of topics 
  1448. available.  Entering  the  topic's  first few  letters (enough  to 
  1449. distinguish it  from others)  at the  prompt and  pressing Return, 
  1450. will bring the proper help page.
  1451.  
  1452. Pressing any key then will bring you back to the Help Screen, from 
  1453. where you can return to the Main Screen using Return or F10.
  1454.  
  1455.  
  1456. 11.2. Display precision
  1457.  
  1458. [Set|Dig] sets the way the result is displayed in the Status Line. 
  1459. You will be prompted for the required display precision, which can 
  1460. be entered in one of two ways:
  1461.  
  1462. (1) As the total number of significant digits  to display  - enter 
  1463. the desired value, from 1 to 16. The actual number of digits shown 
  1464. in  a  given result  may differ,  as the  trailing (insignificant) 
  1465. zeros will be dropped.
  1466.  
  1467. (2) As the number of digits after the  decimal point  - enter  the 
  1468. point followed by the desired value, from 0  to 9,  e.g.,".6". The 
  1469. trailing zeros will be shown in this mode, and the  entered number 
  1470. of fractional digits may be adjusted so that  the total  number of 
  1471. digits shown will not exceed 16.
  1472.  
  1473. Additionally, entering just the letter "f" at the prompt will  set 
  1474. the "financial" display mode in which two digits after the decimal 
  1475. point are displayed. This mode is denoted with "$$"  shown in  the 
  1476. Status Line.
  1477.  
  1478. The values computed in  the financial  mode will  be shown  in the 
  1479. above fashion also in the Variable Fields.
  1480.  
  1481. In  the  other  modes  these fields  will not  be affected  by the 
  1482. display  accuracy  setting, always  using an  11-character display 
  1483. width.
  1484.  
  1485.  
  1486. 11.3. Autoscroll
  1487.  
  1488. [Set|Scl] enables the autoscroll mode, so that after  a successful 
  1489. expression evaluation (not a  numeric operation  or plotting!)  Ex 
  1490. will move  to the  next line,  clearing it.  Line 1  follows again 
  1491. after the last line.
  1492.  
  1493. Obviously, the old line can be recalled with the up arrow key.
  1494.  
  1495. No line change occurs if an error has been detected.
  1496.  
  1497. Enabled autoscroll is indicated by an arrow sign next to  the line 
  1498. number, in addition to an arrow before the "Scl" mnemonics  in the 
  1499. Set menu.
  1500.  
  1501.  
  1502. 11.4. Angular modes
  1503.  
  1504. To switch  between Rad  and Deg  mode, press  [Set|Deg]. An  arrow 
  1505. before "Deg" denotes that the degree mode is selected, and  "R" or 
  1506. "D" will be shown on the Status Line.
  1507.  
  1508. The angular mode affects the arguments of trigonometric functions, 
  1509. results of inverse trigonometric  functions and  angle conversions 
  1510. to and from the DMS form.
  1511.  
  1512.  
  1513. 11.5. Clearing expressions and data
  1514.  
  1515. Pressing [Clr] will, after  a confirmation,  clear all  expression 
  1516. lines, variables  and user-defined  functions. The  graphic screen 
  1517. will be cleared as well.
  1518.  
  1519.  
  1520. 11.6. Exiting the program
  1521.  
  1522. [Exit] will leave the program, after a confirmation prompt. Before 
  1523. the  prompt,  however,  the  current  status   of  Ex   (including 
  1524. expression lines, variables, user-defined  functions, the  graphic 
  1525. screen and all settings) will be saved to disk as EX.ENV.
  1526.  
  1527. This file is automatically read in as Ex is executed, so that  you 
  1528. can exit the program, do something else, and  re-enter it  without 
  1529. losing continuity of your work.
  1530.  
  1531. The  exit  prompt shows  the version  and (for  registered copies) 
  1532. serial number.
  1533.  
  1534. To exit quickly without saving (and with no  confirmation prompt), 
  1535. press Shift+F10; going to the Top Menu is not necessary.
  1536.  
  1537.  
  1538. 12. Program installation and use
  1539.  
  1540. Users of the PC-DOS mutation of Ex will be interested only in  the 
  1541. first three sections of this chapter;  the remaining  ones contain 
  1542. information specific to the HP95LX.
  1543.  
  1544.  
  1545. 12.1. The packing list
  1546.  
  1547. Whatever was the source  from which  you obtained  Ex, you  should 
  1548. have the following files:
  1549.  
  1550. EX.EXE - the program itself
  1551.  
  1552. EX.UNI - the file with unit conversion coefficients
  1553.  
  1554. EX.HLP - the text file used by on-line help
  1555.  
  1556. EX.ERR - the text file with error messages
  1557.  
  1558. EX.DOC - the manual (you are reading it now)
  1559.  
  1560. WHATS.NEW - a brief list of changes since the last version
  1561.  
  1562. READ_ME.1ST - the introductory file
  1563.  
  1564. *** Registered copies of Ex should contain a number of  additional 
  1565. files:
  1566.  
  1567. EXSET.EXE - a setup program
  1568.  
  1569. EXSET.DOC - its documentation
  1570.  
  1571. UNITS.TXT - a text file with user-editable definitions of units
  1572.  
  1573. EXTUT.DOC - file with tutorials for some of the features.
  1574.  
  1575.  
  1576. 12.2. Installing Ex on your computer
  1577.  
  1578. This is a simple task. Just copy the files EX.EXE,  EX.UNI, EX.HLP 
  1579. and EX.ERR to one directory, e.g., C:\EX.
  1580.  
  1581. If  that  directory is  included in  the PATH  definition in  your 
  1582. AUTOEXEC.BAT file, you will be able  to run  Ex while  anywhere in 
  1583. the system, as explained in the Section 12.4.
  1584.  
  1585.  
  1586. 12.3. Character set compatibility
  1587.  
  1588. Ex uses a number of characters beyond ASCII 127. All  of them  are 
  1589. displayed properly on the HP95LX. Other PC-DOS computers, however, 
  1590. offer  you  a choice  of character  sets; the  same is  true about 
  1591. printers.  Although  possible  incompatibilities  are only  mildly 
  1592. annoying (you may just skip all  this and  jump to  Section 12.4), 
  1593. here is how to avoid them.
  1594.  
  1595.  
  1596. 12.3.1. Screen (PC)
  1597.  
  1598. Most PC-DOS  machines use  a DOS  screen font  defined as  English 
  1599. (code-page 437, whatever that means). This is just  fine with  Ex: 
  1600. the  only  minor incompatibility  is that  the cube  operator, "ⁿ" 
  1601. (superscript "3") will be  displayed as  a superscript  "n". Also, 
  1602. when you  read this  documentation off  the screen,  the "⌠"  (Pi) 
  1603. symbol may look like the top half of an integral sign. Tough luck.
  1604.  
  1605. If  you  are bothered  with this,  or if  your setup  uses a  less 
  1606. compatible character  set (Portuguese,  Slavic, Nordic  etc.), you 
  1607. may switch to the Multilingual character set (code-page 850), 100% 
  1608. compatible with Ex. This is quite simple under DOS 5 or higher.
  1609.  
  1610. (1) Modify your CONFIG.SYS  file (very  carefully!) by  adding the 
  1611. following line:
  1612.  
  1613.             DEVICE=C:\DOS\DISPLAY.SYS CON=(EGA,850,1)
  1614.  
  1615. If appropriate, you can use DEVICEHIGH instead of DEVICE, and  the 
  1616. C:\DOS path may have to be changed to something else. On a  laptop 
  1617. you may need "LCD" instead of "EGA".
  1618.  
  1619. (2) Use  the following  two DOS  commands (either  manually or  by 
  1620. adding them to your AUTOEXEC.BAT file):
  1621.  
  1622.               MODE CON CP PREP=((850)C:\DOS\EGA.CPI)
  1623.  
  1624.                       MODE CON CP SELECT=850
  1625.  
  1626. The  same  lines may  be then  used to  go back  to your  previous 
  1627. character  set,  except that  "850" has  to be  replaced with  the 
  1628. proper code-page number (437 for English).
  1629.  
  1630.  
  1631. 12.3.2. Printer
  1632.  
  1633. A few of the upper-ASCII characters in this documentation may  not 
  1634. print right on your printer. You  can avoid  that by  setting your 
  1635. printer to the 850 Multilingual Character Set (HP LaserJet III has 
  1636. it, others may or may not, don't ask me!).
  1637.  
  1638. You may also request your neatly  printed copy  of this  manual at 
  1639. the time of program registration.
  1640.  
  1641.  
  1642. 12.4. Running Ex from DOS
  1643.  
  1644. To run Ex we must assure that
  1645.  
  1646. (i) DOS will find the program file, EX.EXE
  1647.  
  1648. and
  1649.  
  1650. (ii) Ex will find  its related  files EX.HLP,  EX.ERR, EX.UNI  and 
  1651. EX.ENV.
  1652.  
  1653. The first is done either by moving (with use of the CD command) to 
  1654. the directory where Ex resides before running it,  or, preferably, 
  1655. by  specifying  this  directory  in  the  PATH  statement  in your 
  1656. AUTOEXEC.BAT file.
  1657.  
  1658. The second is done by setting the environment variable named EX to 
  1659. the Ex directory path. (This is needed only if you  run Ex  from a 
  1660. directory other than its own.)
  1661.  
  1662. For example, if Ex resides in C:\EX, then your AUTOEXEC.BAT should 
  1663. have a line like
  1664.  
  1665.                              EX=C:\EX
  1666.  
  1667. An optional trailing backslash is allowed  for compatibility  with 
  1668. earlier versions.
  1669.  
  1670.  
  1671. 12.5. Running from the Filer (HP)
  1672.  
  1673. As distributed,  Ex  for the  HP95LX palmtop  does not  work under 
  1674. System Manager.
  1675.  
  1676. You may run it from DOS as explained above, or from the  Filer, by 
  1677. highlighting EX.EXE and pressing F4.
  1678.  
  1679. In that case the "SET EX" line in  AUTOEXEC.BAT is  not necessary, 
  1680. although you may leave it there.
  1681.  
  1682.  
  1683. 12.6. Making a loader (HP)
  1684.  
  1685. The Loader Maker shareware utility by David Goodman can be used to 
  1686. make  an  EX.EXM file,  allowing to  run Ex  from the  built-in HP 
  1687. applications by pressing a  "hot key"  (on the  other hand,  these 
  1688. applications will not be accessible until you exit Ex).
  1689.  
  1690. The process is described in the Loader Maker's instructions.
  1691.  
  1692.  
  1693. 12.7. Saving disk space (HP)
  1694.  
  1695. The RAMdisk space on the HP95LX is quite  limited; every  kilobyte 
  1696. counts, and the program itself is quite large (about 80k).
  1697.  
  1698. You may save some  space by  shrinking EX.EXE  with the  shareware 
  1699. Diet program by Teddy  Matsumoto. For  the price  of a  few second 
  1700. delay in program loading, you will save almost 30k!
  1701.  
  1702. After you become familiar with Ex, you can get rid  of the  EX.HLP 
  1703. file. The on-line help  will become  disabled, but  you will  gain 
  1704. about 8k of extra space on your disk.
  1705.  
  1706. Removing  the  EX.ERR  file   is  also   possible,  although   not 
  1707. recommended: the gain is much smaller,  and error  diagnostic will 
  1708. be reduced to cryptic error numbers - not worth the trouble.
  1709.  
  1710. Similarly, removing EX.UNI will save about 3k, disabling  the unit 
  1711. conversion.
  1712.  
  1713.  
  1714. 13. Registration and distribution
  1715.  
  1716. Ex is a copyrighted program, released as shareware.  You are  free 
  1717. to use any evaluation (non-registered) copy of it on a trial basis 
  1718. for a month or so. If  you decide  to use  it afterwards,  you are 
  1719. expected to  register it  (as described  below); otherwise  please 
  1720. delete it from your system.
  1721.  
  1722.  
  1723. 13.1. How to register
  1724.  
  1725. To  register,  send  your  name  and  address  (including   GEnie, 
  1726. CompuServe  or   Internet,  if   applicable)  together   with  the 
  1727. appropriate registration fee - a check or money order (U.S. funds, 
  1728. drawn on a U.S. bank) to
  1729.  
  1730.                            J.A.Wrotniak
  1731.                          2057 Happy Lane
  1732.                       Crofton, MD 21114-1917
  1733.  
  1734. Please state  your current  version number  and computer  type (HP 
  1735. palmtop versus any other DOS machine).
  1736.  
  1737. The basic registration fee is $30, and the complete price list can 
  1738. be found in Section 13.3.
  1739.  
  1740.  
  1741. 13.2. The extra goodies
  1742.  
  1743. Let  as  face  the  sad  reality:  99% of  people using  shareware 
  1744. programs never pay a penny to the authors.
  1745.  
  1746. To increase chances that you keep your end of the deal, those  who 
  1747. pay the registration fee will receive a package of extra  goodies, 
  1748. including:
  1749.  
  1750. * The  newest registered  (enhanced) version  of Ex  on a  3.5" DD 
  1751. floppy disk
  1752.  
  1753. * A setup program for customization of the Ex unit file
  1754.  
  1755. * A file with step-by-step tutorials
  1756.  
  1757. * A printout of this documentation (if requested)
  1758.  
  1759. *** Registered copies of Ex, denoted  with an  "R" in  the version 
  1760. number  (e.g.,  1.16R/HP  or  1.16R/PC),  cannot  be  distributed: 
  1761. resold, leased, given away, placed on  electronic bulletin  boards 
  1762. etc.
  1763.  
  1764. *** The owner may  make backup  copies only  for his/her  own use, 
  1765. safety and convenience.
  1766.  
  1767. ***  Every  registered  copy  of  Ex  has a  unique serial  number 
  1768. embedded inside and displayed at the program exit prompt.   Please 
  1769. refer to this number in all related correspondence.
  1770.  
  1771.  
  1772. 13.3. Registration fees
  1773.  
  1774. Here is the complete price list:
  1775.  
  1776. - A single copy of Ex (PC or HP): $30
  1777.  
  1778. - Both versions at the same time: $45
  1779.  
  1780. - The other mutation ordered later: $20
  1781.  
  1782. - A single update to a new version: $10
  1783.  
  1784. - Both updates at the same time: $15
  1785.  
  1786.  
  1787. 13.4. Distribution
  1788.  
  1789. You are free to distribute Ex (only evaluation copies, without  an 
  1790. "R" in  the version  number) to  anyone, as  long as  all original 
  1791. files, as in the Packing List above, are enclosed. This permission 
  1792. extends to the electronic distribution.
  1793.  
  1794. Please  do  not  distribute  (give  away,  sell,  lease,  post  on 
  1795. electronic bulletin boards etc.) any registered versions of Ex.
  1796.  
  1797. Public  Domain  and  shareware  vendors are  granted the  right to 
  1798. include complete evaluation copies of Ex into their libraries only 
  1799. if the total cost to the  user stays  within the  limit of  $6 per 
  1800. disk; otherwise my explicit permission is required.
  1801.  
  1802. (I would, however, recommend contacting me  ahead of  time; I  may 
  1803. already have a newer version.)
  1804.  
  1805.  
  1806. 13.5. Support
  1807.  
  1808. If you have any questions, suggestions or problem  reports, I  can 
  1809. be contacted on GEnie (J.WROTNIAK) or CompuServe (70611,2552).  My 
  1810. email address on the Internet is "wrotniak@umdhep.umd.edu".
  1811.  
  1812. If you do not have an access to  these services,  write under  the 
  1813. address shown above. I read all letters and answer most of them.
  1814.  
  1815.  
  1816. 13.2. Improvements and new features
  1817.  
  1818. Ex  is  still  changing  and  growing.  I  am  using  it   a  lot; 
  1819. unavoidably, the program reflects, to a large extent at least,  my 
  1820. own preferences and working habits. In your own  interest, let  me 
  1821. know what you like and dislike about Ex, and how would you like it 
  1822. to evolve.
  1823.  
  1824.  
  1825. 13.7. Credits
  1826.  
  1827. Ex  has  been  developed   in  Turbo   Pascal  6.0   from  Borland 
  1828. International, and contains library code copyrighted by Borland.
  1829.  
  1830. Some of the math algorithms used in Ex have been borrowed from  my 
  1831. other program, El_Cal, running on the  Atari ST  series (the  real 
  1832. computers!) and distributed by Debonair Software.
  1833.  
  1834.  
  1835. 13.6. About the Author
  1836.  
  1837. Lest you  use a  program written  by a  complete stranger,  let me 
  1838. introduce myself.
  1839.  
  1840. I  am  a physicist  by education,  with M.Sc.  and Ph.D.  from the 
  1841. University of  Lodz, Poland,  where I  have spent  16 years  doing 
  1842. research  in  high-energy  cosmic  ray physics,  at the  same time 
  1843. teaching physics, numerical methods and computer science.
  1844.  
  1845. In  the  United States  since 1984,  currently I  am working  as a 
  1846. software  systems  engineer  and  Chief  Scientist  for  Aerospace 
  1847. Research Associates, Inc. in Maryland.
  1848.  
  1849. Outside of my regular job, I still do  physics. I  am also  active 
  1850. among the Atari ST computer enthusiasts,  programming quite  a lot 
  1851. for that  machine and  writing a  regular column  for the  Current 
  1852. Notes magazine.
  1853.