home *** CD-ROM | disk | FTP | other *** search
/ Mega CD-ROM 1 / megacd_rom_1.zip / megacd_rom_1 / MATH / CC4.ZIP / CC4.HLP < prev    next >
Text File  |  1991-03-27  |  84KB  |  2,182 lines

  1. Remarks on structure of help file.  This screen is never displayed by CC.
  2. Each screen of information begins with a centered title, and the last line
  3. is followed by CHR(200) ╚ .  Following that is the list of screen numbers
  4. referred to by <A>, <B>, ... on the screen.  The screen number of this screen
  5. is 0, the first visible screen (the next screen) is number 1.  The last number
  6. in the list of numbers before the terminator 9999 is the screen number of the
  7. current screen.
  8. 9999
  9.                           CC - The Calculus Calculator
  10.                                   On-Line Help
  11.  
  12.  
  13. <A>  How to use On-Line Help
  14.  
  15. <B>  Capabilities of CC
  16.  
  17. <C>  Introduction to CC
  18.  
  19. <D>  Help for individual commands
  20.  
  21. <E>  Function keys and other special keys
  22.  
  23. <F>  Saving and loading your formulas and data files
  24.  
  25. <G>  Printing
  26.  
  27. <H>  Disk and Memory management
  28. 7
  29. 6
  30. 8
  31. 2
  32. 5
  33. 78
  34. 79
  35. 81
  36. 1
  37. 9999
  38.                                    Commands 1
  39.  
  40. <A>  !              <K>  ASC            <H>  COLS           <C>  DIV
  41. <H>  "              <B>  ASIN           <H>  COLVECTOR      <L>  DOTGRAPH
  42. <K>  '              <B>  ASINH          <H>  COND           <L>  DTG
  43. <A>  *              <B>  ATAN           <D>  CONJ           <H>  EIG
  44. <A>  +              <B>  ATAN2          <B>  COS            <H>  EIGENVAL
  45. <A>  -              <B>  ATANH          <B>  COSH           <T>  ELSE
  46. <H>  .*             <H,I> AVERAGE       <B>  COT            <T>  END
  47. <H>  ./             <L>  AXISCOLOR      <L>  CROSSX         <L>  ERASE
  48. <A>  /              <L>  AXISOFF        <L>  CROSSY         <W>  EVAL
  49. <W>  //             <L>  AXISON         <B>  CSC            <T>  EXIT
  50. <F>  <              <T>  BEEP           <M>  CURVE3D        <B>  EXP
  51. <F>  <=             <C>  BIN            <L>  CYAN           <H>  EYE
  52. <F>  <>             <A>  BINOM          <L>  DARKGRAY       <F>  FALSE
  53. <F>  ==             <L>  BKCOLOR        <B>  DEGREE         <L>  FIELD
  54. <F>  >              <L>  BLACK          <E>  DENOMINATOR    <L>  FILL
  55. <F>  >=             <L>  BLUE           <H>  DET            <R>  FIN
  56. <A>  ABS            <L>  BROWN          <H>  DIAG           <E>  FIX
  57. <B>  ACOS           <H>  CHARPOLY       <Q>  DIF            <E>  FLOAT
  58. <B>  ACOSH          <K>  CHR            <L>  DIFFG          <T>  FOR
  59. <F>  AND            <L>  COLOR          <H,I> DISPLAY       <X>  more commands
  60. 21
  61. 22
  62. 23
  63. 24
  64. 25
  65. 26
  66. 27
  67. 28
  68. 34
  69. 36
  70. 37
  71. 38
  72. 57
  73. 2
  74. 64
  75. 67
  76. 68
  77. 69
  78. 2
  79. 71
  80. 78
  81. 79
  82. 8
  83. 3
  84. 2
  85. 9999
  86.                                    Commands 2
  87.  
  88. <W>  FORGET         <T>  INPUT@         <I>  LIST           <H>  ONES
  89. <C>  FRAC           <T>  INPUTS         <L>  LISTG          <F>  OR
  90. <I>  FREQUENCIES    <T>  INPUTS@        <B>  LN             <L>  PA
  91. <O>  FSOLVE         <C>  INT            <B>  LNGAMMA        <M>  PA3
  92. <T>  FUNCTION       <L>  INTEG          <U>  LOADGRAPH      <A>  PAR
  93. <L>  GR             <C>  INTEGER        <U>  LOADVAR        <L>  PARAMG
  94. <M>  GR3            <Q>  INTOL          <B>  LOG10          <M>  PARAMG3D
  95. <L>  GRAPH          <F>  ISALIST        <H>  LU             <T>  PAUSE
  96. <M>  GRAPH3D        <F>  ISBIGNUM       <L>  MAGENTA        <B>  PI
  97. <T>  GRAPHICS       <L>  KEEPLINE       <L>  MARK           <H>  PINV
  98. <L>  GREEN          <I>  LENGTH         <H>  MATRIX         <L>  PLOT
  99. <C>  HEX            <L>  LEVELC         <M>  MATRIXG        <L>  PO
  100. <L>  HISTOGRAM      <L>  LIGHTBLUE      <H>  MATRIXTOL      <L>  POLARG
  101. <T>  IF             <L>  LIGHTCYAN      <H,I> MAX           <K>  POS
  102. <D>  IM             <L>  LIGHTGRAY      <L>  MAXCOLOR       <W>  PRECISION
  103. <O>  IMP            <L>  LIGHTGREEN     <H>  MEDIT          <V>  PRINT
  104. <O>  IMPLICIT       <L>  LIGHTMAGENTA   <H,I> MIN           <V>  PRINTGRAPH
  105. <R>  IN             <L>  LIGHTRED       <C>  MOD            <T>  PROCEDURE
  106. <R>  INDEPTH        <L>  LINE           <F>  NOT            <G,H,I> PRODUCT
  107. <T>  INPUT          <L>  LINESTYLE      <E>  NUMERATOR      <X>  more commands
  108. 21
  109. 22
  110. 23
  111. 24
  112. 25
  113. 26
  114. 27
  115. 28
  116. 34
  117. 36
  118. 37
  119. 38
  120. 57
  121. 3
  122. 64
  123. 67
  124. 68
  125. 69
  126. 3
  127. 71
  128. 78
  129. 79
  130. 8
  131. 4
  132. 3
  133. 9999
  134.                                    Commands 3
  135.  
  136. <H>  QR             <L>  SETCOLOR        <W>  TEXTCOLOR     <L>  WINDOW
  137. <L>  QU             <R>  SETINDEPTH      <L>  THICKLINE     <L>  WINDOWBOTTOM
  138. <L>  QUICKG         <R>  SETINTOL        <L>  THICKTEXT     <L>  WINDOWLEFT
  139. <B>  RADIAN         <H>  SETMATRIXTOL    <L>  THINLINE      <T>  WRITE
  140. <A>  RANDOM         <O>  SETSOLVETOL     <L>  THINTEXT      <L>  WINDOWRIGHT
  141. <H>  RANK           <B>  SINH            <H>  TRACE         <L>  WINDOWTOP
  142. <D>  RE             <B>  SIN             <L>  TRAJ          <L>  WRITE@
  143. <L>  RECT           <L>  SK              <H>  TRANS         <L>  WRITE@C
  144. <L>  RED            <L>  SKETCH          <F>  TRUE          <F>  XOR
  145. <H,I> REGR          <O>  SOLVE           <W>  UNDEFINED     <L>  YELLOW
  146. <T>  REPEAT         <J>  SOLVEPOLY       <L>  UNMARK        <H>  ZERO
  147. <T>  RETURN         <O>  SOLVETOL        <T>  UNTIL         <X>  More commands
  148. <A>  ROOT           <A>  SQRT            <K>  UPCASE
  149. <H>  ROWS           <H,I> STANDEV        <J>  VALPOLY
  150. <I>  ROWVECTOR      <G,H,I> SUM          <L>  VARYLINE
  151. <H>  RREF           <H>  SVD             <L>  VWRITE@
  152. <U>  SAVEGRAPH      <P>  TABLE           <L>  VWRITE@C
  153. <U>  SAVE           <B>  TAN             <T>  WAIT
  154. <B>  SEC            <B>  TANH            <T>  WHILE
  155. <L>  SETBKCOLOR     <T>  TEXT            <L>  WHITE
  156. 21
  157. 22
  158. 23
  159. 24
  160. 25
  161. 26
  162. 27
  163. 28
  164. 34
  165. 36
  166. 37
  167. 38
  168. 57
  169. 4
  170. 64
  171. 67
  172. 68
  173. 69
  174. 4
  175. 71
  176. 78
  177. 79
  178. 8
  179. 5
  180. 4
  181. 9999
  182.                                    Commands 4
  183.  
  184. <H,S> |             <B>  Σ (alt-s)      <E>    ² (alt-r)    <I>  {}
  185. <B>  ê (alt-e)      <D>  ≥ (alt-m)      <A,F>  ()           <J>  %
  186. <C>  î (alt-i)      <D>  ≤ (alt-l)      <F>    ^
  187. <B>  π (alt-p)      <E>  √ (alt-q)      <A,G,H>  []
  188.  
  189. Function Keys and other special keys
  190.  
  191. F1      Help   (If graphics screen visible, abbreviated help)  <K>
  192. F2      Print menu  (If graphics screen visible, print graphic)  <L>
  193. F3      Begin marking text        Shift-F3   Mark entire entry  <M>
  194. F4      Insert text cut with F3   Shift-F3   Delete text buffers  <M>
  195. F5      Scroll output up          Shift-F5   Scroll up full screen   <N>
  196. F6      Scroll output down        Shift-F6   Scroll down full screen  <N>
  197. F7      Save current work   (If graphics screen visible, save screen)  <O>
  198. F8      Load work from file <O>
  199.              Shift-F8  View directory    Control-F8  Change directory  <O>
  200. F9      Display last graph        Shift-F9   Toggle last graph to disk <P>
  201. F10     Toggle between Input Window and Subroutine Window <Q>
  202.  
  203. Insert           Toggle Insert/Overwrite mode <R>
  204. Control-Enter    Insert a blank line
  205. 34
  206. 22
  207. 24
  208. 26
  209. 21
  210. 10
  211. 30
  212. 37
  213. 29
  214. 82
  215. 7
  216. 79
  217. 18
  218. 11
  219. 78
  220. 63
  221. 71
  222. 11
  223. 35
  224. 5
  225. 9999
  226.                                Capabilities of CC
  227.  
  228. Evaluate formulas <A>
  229.     Using trigonometric, exponential and logarithmic functions <B>
  230.     Using real and complex numbers <C>
  231.           hexadecimal and binary numbers <D>
  232.           exact fractions and huge integers <E>
  233.           strings <F>
  234. Graph curves <G>, polar <H> and parametric <I> curves
  235. Graph surfaces <J>, paramtric surfaces <K>, space curves <L> and matrix data <M>
  236. Solve equations and systems of equations <N>
  237. Define implicit functions <O>
  238. Differentiate <P> and integrate <Q> functions
  239. Perform vector and matrix calculations <R> including eigenvalues and
  240.    eigenvectors <S> and statistical operations <T>
  241. Collect data into lists <U> and perform statistical operations <V>
  242. Save and load data from external files <W>
  243. Print calculations, results and graphs <X>
  244. Write your own Pascal-like functions and procedures <Y> using CC's powerful
  245.     mathematical and graphing operators.
  246. 21
  247. 22
  248. 24
  249. 23
  250. 25
  251. 37
  252. 40
  253. 41
  254. 42
  255. 58
  256. 59
  257. 60
  258. 61
  259. 64
  260. 65
  261. 68
  262. 69
  263. 28
  264. 31
  265. 32
  266. 34
  267. 35
  268. 78
  269. 79
  270. 71
  271. 6
  272. 9999
  273.                          How to use On-Line Help
  274.  
  275.      Items on each help screen are accompanied by letters surrounded by
  276. angle brackets, like <*>.  Pushing the corresponding letter on the keyboard
  277. will get you more help on this topic.
  278.  
  279.      To leave Help and return to CC, push <ESC>.  To back up to the previous
  280. help screen, push <PgUp>.
  281.  
  282.      Throughout these screens, CC commands are printed entirely in UPPERCASE
  283. letters.
  284.  
  285.      These help screens are stored in the file CC.HLP, which should be in the
  286. same directory as CC unless you have set up a different location in your
  287. configuration file <A>.
  288. 19
  289. 7
  290. 9999
  291.                               Introduction to CC
  292.  
  293. <A>  Stopping CC and saving your work so you can continue later
  294. <B>  Entering mathematical formulas into CC
  295. <C>  Understanding your results and controlling decimal precision
  296.          PRECISION and UNDEFINED
  297. <D>  Using variables for storing results
  298.          FORGET
  299. <E>  Defining your own functions
  300.          EVAL
  301. <F>  Creating two-dimensional graphs
  302. <G>  Creating three-dimensional graphs
  303. <H>  Writing your own procedures and functions
  304. <I>  Adding comments to your work with //
  305. <J>  Using TEXTCOLOR to control the colors of your screen
  306. <K>  Using cut and paste to copy and edit your formulas
  307. <L>  Creating a configuration file for your own system
  308. <M>  List of reserved words (4 screens)
  309. 9
  310. 10
  311. 12
  312. 13
  313. 14
  314. 38
  315. 57
  316. 15
  317. 16
  318. 17
  319. 18
  320. 19
  321. 2
  322. 8
  323. 9999
  324.                        Stopping CC and saving your work
  325.  
  326.      To stop CC, push Control-Q (for quit).  You will be asked if you want to
  327. save your work.  If you respond Y for yes, you will be asked to enter a file
  328. name for saving your work.  Enter any memorable name, followed by a period,
  329. followed by an extension.  The name can be up to 8 characters long, and the
  330. extension up to 3 characters.  One common practice is to always use the
  331. extension CC to identify CC files.  For example, you could call your work
  332. LEVERARM.CC .
  333.      To reload your work when you next use CC, start CC with the command:
  334.                    CC LEVERARM.CC
  335. That is, follow the program name CC with the name of the file containing your
  336. work.
  337.      When you restart CC you must execute all the lines in your Input Window.
  338. None of your functions or variables will be defined until you do this.
  339.      Advanced information:  Path information can be part of the file name.  CC
  340. will run files from remote directories, or CC can be in a remote directory and
  341. operate on a file in the current directory.
  342.  
  343.      See also <A> Using external files.
  344. 78
  345. 9
  346. 9999
  347.                     Entering mathematical formulas into CC
  348.  
  349.      Mathematical formulas are entered into CC much as you would ordinarily
  350. write them.  They are evaluated when you press <ENTER>.  The usual order of
  351. operations is followed, with exponentiation following multiplication and
  352. division following addition and subtraction. Parentheses () can be used to
  353. alter this order.  The main difference from ordinary mathematical notation is
  354. that everything must be written on one line. Here are some examples:
  355.  
  356.      Mathematics                                    CC
  357.                 2
  358.       2(3.2-4.3)                               2*(3.2-4.3)^2
  359.  
  360.       4.2 - 2.3
  361.       ---------                           (4.2 - 2.3)/(2.1 + 3.2)
  362.       2.1 + 3.2
  363.  
  364.        Sin(4.2)                                  SIN(4.2)
  365.  
  366.      See also editing entries <A>, entering numbers <B>, algebraic functions
  367. <C>, transcendental functions <D>, hexadecimal and binary numbers <E>, matrices
  368. <F>, complex numbers <G>, huge integers and exact fractions <H> and output <I>.
  369. 11
  370. 20
  371. 21
  372. 22
  373. 23
  374. 28
  375. 24
  376. 25
  377. 12
  378. 10
  379. 9999
  380.                                 Editing entries
  381.  
  382.      When typing an entry to CC, you can correct your entry by erasing with the
  383. Backspace and Delete keys, moving the cursor with the arrow keys, and toggling
  384. between insert and overwrite mode by pressing the Insert key.  You can leave
  385. your formula with the vertical arrow keys, but if you do the formula will not
  386. be evaluated.  To evaluate a formula, you must press <ENTER> while the cursor
  387. is somewhere in the formula.  Formulas that have been evaluated are displayed
  388. as normal text; unevaluated formulas, including the one you are currently
  389. typing, are displayed in boldface or a different color.
  390.      Formulas longer than one line can be entered into CC, but you must not
  391. press <ENTER> while typing an entry.  Just keep typing and let the entry flow
  392. from one line to the next.  If you press <ENTER>, you will cause your (partial)
  393. entry to be terminated and evaluated.
  394.      After using a formula once, you can use it again.  Move the cursor to
  395. it, modify it if desired, and push <ENTER>.  CC is controlled temporally like a
  396. calculator rather than spatially like a spreadsheet.  Your results depend on
  397. the order in which you execute your formulas, not on the order in which they
  398. are listed on your screen.
  399.      You can scroll more rapidly up and down your list of entries with the
  400. <PgUp> and <PgDn> keys.
  401.      You can add blank lines between formulas by pressing Control-Enter.
  402.      See Cut and Paste <A> for information on advanced editing.
  403. 18
  404. 11
  405. 9999
  406.           Understanding your results and controlling decimal precision
  407.  
  408.      When you enter a formula into CC and press <ENTER> <A>, the result appears
  409. after the variable ANS in the Output Window.  If you assigned your formula to a
  410. variable <B>, it will appear after the variable in the Output Window.
  411.  
  412.      If the formula you entered had an undefined result, for example 1/0, then
  413. the value UNDEFINED will be returned.  If UNDEFINED is combined with any other
  414. value, the result is UNDEFINED.  You can even enter UNDEFINED from the
  415. keyboard.
  416.  
  417.      You can control the number of significant digits displayed by CC with the
  418. command PRECISION(n), where n is a number between 1 and 9 (15 for CC87).
  419. PRECISION(0) causes results to be displayed in scientific notation:
  420. 1,234,567,890 = 1.23456789E9, -0.0000001 = -1E-7.
  421.  
  422.      Numbers displayed with î are complex values <C>.  These may be created by
  423. apparently real formulas like LN(-2) or ASIN(3) as well as by overtly complex
  424. formulas.
  425. 10
  426. 13
  427. 24
  428. 12
  429. 9999
  430.                       Using variables for storing results
  431.  
  432.      You can assign the result of any formula to a variable with a command
  433. like:    X = SIN(4.2) .  Variable names can be up to 12 characters long.  They
  434. must begin with a letter and use only letters and digits.  CC ignores upper and
  435. lower case distinctions in variable names, so AB, ab, Ab and aB are the same
  436. variable.  All of your variables are listed in the Output Window.  If there
  437. are more variables than can be shown at one time, you can scroll the Output
  438. Window with the function keys F5 and F6.
  439.      Once a variable is defined, it can be used in another formula.  Having
  440. defined X as above, you could define Y = ASIN(X).  You can also redefine a
  441. variable by storing a new value in it.  If you do this, you will lose the
  442. original value entirely.
  443.      Variables are useful for long calculations.  You can save yourself a lot
  444. of recalculations by always storing the results of your calculations in your
  445. own variables instead of leaving them in the default variable ANS.
  446.      You can destroy the variable X with the command FORGET(X).  If X stored a
  447. large list, you could regain a considerable amount of memory by FORGETting X.
  448. Also, since a variable and a function <A> cannot have the same name, you must
  449. forget a variable before using its name for a function, and vice versa.
  450.      Greek letters can be used in variable names:  α=alt-a, ß=alt-b, δ=alt-d,
  451. φ=alt-f, Γ=alg-g, ε=alt-h, Ω = alt-o, and Θ=alt-t.
  452. 14
  453. 13
  454. 9999
  455.                           Defining your own functions
  456.  
  457.      CC allows you to define your own functions for evaluating or graphing <A>.
  458. Anytime you find yourself using the same expression over and over, you should
  459. turn it into a function.  Here are some sample function definitions:
  460.                    f(x) = SIN(x + PI/3)
  461.                    g(x,y) = x^2 - y^2
  462.      Once defined, functions can be used in expressions or in other function
  463. definitions:
  464.                    y = f(3.2)
  465.                    z = g(4.1, -5.3)
  466.      Variables can be used in function definitions, and that leads to an
  467. important difference between functions and variables.  When a variable is
  468. defined, all terms of the definition are evaluated.  When a function is
  469. defined, its terms are not evaluated; they are evaluated when the function is
  470. evaluated.  That means that if a component of the function definition is
  471. changed, that change will be reflected the next time the function is evaluated.
  472.      You can force all the components of a function to be evaluated when the
  473. function is defined by preceeding the function with the command EVAL:
  474.                    f(x) = EVAL(x^2+a)
  475. 38
  476. 14
  477. 9999
  478.              Writing your own procedures and subroutine functions
  479.  
  480.      CC allows you to extend its power with multi-line procedures and functions
  481. written in a Pascal-like programming language.  All standard control structures
  482. are available.  These functions can have value parameters and function-name
  483. parameters.  You can write a routine that operates on an arbitrary function,
  484. like an equation-solving routine.  Subroutines can call one another
  485. irrespective of the order in which they are defined, and recursion is fully
  486. supported.
  487.      Subroutines can be used to implement algorithms from numerical analysis,
  488. to write interactive data analysis routines, or even to develop dynamic
  489. presentations and interactive mathematics lessons.  Programming commands are
  490. available to pause a routine or make it wait a specified number of seconds; to
  491. build complex graphics screens and permit the user to select one region with
  492. the crosshairs; to write messages to the user and to acquire input from text or
  493. graphics screens.  Text and graphics color can be controlled completely, and
  494. complex graphs can be recalled from disk for quick display.
  495.  
  496.      For more information on subroutines, see <A>.
  497. 71
  498. 15
  499. 9999
  500.                      Adding comments to your work with //
  501.  
  502.       You can add comments to your list of CC entries to remind yourself why
  503. you did what you did or to inform another user how to use your routines.
  504. Comments can be used in both the Input Window and the Subroutine Window.
  505.  
  506.       To add a comment to the end of an entry, preface the comment with the
  507. symbol //, for example:
  508.  
  509.                         s = 16*t^2  // Law of falling bodies
  510.  
  511.      A line can be started with //, in which case the entire entry is a comment.
  512. 16
  513. 9999
  514.              Using TEXTCOLOR to control the colors of your screen
  515.  
  516.      If you are using a color screen, you can specify the color of executed
  517. entries and all but the last output, the color of new entries and the last
  518. output, and the background color with the command:
  519.  
  520.                         TEXTCOLOR(foreground,highlight,background)
  521.  
  522.      Foreground, highlight and background must be integers between 0 and
  523. MAXCOLOR, or color words which are just synonyms for these integers.  The color
  524. words corresponding to 0..15 are:
  525.  
  526. BLACK    BLUE      GREEN      CYAN      RED      MAGENTA      BROWN  LIGHTGRAY
  527. DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE
  528.  
  529.         The author's favorite is TEXTCOLOR(BLUE, RED, LIGHTGRAY)
  530.         These colors can also be used for the graphics screens <A>.
  531. 51
  532. 17
  533. 9999
  534.               Using cut and paste to copy and edit your formulas
  535.  
  536.      You can copy part or all of one formula to another part of your Input
  537. Window or Subroutine Window as follows:  move the cursor to one end of the text
  538. to be copied, press F3, move the cursor to the other end (the selected text
  539. will be highlighted) and press <ENTER>.  At any later time, you can press F4,
  540. and the selected text will be copied at the cursor.
  541.      If you press <DEL> instead of <ENTER>, the selected text will disappear
  542. from the screen.  However, pressing F4 will still make it reappear at the
  543. position of the cursor.
  544.      You can insert the selected text at several points; just move the cursor
  545. to each place you want the text and press F4.
  546.      Pressing Shift-F3 will select the entire entry at the cursor, then
  547. pressing <ENTER> or <DEL> will either select or cut and select this entry.
  548.      CC has 10 buffers for saving text.  If you make a second selection, your
  549. first selection is retained.  You can cause it to be copied at the cursor by
  550. pressing Alt-1.  Each time you make a new selection, your previous selections
  551. are promoted through the text buffers and can be accessed with the keys Alt-1
  552. through Alt-9.  If you need to recover the memory used by the text buffers, you
  553. can empty all of them by pressing Shift-F4.
  554. 18
  555. 9999
  556.                Creating a configuration file for your own system
  557.  
  558.      CC starts with a number of default assumptions.  It starts in radian mode
  559. <A>, in insert mode <B>, with varying linestyles and colors <C>, and with
  560. certain screen colors <D>.  You can change these assumptions, you can change the
  561. location of the help file <E> and the last graph file <F>, and you can specify
  562. your printer type <G> with a configuration file.  To create a configuration
  563. file, press Control-F9 and answer the questions on the screen.  CC will create
  564. a file CC.CFG in the same directory as CC.  It will read this file the next
  565. time it starts and use the information found there to determine its default
  566. assumptions.
  567.  
  568.      If you already have a configuration file, you can change it by pressing
  569. Control-F9 and answering the questions on the screen.
  570. 22
  571. 11
  572. 49
  573. 17
  574. 7
  575. 63
  576. 79
  577. 19
  578. 9999
  579.                        Entering Numerical values into CC
  580.  
  581.      Numerical values are entered into CC just as you would ordinarily write
  582. them.  You can precede numbers with optional + or - signs.  The following are
  583. all valid numerical entries for CC:
  584.  
  585.                         3.47    0.347   .347   -347
  586.  
  587. Blanks are not permitted in numbers; the expression    - 34    is not valid.
  588.  
  589.      Numbers can be entered in scientific notation.  The exponent is preceded
  590. by E or e.  The following numbers are all valid and all equal:
  591.  
  592.              3.47    0.347E1    34.7e-1    347E-2    0.003470e3
  593.  
  594.      See also complex numbers <A>, huge integers and exact fractions <B>,
  595. hexadecimal and binary numbers <C>, and display precision <D>.
  596. 24
  597. 25
  598. 23
  599. 12
  600. 20
  601. 9999
  602.                       Arithmetic and algebraic functions
  603.  
  604.      Numbers <A> can be combined with + (addition), - (subtraction), *
  605. (multiplication), / (division) and ^ (exponentiation).  For example:
  606.  
  607.      3+4 = 7    3-4 = -1    3*4 = 12    3/4 = 0.75    3^4 = 81
  608.  
  609. Where it is not ambiguous, multiplication can be indicated by adjacency:
  610. 3(4-1) = 3*(4-1) = 9.  Implicit multiplication is potentially dangerous, and
  611. it is generally preferable to use * to indicate multiplication.
  612.  
  613.   The following functions are available (z is complex, x  real, n,m integers):
  614. SQRT(z) = square root of z -- abbreviation:  √=Alt-q
  615. z² = square of z -- ² entered as Alt-r
  616. ABS(z) = absolute value of z;
  617. n! = n-factorial
  618. RANDOM(n) = random integer in range 1..n
  619. RANDOM = random real in (0,1)
  620. INT(z) = integer part of x
  621. FRAC(z) = fractional part of x
  622. ROOT(x,n) = nth real root of x
  623. LNGAMMA(z) = natural log of Γ(z);  LNGAMMA(n+1) = LN(n!)
  624. BINOM(n,m) = binomial coefficient = n!/(m!*(n-m)!)
  625. 20
  626. 21
  627. 9999
  628.                     Trigonometric and exponential functions
  629.  
  630.      The value π = 3.14159... is entered into CC as PI or alt-p.  Available
  631. trignonmetric functions are:  SIN(x), COS(x), TAN(x), COT(x), SEC(x) and
  632. CSC(x).  Inverse trigonometric functions are:  ASIN(x), ACOS(x) and ATAN(x).
  633. Trig functions are evaluated in radian mode unless you have changed to degree
  634. mode by entering the command DEGREE.  You can switch back to radian mode by
  635. entering the command RADIAN.  The current mode is indicated in the upper right
  636. corner of the screen.
  637.  
  638.      The function ATAN2(x,y) returns the polar angle of the point (x,y).
  639.  
  640.      The base of the natural logarithms, ê = 2.718... is entered as alt-e.
  641. Available exponential functions are EXP(x) = ê^x, LN(x) = natural logarithm of
  642. x, and LOG10(x) = real log (base 10) of x.
  643.  
  644.      Hyperbolic functions are also defined:  SINH(x), COSH(x), TANH(x),
  645. ASINH(x), ACOSH(x) and ATANH(x).
  646.  
  647.      In all of these functions (except LOG10), x can be any real or complex
  648. value <A>.
  649. 24
  650. 22
  651. 9999
  652.                    Integers:  hexadecimal and binary numbers
  653.  
  654.      CC can distinguish integers from non-integers, and it will operate on
  655. integers with  n DIV m  (integer part of n/m) and  n MOD m  (remainder of n
  656. divided by m).
  657.  
  658.      Integers can be combined bitwise with the commands  n AND m,  n OR m
  659. and  n XOR m.  You can invert the bits in an integer with the command  NOT n .
  660.  
  661.      Integers can be entered in hexadecimal or binary notation.  Hexadecimal
  662. numbers are preceded by $, binary by #.  The following numbers are all equal:
  663.                            27 = $1a = #11011
  664.  
  665.      Integers, hexadecimal and binary numbers are all 32-bit quantities, but
  666. integers are signed and the others are not.  One kind of number can be changed
  667. to another with the command INTEGER(n)  (change to integer), HEX(n)  (change to
  668. hexadecimal)  and BIN(n)  (change to binary).
  669.  
  670.      There is a function PAR(n) that returns 1 if n is even and -1 if n is odd.
  671. This is useful for defining sums and products <A>.
  672.  
  673.      See also huge integers and exact fractions <B>;
  674. 25
  675. 23
  676. 9999
  677.                                 Complex numbers
  678.  
  679.      CC can use complex numbers as easily as real numbers.  Any of CC's
  680. functions which are mathematically defined for complex values, for example
  681. SIN(x) and EXP(x), will accept complex arguments.  Complex numbers are entered
  682. into CC like this:  3.2 - 4.7î, where î is entered with alt-i.
  683.  
  684.      Special complex functions include:
  685.  
  686. RE(z) = real part of z
  687. IM(z) = imaginary part of z
  688. CONJ(z) = conjugate of z
  689.  
  690.      If z is complex, then INT(z) returns INT(RE(z)) + INT(IM(z))î, and FRAC(z)
  691. is defined by INT(z) + FRAC(z) = z.  Also ABS(z) is the real modulus of z.  The
  692. polar argument of z can be computed as ATAN2(RE(z),IM(z)) <A>.
  693.  
  694.      Functions which do not use complex values include ATAN2, LOG10 and ROOT.
  695.  
  696.      Complex numbers can be defined with huge integer or exact fraction
  697. coefficients <B>.
  698. 22
  699. 25
  700. 24
  701. 9999
  702.                     Using huge integers and exact fractions
  703.  
  704.      CC has special routines to accomodate huge integers and exact fractions
  705. with huge numerators and denominators.  To enter a huge integer, precede it
  706. with &:  &12345678987654321 will be stored exactly.  To create an exact
  707. fraction, use two exact parts:  &2/&3 is stored as 2/3, not 0.666666667.
  708.      Huge integers and exact fractions can be added, subtracted, multiplied,
  709. divided, and operated on by integer exponents.  The functions DIV, MOD, ! and
  710. BINOM work on huge integers; ABS, INT and FRAC work on exact fractions.
  711.      If any other function is applied to an exact fraction, the fraction will
  712. be changed to a decimal before the function is applied.
  713.      Matrices <A> can be defined with exact fraction entries, in which case
  714. addition,multiplican and division of matrices will be exact.
  715.      If  x  is an exact fraction, then NUMERATOR(x) and DENOMINATOR(x) are the
  716. numerator and denominator of x, and FLOAT(x) is the floating point approximation
  717. to x.  Conversely, if x is a floating point number, FIX(x) is the exact fraction
  718. which is the floating point representation of x.  This is useful for turning
  719. integers into huge integers.  Note:  because of the inaccuracies in the floating
  720. point representation of numbers, FIX(1/3) is different from &1/&3 = 1/fix(3).
  721.      To define the 5 x 5 exact Hilbert matrix, use:
  722.               H = MATRIX(1/fix(i+j-1), i=1 to 5, j=1 to 5)
  723. If you then invert H with the command J = 1/H, you will get the exact inverse
  724. of the Hilbert matrix.  You can also try &3^100 and &100!.
  725. 28
  726. 25
  727. 9999
  728.                               Boolean expressions
  729.  
  730.      Real numbers and strings <A> can be compared with the operators
  731.  
  732. a == b     ( a equals b )
  733. a <> b     ( a does not equal b )
  734. a < b      ( a is less than b )
  735. a > b      ( a is greater than b )
  736. a <= b     ( a is less than or equal to b ) also denoted by ≤ = alt-l
  737. a >= b     ( a is greater than or equal to b) also denoted by ≥ = alt-m
  738.  
  739. The results of these comparisons is always one of the values TRUE, FALSE or
  740. UNDEFINED.  The result is UNDEFINED if one side is undefined or symbolic.
  741. These comparisons are used mostly in conjunction with the decision-making
  742. commands in subroutines <B>.  Complex numbers can be compared with == and <>.
  743. Note that the equals operator is 2 equal signs:  == .  This is so the
  744. expression  x == y  won't be confused with the variable assignment  x = y. The
  745. boolean values TRUE and FALSE can be combined with the usual logical operators
  746. AND, OR, XOR and NOT, for example:
  747.                            a < b OR c <> d
  748.  
  749.      Variables can be tested for being a list or a huge number or exact
  750. fraction with the boolean functions ISALIST(x) or ISBIGNUM(x).
  751. 37
  752. 71
  753. 26
  754. 9999
  755.                                Sums and Products
  756.  
  757.      You can defined finite sums (and analogous products) with CC.  For
  758. example, to sum the first 20 squares, enter:
  759.  
  760.                           SUM(i^2,i = 1 to 20)
  761.  
  762. To take the product of the first 10 even inverses (1/2)*(1/4)*..*(1/20), enter:
  763.  
  764.                       PRODUCT(1/n,n = 2 to 20 step 2).
  765.  
  766. Functions can be defined with sums and products.  To define the nth Fourier
  767. approximation to the square wave, enter:
  768.  
  769.               f(x,n) = SUM(SIN(i*x)/i,i=1 to n step 2)
  770.  
  771. The operator SUM can be abbreviated with Σ = alt-s.
  772.  
  773.      You can also take the sum (product) of a list x with SUM(x) <A> or sum the
  774. columns of a matrix m with SUM(m) <B>.
  775. 35
  776. 32
  777. 27
  778. 9999
  779.                                     Matrices
  780.  
  781. <A>  Entering matrices into CC
  782.         {...}  MATRIX  MEDIT  LOADVAR DISPLAY
  783. <B>  Defining special matrices
  784.         ONES  ZERO  EYE  RANDOM  DIAG
  785. <C>  Matrix operations
  786.          +  -  *  /  \  ^  .*  ./
  787. <D>  Matrix functions
  788.          CONJ  TRANS  "  DET  TRACE  LU  QR  RREF  RANK  ROWS  COLS CHARPOLY
  789.          EIGENVAL  EIG  SVD  PINV  COND
  790. <E>  Sorting and statistical operations
  791.          SORT  MIN  MAX  SUM  PRODUCT  AVERAGE  STANDEV  REGR
  792. <F>  Controlling the accuracy of matrix operations
  793.          SETMATRIXTOL  MATRIXTOL
  794. 29
  795. 29
  796. 30
  797. 31
  798. 32
  799. 33
  800. 28
  801. 9999
  802.                 Entering matrices and defining special matrices
  803.  
  804.      There are four ways to enter a matrix into CC:
  805. Enclose the elements in braces, seperating the elements with commas and the
  806. rows with semicolons:
  807.                            M = {1,2,3;4,5,6}
  808. Define each matrix element by a formula:
  809.                 M = MATRIX(3*i+j-3, i = 1 to 2, j = 1 to 3)
  810. Cause CC to display a spreadsheet, and enter the elements of the matrix.  The
  811. size of the matrix is determined by the elements entered, and undefined
  812. elements are changed to 0.  Use the arrow and tab keys to move around the
  813. spreadsheet:                  MEDIT(M)
  814. Read the elements of the matrix from a specially prepared file (see <A>):
  815.                               LOADVAR(M)
  816. To display a previously constructed matrix, enter the command
  817.                               DISPLAY(M).
  818. Certain matrices are predefined:
  819.      EYE(n) is an n x n identity matrix
  820.      ZERO(n,m) is an n rows by m columns matrix of zeros
  821.      ONES(n,m) is an n x m matrix of 1's
  822.      RANDOM(n,m) is an n x m matrix of random elements in the range (0,1)
  823.      DIAG(x) is a diagonal matrix whose elements are taken from the list (or
  824.              row or column vector) x.
  825. 78
  826. 29
  827. 9999
  828.                                Matrix operations
  829.  
  830.      Matrices can be combined in the usual way with  +  -  * , provided the
  831. sizes are correct.  You can raise a matrix to a positive or negative integer
  832. power:  A^n.  In addition, you can evaluate  A/B = A*B^(-1)  and
  833. A\B = A^(-1)*B.  Finally, element-by-element multiplication or division between
  834. two matrices of the same size can be computed with the commands  A.*B  and
  835. A./B .
  836.  
  837.      Matrices and scalars can be multiplied and divided.  If  M  is a matrix
  838. and  x  a scalar, then  x*M  and M*x  multiplies each element of  M  times  x .
  839. Also, M/x  divides each element of  M  by  x , and  x/M = x*(M^(-1)).  A quick
  840. way to define the inverse of  M  is  1/M .
  841.  
  842.      Submatrices are also defined.  If  M  is a matrix, then  M[i,j]  is the
  843. i,j'th element of M, and  M[i1:i2, j1:j2]  is the submatrix of  M  with rows
  844. i1..i2  and columns j1..j2.  M[i1:i2,j] is part of the j'th column of  M , and
  845. M[i,j1:j2] is part of the the i'th row of  M .
  846.  
  847.      If an ordinary scalar function like SIN is applied to a matrix, it is
  848. applied to every element of the matrix.
  849. 30
  850. 9999
  851.                                Matrix functions
  852.  
  853.      Suppose  M  is a matrix.  The following functions are defined:
  854.  
  855. COLS(M)      number of columns of M    ROWS(M)    number of rows of M
  856. TRACE(M)     trace of M                DET(M)     determinant of M
  857. RANK(M)      rank of M                 RREF(M)    row-reduced form of M
  858. TRANS(M)     transpose of M            CONJ(M)    conjugate each element of M
  859. PINV(M)      pseudo-inverse of M       COND(M)    condition number of M
  860. DIAG(v)      if v is a single row or column matrix, returns diagonal matrix
  861. M"           conjugate-transpose (Hermitian) of M
  862. CHARPOLY(M)  characteristic polynomial of M, expressed as a list <A>
  863. EIGENVAL(M)  list of eigenvalues of M
  864. EIG(M)       list of two matrices A and D.  A*D = M*A .  D is diagonal and the
  865.                   diagonal elements are the eigenvalues of M;  the columns of A
  866.                   are the eigenvectors of M.
  867. LU(M)        list of two matrices L and U;  L*U = M (possibly with rows
  868.                   permuted), L is lower triangular and U is upper triangular.
  869. QR(M)        list of two matrices Q and R;  Q*R = M, the columns of Q are
  870.                   orthonormal and R is upper triangular.
  871. SVD(M)       list of three matrices A,B,C;  A and C have orthogonal columns,
  872.                   and B is an invertible diagonal matrix.  A*B*C" = M
  873.                   The diagonal elements of B are the singular values of M
  874. 34
  875. 31
  876. 9999
  877.                 Sorting and statistical operations on matrices
  878.  
  879.      If  M  is a matrix and  i  an integer, then SORT(M,i) returns a matrix of
  880. the same size as M with the same rows as  M  but sorted on the i'th column.
  881. The data in the i'th column can be real (not complex) numbers or strings <A>.
  882. To sort on multiple columns, first sort on the least significant column, then
  883. work your way up to sorting on the most significant column.
  884.      The commands MIN(M), MAX(M), PRODUCT(M), SUM(M), AVERAGE(M) and STANDEV(M)
  885. all work the same way.  They return a row vector the same size as one row of M,
  886. containing in each position the minimum, maximum, etc of the the elements in
  887. the corresponding column of  M .
  888.      The operation of REGR is more complex.  Suppose  a  is an  m x n  matrix.
  889. Let  a  be the matrix obtained by deleting the last column of  m  and adding a
  890. first column of 1's to m.  Let  c  be the deleted column.  Then  x = REGR(m) is
  891. a column vector which is the least squares solution to the equation  a*x = c.
  892. For example, let  m  be a  n x 2  matrix.  If each row represents a point, and
  893. if  y = b+mx  is the regression line through the points, then:
  894.  
  895.          ┌ ┐
  896.          │b│
  897.          │m│ = REGR(M)
  898.          └ ┘
  899. 37
  900. 32
  901. 9999
  902.                  Controlling the accuracy of matrix operations
  903.  
  904.      There is a small constant that controls the accuracy of matrix operations
  905. like inverting matrices, the LU decomposition and row reduction.  Basically,
  906. whenever a matrix element smaller than this constant appears, it is set to 0.
  907. This procedure is necessary to overcome the inherent inaccuracies in floating
  908. point arithmetic.  The current value of this constant is returned by MATRIXTOL.
  909.      To give this constant a new value, for example 0.001, execute the command
  910. SETMATRIXTOL(0.001).  Executing SETMATRIXTOL(0) restores the constant to its
  911. default value.  Too small a value for this constant makes even singular
  912. matrices appear non-singular to CC; too large a value makes non-singular
  913. matrices with large condition numbers <A> appear singular.  Fiddling with this
  914. constant can sometimes make a delicate matrix operation converge.
  915. 31
  916. 33
  917. 9999
  918.                                      Lists
  919.  
  920.      A list is a sequence of values of any sort:  real or complex numbers,
  921. strings <A>, even other lists.  Many different kinds of values can be in a
  922. single list.  To define a list, either enclose its elements in parentheses:
  923.                              (1,2,3,4,5)
  924. or defined it with a formula:
  925.                           LIST(i,i = 1 to 5).
  926. The indexing variable in LIST need not increment by 1.  You could define the
  927. list (0, 0.01, 0.02, ... , 1.00) with the command LIST(x, x=0 to 1 step 0.01).
  928.      The expression () means the empty list. Defining a singleton list is
  929. tricky, because (x) just means x.  One way is to use the formula LIST(x,i=1,1).
  930.      If  t  is a list, then t[i] is the i'th element of t, and t[i:j] is the
  931. sublist of t consisting of elements t[i]..t[j].  The expression t[i,j] means
  932. the same thing as t[i][j]; it indicates the j'th element of the i'th element of
  933. t, so it is not defined unless t[i] is itself a list.
  934.      Lists can be added, subtracted, multiplied and divided, term by term.  The
  935. length of the result is the length of the shortest component.   If a scalar is
  936. combined with a list by any of these arithmetic operations, it is combined with
  937. each element of the list.  Thus (1,2) + (3,4) = (4,6)  and  1 + (2,3) = (3,4).
  938. Scalar functions like SIN applied to a list are applied to every element of the
  939. list.
  940.      For a description of list functions, see <B>.
  941. 37
  942. 35
  943. 34
  944. 9999
  945.                                 List Functions
  946.  
  947.      If  x  and  y  are lists, then we have the functions:
  948. LENGTH(x)  length of x                  x|y    concatenation of x and y
  949. SUM(x)  sum of elements of x            PRODUCT(x)  product of elements of x
  950. MIN(x)  minimum of x                    MAX(x)   maximum of x
  951. AVERAGE(x) average of x                 STANDEV(x)  standard deviation of x
  952. ROWVECTOR(x) make x a row matrix        COLVECTOR(x) make x a column matrix
  953. DIAG(x)  diagonal matrix <A> from elements of x.
  954. FREQUENCIES(x,a,b,n)  divides interval (a,b) into  n  subintervals and returns
  955.                       list of number of elements of  x  in each subinterval.
  956.                       See HISTOGRAM <B>.
  957. REGR(x,y)  returns list (m,b,r) of data for regression line through the points
  958.            (x[i],y[i]).  The regression line is  y = mx + b  and the
  959.            correlation coefficient is r.
  960.  
  961. If an ordinary scalar function is applied to a list, for example SIN(x), then
  962. the function is applied to every element in the list.
  963.  
  964. Once a list has been created, you can view it with the command
  965.                          DISPLAY(x)
  966. 28
  967. 52
  968. 35
  969. 9999
  970.                                   Polynomials
  971.  
  972.      For CC, a polynomial is a list <A> of coefficients.  The polynomial
  973.                  n
  974. a + bx + ... + cx   is represented by the list (a,b,...,c).  If  p  is a list,
  975. the the value of the polynomial  p  at the point  x  can be computed with the
  976. function
  977.  
  978.                                  EVALPOLY(p,x).
  979.  
  980. For example, EVALPOLY((1,2,3), -1) = 2.
  981.      All the roots, real and complex with multiplicity, of the polynomial  p
  982. can be computed with the function
  983.  
  984.                                  SOLVEPOLY(p)
  985.  
  986. which returns a list of roots.  For example, SOLVEPOLY((2,-3,1)) = (1,2).
  987. If some roots cannot be found, they are replaced by UNDEFINED in the list of
  988. roots.
  989. 34
  990. 36
  991. 9999
  992.                                     Strings
  993.  
  994.      In CC, a string is a sequence of characters.  Strings are defined by
  995. placing the desired characters between apostrophes, like this:
  996.  
  997.                               'This is a string'
  998.  
  999. Strings are used in INPUT and WRITE statements, they can be stored in
  1000. variables, and they can be manipulated as follows.
  1001.      If  s  is a string, then  s[i]  is the i'th character of s, and  s[i,j]
  1002. or  s[i:j]  is the substring of  s  consisting of characters  i  through  j .
  1003.      Strings  s  and  t  can be concatenated with the operator  s|t .
  1004.      Strings can be compared with the operators ==, <>, < , <=, >, >=  <A>, and
  1005. strings can be put into list and matrices.  A list of strings can be operated
  1006. on by MAX and MIN <B>, and a matrices can be sorted on a column of strings <C>.
  1007.      The following functions apply to strings:
  1008. LENGTH(s)  number of characters in s.
  1009. ASC(s)     list of ascii codes of characters of s.  If s is a single character,
  1010.            then ASC(s) is an integer, not a list of integers.
  1011. CHR(x)     is x is an integer or list of integers, CHR(x) is the string of
  1012.            characters whose codes are in x.  Only codes 32..255 are recognized.
  1013. UPCASE(s)  the same string as  s , but with a..z replaced by A..Z.
  1014. POS(s,t)   returns the position of the substring s in the string t, or 0.
  1015. 26
  1016. 35
  1017. 32
  1018. 37
  1019. 9999
  1020.                             Two-dimensional Graphing
  1021. <A>  Defining Windows:  WINDOW WI ERASE
  1022.                         WINDOWTOP WINDOWBOTTOM WINDOWLEFT WINDOWRIGHT
  1023. <B>  Graphing y = f(x):  GRAPH  GR  DOTGRAPH  DTG  QUICKG  QU  SKETCH  SK
  1024. <C>  Graphing r = f(Θ) in polar coordinates:  POLARG  PO
  1025. <D>  Graphing parametric curves x = f(t), y = g(t):  PARAMG  PA
  1026. <E>  Graphing level curves f(x,y) = c:  LEVELC
  1027. <F>  Vector fields and level curves:  FIELD  TRAJ
  1028. <G>  Drawing lines and rectangles, filling regions:   LINE  RECT  FILL
  1029. <H>  Plotting and marking points:  MARK  UNMARK  PLOT
  1030. <I>  Adding labels to your graphs:
  1031.                            WRITE@  WRITE@C  VWRITE@  VWRITE@C THICKTEXT THINTEXT
  1032. <J>  Showing and hiding axes, and changing their color: AXISON AXISOFF AXISCOLOR
  1033. <K>  Making successive graphs appear different:  KEEPLINE  VARYLINE
  1034. <L>  Setting line styles:   THICKLINE THINLINE LINESTYLE
  1035. <M>  Setting screen colors: SETCOLOR  SETBKCOLOR  COLOR  BKCOLOR  MAXCOLOR
  1036.  BLACK    BLUE      GREEN      CYAN      RED      MAGENTA      BROWN  LIGHTGRAY
  1037.  DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE
  1038. <N>  Histograms of list data:  HISTOGRAM
  1039. <O>  Graphing lists of points:  LISTG  MARK  UNMARK  PLOT
  1040. <P>  Using crosshairs:  CROSSX  CROSSY
  1041. <Q>  Graphing integrals and derivatives:  INTEG  DIFFG
  1042. <R>  Using Zoom and UnZoom to change the graphics window
  1043. 39
  1044. 40
  1045. 41
  1046. 42
  1047. 43
  1048. 44
  1049. 45
  1050. 46
  1051. 47
  1052. 48
  1053. 49
  1054. 50
  1055. 51
  1056. 52
  1057. 53
  1058. 54
  1059. 55
  1060. 56
  1061. 38
  1062. 9999
  1063.                                 Defining Windows
  1064.  
  1065.      Two-dimensional graphs appear in a window which you define with the
  1066. command:
  1067.                                 WINDOW(a,b,c,d)
  1068. where  a,b,c,d  are real numbers.  The graphics window is then  a ≤ x ≤ b,
  1069. c ≤ y ≤ d .  For example, if you want to graph the function  y = sin(x)  in the
  1070. range  0 ≤ x ≤ 2π  and show values  -1 ≤ y ≤ 1, execute  WINDOW(0,PI,-1,1)
  1071. before the graphics command <A>.
  1072.      When you create a new window, it is empty except for optional axes <B>.
  1073.      The abbreviation for  WINDOW  is  WI.
  1074.      CC actually expands the window you specify by 10% to assure that your
  1075. entire graph will be visible.  The ends of the axes, which are not quite at
  1076. the edge of the window, correspond to your specified window limits.
  1077.      You can erase all the figures in a window without rescaling the window
  1078. with the command:
  1079.                                      ERASE
  1080.      The startup window parameters are -1.4 ≤ x ≤ 1.4, -1 ≤ y ≤ 1.  The aspect
  1081. ratio  1.4:1 makes circles appear round, not oval, on most monitors. The
  1082. command WINDOW(0,0,0,0) restores these parameters.
  1083.      There are functions which return the boundaries of the current window:
  1084.                  WINDOWTOP  WINDOWBOTTOM  WINDOWLEFT  WINDOWRIGHT
  1085. These are useful mostly for programming operations <C>.
  1086. 40
  1087. 48
  1088. 71
  1089. 39
  1090. 9999
  1091.                                Graphing y = f(x)
  1092.  
  1093.      Once you have defined a graphing window <A>, you can view the portion of
  1094. the graph of  y = f(x)  which lies within the window by executing the command:
  1095.                                 GRAPH(f(x),x)
  1096.  
  1097. f(x) can be either a function <B> with bound variable x or an expression
  1098. involving x.  For example, you could graph the parabola with the command
  1099. GRAPH(x^2,x).  The abbreviation for GRAPH is GR.
  1100.      The operator GRAPH plots one point (x,f(x)) for each pixel on the x-axis,
  1101. and connects successive points.  To omit the connections and just plot the
  1102. points, use the command:
  1103.                                DOTGRAPH(f(x),x)
  1104.  
  1105. or its abbreviation DTG(f(x),x).
  1106.      To plot only every third point (and connect the points), use
  1107.                                 QUICKG(f(x),x)
  1108.  
  1109. or its abbreviation QU(f(x),x).  To plot only every 20th point, which is
  1110. useful for rapidly graphing complicated functions, use
  1111.                                 SKETCH(f(x),x)
  1112.  
  1113. or its abbreviation SK(f(x),x).
  1114. 39
  1115. 14
  1116. 40
  1117. 9999
  1118.                      Graphing r = f(Θ) in polar coordinates
  1119.  
  1120.      Once you have defined a graphing window <A>, you can graph the portion of
  1121. a polar curve  r = f(Θ)  for   a ≤ Θ  ≤ b  that lies in the window with the
  1122. command:
  1123.  
  1124.                         POLARG(f(t),t=a to b)
  1125.  
  1126. f(t) can be a function with bound variable t or an expression involving t.  For
  1127. example, to graph the cardoid  r = 1+cos(Θ),  0 ≤ Θ ≤ 2π , execute the command
  1128. POLARG(1+cos(t),t=0 to 2*PI).
  1129.  
  1130.      Polar curves are, by default, graphed with 200 line segments.  To change
  1131. that default to any number of line segments up to 1000, add the desired number
  1132. of segments after the last parameter.  Using a large number of segments can
  1133. make a smoother curve; using a smaller number can draw a faster curve or even a
  1134. polygon.  Try
  1135.  
  1136.                           WINDOW(-1.4, 1.4, -1, 1)
  1137.                           POLARG(1, T = 0 TO 4*PI, 5)
  1138.  
  1139.      The abbreviation for POLARG is PO.
  1140. 39
  1141. 41
  1142. 9999
  1143.                  Graphing parametric curves x = f(t), y = g(t)
  1144.  
  1145.      Once you have defined a graphing window <A>, you can graph the portion of
  1146. a parametric curve  x = f(t), y = g(t)  for   a ≤ t ≤ b  that lies in the
  1147. window with the command:
  1148.  
  1149.                         PARAMG(f(t),g(t),t=a to b)
  1150.  
  1151. f(t) and g(t) can be a functions with bound variable t or expressions involving
  1152. t.  For example, to graph the Lissajous curve  x = sin(6t), y = sin(7t),
  1153. 0 ≤ t ≤ 2π , execute the command
  1154.  
  1155.                     PARAMG(SIN(6*t), SIN(7*t),t=0 to 2*PI)
  1156.  
  1157.      Parametric curves are, by default, graphed with 200 line segments.  To
  1158. change that default to any number of line segments up to 1000, add the desired
  1159. number of segments after the last parameter.  Using a large number of segments
  1160. can make a smoother curve; using a smaller number can draw a faster curve or
  1161. even a polygon.  Try
  1162.  
  1163.                  PARAMG(SIN(6*t), SIN(7*t),t=0 to 2*PI,1000)
  1164.  
  1165.      The abbreviation for PARAMG is PA.
  1166. 39
  1167. 42
  1168. 9999
  1169.                   Graphing level curves f(x,y) = g(x,y)
  1170.  
  1171.      To graph the solution to the equation  f(x,y) = 0, use the command:
  1172.  
  1173.                    LEVELC(f(x,y)=g(x,y), x = a, y = b)
  1174.                    LEVELC(x^2+y^2 = 1, x =.7, y = .7)
  1175.  
  1176. The graph will start at the solution point nearest (a,b) and extend in two
  1177. directions.  The mnemonic GRAPHS means GraphSolution.  Normally 50 steps are
  1178. used in each direction.  To change the number of steps, add the number you wish
  1179. at the end of the command:  LEVELC(f(x,y) = g(x,y), x = a, y = b, n).  If you
  1180. specify the number of steps, you can optionally specify the step size as a
  1181. number between -5 and 5 (the default is 0--the scale is logarithmic).
  1182. Examples:
  1183.  
  1184.                    LEVELC(x^2+y^2 = 1, x =.7, y = .7, 100)
  1185.                    LEVELC(x^2+y^2 = 1, x =.7, y = .7, 100, 2)
  1186.                    LEVELC(x^2+y^2 = 1, x =.7, y = .7, 100, -2)
  1187. 43
  1188. 9999
  1189.                    Vector fields and trajectories
  1190.  
  1191.      To graph the vector field (f(x,y), g(x,y)), issue the command:
  1192.  
  1193.                     FIELD(f(x,y), g(x,y), x, y)
  1194.                     FIELD(-y/(x^2+y^2), x/(x^2+y^2), x, y)
  1195.  
  1196. Normally a field of 14 x 14 vectors will be displayed.  Larger vectors show as
  1197. larger on the screen, but the proportions are not necessarily correct.  To show
  1198. more or fewer vectors, add an integer parameter after the first and second
  1199. variable indicating how many vectors to show in each direction:
  1200.  
  1201.                     FIELD(-y/(x^2+y^2), x/(x^2+y^2), x, 10, y, 10)
  1202.  
  1203.      To draw a trajectory following a vector field (f(x,y), g(x,y)), use:
  1204.  
  1205.                     TRAJ(f(x,y), g(x,y), x=a, y=b)
  1206.                     TRAJ(-y/(x^2+y^2), x/(x^2+y^2), x=0.5, y=0.5)
  1207.  
  1208. The trajectory will start at (a,b).  Usually 50 steps are used; you can
  1209. optionally specify a different step number and step size as for LEVELC <A>.
  1210. 43
  1211. 44
  1212. 9999
  1213.                  Drawing lines and rectangles, filling regions
  1214.  
  1215.      You can add lines and rectangles to your graphics screens or fill bounded
  1216. regions on the screen.  To draw a line between (a,b) and (c,d) (assuming that
  1217. both these points lie in the current graphing window <A>), use the command:
  1218.  
  1219.                                LINE(a,b,c,d)
  1220.  
  1221. To draw a rectangle with opposite corners (a,b) and (c,d), execute:
  1222.  
  1223.                                RECT(a,b,c,d)
  1224.  
  1225. The color and style of the line or rectangle can be determined by SETCOLOR <B>
  1226. and LINESTYLE <C>.
  1227.  
  1228.      To fill a region, first pick a point (a,b) inside the region.  Then pick a
  1229. color c1 to fill with and a fill pattern p, 0 ≤ p ≤ 8.  Use p = 1 for solid
  1230. fill.  Suppose c2 is the color of the boundary of the region (the region must
  1231. be bounded by curves of one color).  To fill the region, execute the command:
  1232.  
  1233.                             FILL(a,b,c1,c2,p)
  1234. 39
  1235. 51
  1236. 50
  1237. 45
  1238. 9999
  1239.                           Plotting and marking points
  1240.  
  1241.  
  1242.      If (a,b) is a point in the current graphing window <A>, you can plot a
  1243. point of the current color <B> at (a,b) with the command:
  1244.  
  1245.                                   PLOT(a,b)
  1246.  
  1247. To draw a cross like the crosshairs of the current color <B> at (a,b), use the
  1248. command:
  1249.  
  1250.                                   MARK(a,b)
  1251.  
  1252. To delete this cross, use:
  1253.  
  1254.                                  UNMARK(a,b)
  1255.  
  1256. Individual points created with PLOT are very hard to see, but numbers of them
  1257. can be used to shade regions or produce curves.
  1258.  
  1259.      See <C> for information on using these commands with lists.
  1260. 39
  1261. 51
  1262. 53
  1263. 46
  1264. 9999
  1265.                           Adding labels to your graphs
  1266.  
  1267.      You can put alphanumeric labels anywhere on your two-dimensional graphic
  1268. screens.  They can be horizontal or vertical, and they can be printed in
  1269. various sizes.  To print a string  s  <A> horizontally on the screen with the
  1270. lower-left corner at Window coordinates (a,b), use the command:
  1271.                                 WRITE@(a,b,s)
  1272. To write vertically bottom to top, use
  1273.                                VWRITE@(a,b,s)
  1274.      You can change the size of your labels by entering an optional size
  1275. parameter after the string.  The parameter should be an integer in the range
  1276. 1..7; the default is 2.  For example, to label a curve you might enter:
  1277.                          WRITE@(0.5,0.5,'Parabola',3)
  1278.      You can use the crosshairs <B> to locate labels.  First, while viewing the
  1279. graphics screen, move the crosshairs to the desired point.  Then return to the
  1280. Input Window and execute either WRITE@C(s) or VWRITE@C(s).  An optional size
  1281. parameter can be added after the string.
  1282.      To use thicker characters on the screen (only in size 3 or greater), enter
  1283. the command THICKTEXT.  To return to the default characters, execute THINTEXT.
  1284. 37
  1285. 54
  1286. 47
  1287. 9999
  1288.                Showing and hiding axes, and changing their color
  1289.  
  1290.      When you create a new graphics screen with WINDOW or ERASE <A>, CC
  1291. normally adds axes the screen.  You can suppress the display of axes by
  1292. entering the command:
  1293.  
  1294.                                AXISOFF
  1295.  
  1296. before displaying the screen for the first time.  Axes will not be displayed on
  1297. any subsequent screen until you restore them by executing:
  1298.  
  1299.                                AXISON
  1300.  
  1301.      You can change the color of the axes for the next new screen with the
  1302. command:
  1303.                              AXISCOLOR(c)
  1304.  
  1305. where  c  is one of the color words or numbers <B>.
  1306. 39
  1307. 51
  1308. 48
  1309. 9999
  1310.                    Making successive graphs appear different
  1311.  
  1312.      CC allows you to draw as many graphs as you want on the same
  1313. two-dimensional graphics screen.  Normally these graphs are distinguished by
  1314. being drawn with different line styles <A> (monochrome systems) or colors <B>
  1315. (color systems).  To stop CC from changing line styles or colors between
  1316. graphs, issue the command
  1317.  
  1318.                                   KEEPLINE
  1319.  
  1320. To start changing again, issue:
  1321.  
  1322.                                   VARYLINE
  1323.  
  1324.      If you set the color for a graph with the command SETCOLOR <B>, the next
  1325. graph will always be drawn in that color.  Subsequent graphs will have
  1326. different colors or the same color depending on whether KEEPLINE or VARYLINE is
  1327. active.
  1328.  
  1329.      Lines drawn with LINE <C> and LISTG <D> are always drawn with the current
  1330. line style and do not change the style, even if VARYLINE is active.  Only
  1331. graphs drawn with GRAPH <E>, POLARG <F> and PARAMG <G> are affected.
  1332. 50
  1333. 51
  1334. 45
  1335. 53
  1336. 40
  1337. 41
  1338. 42
  1339. 49
  1340. 9999
  1341.                               Setting line styles
  1342.  
  1343.      On both monochrome and color systems, CC will draw lines and graphs with
  1344. different line styles.  (Since the line segments used to draw graphs are
  1345. usually very short, different line styles may not be distinguished in graphs,
  1346. but they will be distinguished on long lines.)  Linestyles are indicated by
  1347. integers in the range 0..3, and are set by the command:
  1348.  
  1349.                                 LINESTYLE(n)
  1350.  
  1351.      See <A> for information on varying line styles with graphs.
  1352.      Lines and graphs can be either thin (the default) or thick.  You set this
  1353. default with the commands:
  1354.  
  1355.                                  THICKLINE
  1356.                                  THINLINE
  1357.  
  1358. Once set, the thickness stays the same until changed.
  1359. 49
  1360. 50
  1361. 9999
  1362.                              Setting screen colors
  1363.  
  1364.      If you are using a color system, you can set the color of the next line or
  1365. graph with the command:
  1366.                                  SETCOLOR(c)
  1367. where c is one of the color words:  
  1368.  
  1369.  BLACK    BLUE      GREEN      CYAN      RED      MAGENTA      BROWN  LIGHTGRAY
  1370.  DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE
  1371.  
  1372. or an integer in the range 0..15.  The color of successive graphs may vary
  1373. unless you hold it constant <A>.
  1374.      You can set the background color for your graphs with the command
  1375.                                SETBKCOLOR(c)
  1376.      You can determine the current color or background color with the
  1377. functions:
  1378.                                  COLOR
  1379.                                 BKCOLOR
  1380. The highest color number available on your system is MAXCOLOR.
  1381.     To erase a curve or line, redraw it in the background color, using
  1382. linestyle 0 <B>.
  1383.     Color commands also apply to three-dimensional graphs. <C>
  1384. 49
  1385. 50
  1386. 62
  1387. 51
  1388. 9999
  1389.                             Histograms of list data
  1390.  
  1391.      If  x  is a list <A> of data, you can plot a histogram of the data with
  1392. the command:
  1393.  
  1394.                                HISTOGRAM(x,a,b,n)
  1395.  
  1396. CC divides the interval  (a,b)  into  n  subintervals, computes the number of
  1397. elements in  x  contained in each subinterval, and plots a bar graph of these
  1398. numbers.  Outliers are included in the lowest and highest categories
  1399. respectively.  HISTOGRAM is also a function;  it returns as its value a list of
  1400. the frequencies <B> or numbers of elements contained in each subinterval.
  1401.  
  1402.      HISTOGRAM makes its own graphics window, ignoring the current window as
  1403. defined by WINDOW <C>.
  1404. 34
  1405. 35
  1406. 39
  1407. 52
  1408. 9999
  1409.                             Graphing lists of points
  1410.  
  1411.      If  x  and  y  are lists of real numbers, then the command:
  1412.  
  1413.                                   LISTG(x,y)
  1414.  
  1415. draws line segments from the point  (x[i],y[i])  to the point  (x[i+1],y[i+1])
  1416. for i = 1..length(x)-1.  If  x  and  y  have different lengths, the shorter
  1417. length is used.  If one end of a line is outside the current window, the line
  1418. will not be drawn.
  1419.      You can plot these points instead of connecting them with the command:
  1420.  
  1421.                                   PLOT(x,y)
  1422.  
  1423. and you can mark them with crosses like the crosshairs <A> with:
  1424.  
  1425.                                   MARK(x,y)
  1426.  
  1427. and erase the marks with:
  1428.  
  1429.                                  UNMARK(x,y).
  1430.  
  1431.      See <B> for applying these commands to pairs of real numbers.
  1432. 54
  1433. 45
  1434. 53
  1435. 9999
  1436.                                 Using crosshairs
  1437.  
  1438.      When you are viewing the two-dimensional graphics screen, you will see a
  1439. cross somewhere on the screen.  On a new screen it appears in the upper-left-
  1440. hand corner.  This is the crosshairs.  The coordinates of the center of the
  1441. crosshairs are printed at the lower-right hand corner of the screen.  You can
  1442. move the crosshairs with the cursor (arrow) keys.  Try it, and see how the
  1443. coordinates change.  You can effect finer movements with the shifted-cursor
  1444. keys, or the number keys 2,4,6,8.  The crosshairs are useful for locating the
  1445. intersections of curves or points where graphs cross the axes.
  1446.  
  1447.      The functions CROSSX and CROSSY return the last x- and y-coordinates of
  1448. the crosshairs.  Suppose you have graphed a function y = f(x), and you want to
  1449. solve the equation f(x) = 0.  Using the crosshairs, you can find the point
  1450. where the graph of f(x) crosses the x-axis.  The x-coordinate of this point is
  1451. the solution to f(x) = 0.  Return to the Input Window, and enter the command
  1452. <A>:
  1453.  
  1454.                       SOLVE(f(x) = 0, x = CROSSX)
  1455.  
  1456. That is, after you move the crosshairs to the x-intercept of the graph, you can
  1457. use CROSSX as an extremely accurate approximation to the desired root.
  1458. 64
  1459. 54
  1460. 9999
  1461.                        Graphing integrals and derivatives
  1462.  
  1463.      You can illustrate the processes of integration and differentiation while
  1464. computing integrals and derivatives.  Suppose  you wanted to compute the
  1465. integral of sin(x) between  x = 0  and  x = π .  You could use the command
  1466. IN(SIN(x), x = 0 to PI) <A>, but you can watch the integral being calculated by
  1467. using the command:
  1468.  
  1469.                            INTEG(SIN(x), x = 0 to PI)
  1470.  
  1471. CC will draw the graph of SIN(x) on the screen and fill in the area being
  1472. integrated (if it is inside your current graphing window <B>) as well as
  1473. computing the integral.  Actually, you will see CC draw a sequence of vertical
  1474. lines.  CC draws a line each time it evaluates the function being integrated.
  1475. Watching the lines will show you how CC computes its integrals.
  1476.      Similarly, you could computed the derivative of a function f(x) at x = a
  1477. with the command DIF(f(x), x = a) <C>, but if you use the command:
  1478.  
  1479.                             DIFFG(f(x),x = a)
  1480.  
  1481. CC will draw the graph of f(x) and the tangent line at x = a as well as
  1482. computing the derivative.
  1483. 69
  1484. 39
  1485. 68
  1486. 55
  1487. 9999
  1488.              Using Zoom and UnZoom to change the graphics window
  1489.  
  1490.      Once you have displayed a two-dimensional graph on your screen, you can
  1491. outline and magnify part of it, or increase the size of the graphics window
  1492. to seem more of it.
  1493.      Move the crosshairs <A> to one corner of the region to be magnified.
  1494.      Press Control-Z.  The crosshairs will change to Z.
  1495.      Move the Z (with the cursor keys) to the opposite corner of the region to
  1496.           be magnified.  A box will outline the designated region.
  1497.      Press <ENTER>.
  1498. The region you have outlined will be expanded to fill the screen.
  1499.      To cancel Zoom any time after starting, just press <ESC>.  If you have
  1500. already started Zooming, you can restart at the location of the Z by pressing
  1501. Control-Z again.
  1502.      To undo the effect of zooming, press Control-U while the graph is visible
  1503. to return to the previous graph.
  1504.      If you press Control-U without a graphic to UnZoom to, then the current
  1505. screen will be doubled in size and the graphs redrawn.
  1506.      Only graphs drawn with GRAPH, DOTGRAPH, QUICKG, SKETCH, POLARG, PARAMG,
  1507. DIFFG, INTEG, FIELD, LEVELC and TRAJ  can be Zoomed and UnZoomed.  Written
  1508. labels <B>, lines drawn with LINE <C>, and area fills <D> will not be repeated.
  1509. 54
  1510. 47
  1511. 45
  1512. 56
  1513. 9999
  1514.                            Three-dimensional graphing
  1515.  
  1516. <A>  Graphing  z = f(x,y)
  1517.           GRAPH3D    GR3
  1518. <B>  Graphing parametric surfaces  x = f(s,t), y = g(s,t), z = h(s,t)
  1519.           PARAMG3D    PA3
  1520. <C>  Graphing parametric curves  x = f(t), y = g(t), z = h(t)
  1521.           CURVE3D
  1522. <D>  Graphing matrix data
  1523.           MATRIXG
  1524. <E>  Using color with three-dimensional graphs
  1525.           SETCOLOR   SETBKCOLOR   AXISCOLOR   COLOR   BKCOLOR
  1526.  
  1527.      After you have displayed a three-dimensional graph on the screen, you can
  1528. rotate it in space to view it from different directions by pressing the keys
  1529. x X y Y z Z.  Multiple keypresses effect larger rotations.  You can also change
  1530. the way the figure is shaded by pressing the keys 1 2 3 4.
  1531. 58
  1532. 59
  1533. 60
  1534. 61
  1535. 62
  1536. 57
  1537. 9999
  1538.                               Graphing  z = f(x,y)
  1539.  
  1540.      If  f(x,y)  is a function or expression in two variables, its graph is a
  1541. surface.  You can sketch the portion of the graph over the rectangle  a ≤ x ≤
  1542. b, c ≤ y ≤ d  with the command:
  1543.                     GRAPH3D(f(x,y), x = a to b, y = c to d)
  1544.  
  1545. Each side of the rectangle is divided in to 15 segments to make the drawing,
  1546. and the range shown on the vertical axis is sufficient to show all points of
  1547. the graph.
  1548.      You can control the number of subdivisions on each side of the domain
  1549. rectangle, and you can control the size of the vertical axis.  To specify the
  1550. number of subdivisions for one of the horizontal axes, place the number after
  1551. the upper limit for that axis.  To specify the vertical axis, place the lower
  1552. and upper limits after the specifications for the second horizontal axis. IF
  1553. YOU ADD SOME BUT NOT ALL OF THESE SPECIFICATIONS, YOU MUST SEPERATE THE PARTS
  1554. OF THE GRAPHING COMMAND WITH SEMICOLONS.  Here are some sample graphing
  1555. commands:
  1556.     GRAPH3D(x^2 - y^2, x = a to b step 10, y = c to d step 20, -2 to 2)
  1557.     GRAPH3D(x^2 - y^2, x = a to b; y = c to d; -2 to 2)
  1558.     GRAPH3D(x^2 - y^2, x = a to b step 10; y = c to d step 20)
  1559.  
  1560.      The abbreviation of GRAPH3D is GR3.
  1561. 58
  1562. 9999
  1563.        Graphing parametric surfaces  x = f(s,t), y = g(s,t), z = h(s,t)
  1564.  
  1565.      Parametric surfaces are graphed much like ordinary surfaces <A>.  You must
  1566. specify the range for each parameter.  You can optionally specify the number of
  1567. steps to use within each parameter (the default is 15) and the visible range of
  1568. the x-, y- and z-axes.  A sample minimal command for graphing a sphere is:
  1569.  
  1570.      PARAMG3D(SIN(S)COS(T),SIN(S)SIN(T),COS(S), S = 0 to PI, T = 0 to 2*PI)
  1571.  
  1572.      If you use some but not all of the options, you must seperate the parts of
  1573. the command with semicolons.  If you specify the range of one axis, you must
  1574. specify all the axes.
  1575.      PARAMG3D(SIN(S)COS(T),SIN(S)SIN(T),COS(S), S = 0 to PI step 30,
  1576.                                    T = 0 to 2*PI step 30, -2,2,-2,2,-2,2)
  1577.      PARAMG3D(SIN(S)COS(T),SIN(S)SIN(T),COS(S), S = 0 to PI; T = 0 to 2*PI;
  1578.                                                           -2,2,-2,2,-2,2)
  1579.      PARAMG3D(SIN(S)COS(T),SIN(S)SIN(T),COS(S), S = 0 to PI step 30;
  1580.                                                    T = 0 to 2*PI step 30)
  1581.  
  1582.      When you enter commands this long, just keep typing and let them spill
  1583. over onto a second or third screen line.  Don't push <ENTER> when you come to
  1584. the end of your first line; that will execute your partially completed command.
  1585.      The abbreviation for PARAMG3D is PA3.
  1586. 58
  1587. 59
  1588. 9999
  1589.             Graphing parametric curves  x = f(t), y = g(t), z = h(t)
  1590.  
  1591.      Parametric curves are graphed just like parametric surfaces <A>, but only
  1592. one parameter need be specified.  To graph the helix, for example, enter:
  1593.  
  1594.                     CURVE3D(COS(T),SIN(T),T, T = 0 to 4*PI)
  1595.  
  1596. You an optionally specify the number of segments to use for the parameter (the
  1597. default is 100) and the size of the x-,y- and z-axes.  You must specify all
  1598. axes or none, and if you don't specify all options you must seperate the parts
  1599. of the command with semicolons.  Here are some examples:
  1600.  
  1601.       CURVE3D(COS(T),SIN(T),T, T = 0 to 4*PI step 20, -2,2, -2,2, 0,2)
  1602.       CURVE3D(COS(T),SIN(T),T, T = 0 to 4*PI; -2,2, -2,2, 0,2)
  1603.       CURVE3D(COS(T),SIN(T),T, T = 0 to 4*PI step 20)
  1604. 59
  1605. 60
  1606. 9999
  1607.                               Graphing matrix data
  1608.  
  1609.      If  M  is a matrix, you can graph a surface whose heights are the entries
  1610. of the matrix with the command:
  1611.  
  1612.                                    MATRIXG(M)
  1613.  
  1614. The size of the vertical axis is determined by the entries in the matrix  You
  1615. can change this default and specify the size of the vertical axis yourself by
  1616. adding the lower and upper limits after the name of the matrix:
  1617.  
  1618.                                 MATRIXG(M,-3,4)
  1619. 28
  1620. 61
  1621. 9999
  1622.                    Using color with three-dimensional graphs
  1623.  
  1624.      You can select the color of a three-dimensional graph by executing
  1625.  
  1626.                                SETCOLOR(c)
  1627.  
  1628. before drawing the graph.  The parameter c can be any of the color words <A>.
  1629. You can also select the color of the axes with
  1630.  
  1631.                               AXISCOLOR(c)
  1632.  
  1633. or the background color with
  1634.  
  1635.                               SETBKCOLOR(c)
  1636.  
  1637. Three dimensional surfaces are actually drawn with two colors representing the
  1638. two sides of the surface; the colors used are the one you selected and either
  1639. its brighter or dimmer version, for example YELLOW and BROWN.
  1640.  
  1641.      The functions COLOR and BKCOLOR return the current color values.
  1642. 51
  1643. 62
  1644. 9999
  1645.                                    Last Graph
  1646.  
  1647.      When you leave a graphics screen by pressing <ENTER> or <ESC>, your graph
  1648. is saved in memory.  (Actually, data that permits reconstruction of the graph
  1649. is saved.)  You can see your last graph again by pressing F9, even if you have
  1650. already told CC to erase it by executing ERASE or WINDOW <A>.  After
  1651. redisplaying the graph, you can manipulate it by moving the crosshairs
  1652. (two-dimensional) or rotating it (three-dimensional).
  1653.  
  1654.      If you need more memory, you can save the last graph data on disk instead
  1655. of in memory by pressing shift-F9.  Pressing shift-F9 again returns the last
  1656. graph data to memory.  If CC senses that it is running short of memory, it will
  1657. automatically shift the last graph data to disk.
  1658.  
  1659.      If you are saving your last graph on disk, the file of last graph data
  1660. will normally be located in the same directory as CC (even if you called CC
  1661. from a remote directory).  You can use the configuration file <B> to change the
  1662. location of the last graph file.
  1663. 39
  1664. 19
  1665. 63
  1666. 9999
  1667.                                Solving equations
  1668.  
  1669.      To solve the equation  f(x) = g(x) , you must choose an estimate  a  for
  1670. the solution and enter the command:
  1671.  
  1672.                            SOLVE(f(x) = g(x), x = a)
  1673.  
  1674. The solution is returned in the variable  x .  SOLVE is not a function; it is a
  1675. procedure that changes the variable x.  For example, to solve  Cos(x) = x ,
  1676. enter  SOLVE(COS(x) = x, x = 1);
  1677.      You can solve systems of equations too, provided there are the same number
  1678. of variable as equations.  For example:
  1679.  
  1680.                SOLVE(x^3 - y^2 = 3, x^2 + y^3 = 0, x = 2, y = -2)
  1681.  
  1682.      The solutions show up in the variables  x  and  y .
  1683.      You can speed up equation solving, at the expense of accuracy, by
  1684. substituting FSOLVE for SOLVE.
  1685.  
  1686. See also:
  1687. <A>  Implicit functions   IMPLICIT   IMP
  1688. <B>  Controlling speed and accuracy of equation solving  SETSOLVETOL   SOLVETOL
  1689. 65
  1690. 66
  1691. 64
  1692. 9999
  1693.                                Implicit functions
  1694.  
  1695.      CC allows you to define functions implicitly.  For example, the equation
  1696. Cos(x) = t*x  defines a function of t; for each value of t you get a different
  1697. solution.  You can define this function in CC  with the command:
  1698.  
  1699.                       f(t) = IMPLICIT(COS(x) = t*x, x = 0.5)
  1700.  
  1701. The starting estimate x = 0.5 works well for t ≥ 0.
  1702.  
  1703.      The abbreviation of IMPLICIT is IMP.
  1704.      IMPLICIT also works with systems of equations <A>, returning a list of
  1705. values.  You can make implicit functions evaluate faster by changing the
  1706. parameter SOLVETOL <B>.
  1707. 64
  1708. 66
  1709. 65
  1710. 9999
  1711.                Controlling speed and accuracy of equation solving
  1712.  
  1713.      Equation solving is controlled by a constant called SolveTolerance.  If
  1714. you are solving an equation  f(x) = g(x) , CC stops when it finds  x  such that
  1715. │f(x) - g(x)│ < SolveTolerance .  (If no such x can be found, but if CC can find
  1716. x  such that  │f(x) - g(x)│ < 100*SolveTolerance,  CC will accept this
  1717. solution.)
  1718.      You can change the value of SolveTolerance with the command:
  1719.  
  1720.                                 SETSOLVETOL(t)
  1721.  
  1722. t  must be a positive real number.  The larger the value of  t , the faster
  1723. your solutions will converge but the less accurate they may be.  The default
  1724. value of SolveTolerance is 0.0000001.  You can restore SolveTolerance to this
  1725. value with the command SETSOLVETOL(0).
  1726.  
  1727.      The function:
  1728.                                    SOLVETOL
  1729.  
  1730. returns the current value of this SolveTolerance.
  1731. 66
  1732. 9999
  1733.                        Creating tables of function values
  1734.  
  1735.      If f(x) is a function or expression using x, you can display a table of
  1736. functional values:
  1737.  
  1738.           x              f(x)
  1739.         0.0              ...
  1740.         0.1              ...
  1741.         0.2              ...
  1742.            ...........
  1743.         1.0              ...
  1744.  
  1745. with the command:
  1746.                      TABLE(f(x),x=0 to 1 step 0.1)
  1747.  
  1748. Of course you can use any values you like for the lower and upper limits and
  1749. step value of the parameter.  The step must be specified.  You can tabulate one
  1750. or two functions.  You can also enter, for example,
  1751.  
  1752.                TABLE(SIN(x), COS(x), x = 0 to PI/2 STEP PI/20)
  1753. 67
  1754. 9999
  1755.                                 Differentiation
  1756.  
  1757.      If f(x) is a function or expression using x, then you can differentiate it
  1758. at the point  x = a  with the command:
  1759.                                 DIF(f(x), x = a)
  1760.  
  1761. Differentiation is symbolic, not approximate.  You can see the symbolic
  1762. derivative of f(x) (provided x is an undefined variable) with the command:
  1763.                                  DIF(f(x), x)
  1764.  
  1765. Higher derivatives can be computed by putting the order of the derivative at
  1766. the end of the command:
  1767.                               DIF(f(x),x = a, 3)
  1768.  
  1769. To compute the third symbolic derivative, you must somehow tell CC that the 3
  1770. is not the value of x but the order of differentiation.  You do this by placing
  1771. it after a comma:
  1772.                                 DIF(f(x),x,3)
  1773.  
  1774. To avoid ambiguities, you must use '=' in the DIF statement when assigning a
  1775. value to the variable of differentiation and a comma before the order.
  1776.      See <A> for graphing derivatives with DIFFG.
  1777. 55
  1778. 68
  1779. 9999
  1780.                                   Integration
  1781.  
  1782.      CC will compute the numerical approximation to the integral of f(x) for
  1783. a ≤ x ≤ b:                          b
  1784.                                    ⌠
  1785.                                    │ f(x) dx
  1786.                                    ⌡
  1787.                                     a
  1788. with the command:
  1789.  
  1790.                               IN(f(x),x = a to b)
  1791. For example:
  1792.  
  1793.                             IN(EXP(x), x = 1 to 2)
  1794.  
  1795. You can compute integrals faster, if less accurately, by substituting FIN for
  1796. IN.
  1797.      See <A> for information on using INTOL  INDEPTH  SETINTOL  SETINDEPTH  to
  1798. control the speed and accuracy of integration.
  1799.      For graphing integrals with INTEG, see <B>.
  1800. 70
  1801. 75
  1802. 69
  1803. 9999
  1804.                Controlling the speed and accuracy of integration
  1805.  
  1806.      CC uses an adaptive Simpson's algorithm for computing integrals.  The
  1807. algorithm is controlled by two constants, InTolerance and Depth.  The current
  1808. values of these algorithms are returned by the functions:
  1809.  
  1810.                                    INTOL
  1811.                                   INDEPTH
  1812.  
  1813.      You can reset these constants with the commands:
  1814.  
  1815.                                  SETINTOL(t)
  1816.                                 SETINDEPTH(n)
  1817.  
  1818. t must be a postive real number, and n a positive integer.  Using 0 for either
  1819. value will reset the corresponding constant to its default value, which are
  1820. 0.0001 and 5 respectively.  The smaller the value of InTolerance and the larger
  1821. the value of depth, the slower and more accurate will be the computation of
  1822. integrals.
  1823. 70
  1824. 9999
  1825.                                   Subroutines
  1826.  
  1827.      Subroutines are entered in the Subroutine Window.  To see the Subroutine
  1828. Window, press function key F10.  Press F10 again to return to the Input Window.
  1829.      There are two kinds of subroutines, procedures and functions.  Functions
  1830. can return a value, procedures cannot.  Both consist of a header line which may
  1831. include parameters, followed by a series of ordinary CC entries and control
  1832. structures, followd by the word END on its own line.  Subroutine names can be
  1833. up to 12 characters long and must begin with a letter.  They cannot duplicate
  1834. the name of any of CC's built-in operators or any of your variables or
  1835. functions.
  1836.      Subroutines CANNOT use variables and functions from the Input Window.
  1837.      To return a value from a subroutine function, place the command RETURN(v)
  1838. on one line of your subroutine, where v is the value to be returned.
  1839. See also  <A>  Subroutine headers and parameters
  1840.                   PROCEDURE FUNCTION %
  1841.           <B>  Displaying messages and accepting user input
  1842.                   WRITE   INPUT   INPUTS   PAUSE    WAIT    BEEP
  1843.           <C>  Decision and looping operators
  1844.                   IF..ELSE    FOR    WHILE    REPEAT..UNTIL    EXIT
  1845.           <D>  Programming and graphics
  1846.                   GRAPHICS    TEXT    INPUT@    INPUTS@
  1847.           <E>  Examples
  1848. 82
  1849. 75
  1850. 76
  1851. 77
  1852. 72
  1853. 71
  1854. 9999
  1855.                            Example 1 -- Taking a test
  1856.  
  1857. PROCEDURE Test(n)
  1858. // ask n addition questions, accept no wrong answers
  1859. FOR i = 1 to n
  1860.     a = RANDOM(9)
  1861.     b = RANDOM(9)
  1862.     REPEAT
  1863.         INPUT(STR(a)|' + '|STR(b)|' =',x)
  1864.       UNTIL x = a+b
  1865.   END
  1866. END
  1867.  
  1868. How to use:  in the Input Window, enter:
  1869.  
  1870.                                     Test(5)
  1871.  
  1872. To see another example, push <A>.
  1873. 73
  1874. 72
  1875. 9999
  1876.                             Example 2 -- Random Walk
  1877.  
  1878. PROCEDURE RandomWalk
  1879.   // Depict a two-dimensional random walk
  1880.   WINDOW(-4.2,4.2,-3,3)
  1881.   GRAPHICS
  1882.   x=0
  1883.   y=0
  1884.   WHILE x > WINDOWLEFT AND x < WINDOWRIGHT AND y > WINDOWBOTTOM
  1885.                                                  AND y < WINDOWTOP
  1886.       t = RANDOM*2*PI
  1887.       x1 = x+COS(t)
  1888.       y1 = y+SIN(t)
  1889.       LINE(x,y,x1,y1)
  1890.       x = x1
  1891.       y = y1
  1892.     END
  1893.   TEXT
  1894. END
  1895.  
  1896. To use this procedure, enter the command:  RandomWalk.
  1897.  
  1898. To see another example, push <A>.
  1899. 74
  1900. 73
  1901. 9999
  1902.                     Example 3 -- Displaying Newton's Method
  1903.  
  1904. FUNCTION Newton(%f,x)
  1905.   // Solving f(t) = 0 with Newton's method starting with t = x, illustrated
  1906.   GRAPHICS
  1907.   GRAPH(f(t), t)
  1908.   REPEAT
  1909.       x1 = x - f(x)/dif(f(t),t=x)
  1910.       LINE(x,f(x),x1,0)
  1911.       LINE(x1,0,x1,f(x1))
  1912.       x = x1
  1913.       INPUTS('x = '|STR(x)|'. Do another step (Y/N)?',c)
  1914.     UNTIL UPCASE(c[1]) == 'N'
  1915.   RETURN(x)  
  1916.   TEXT
  1917. END
  1918.  
  1919. To use this subroutine, enter the command:
  1920.                                      Newton(x)
  1921. where x is a number between -1.5 and 1.5.
  1922. 74
  1923. 9999
  1924.                     Displaying messages and accepting input
  1925.  
  1926.      Subroutines can write messages on the screen with the command WRITE, for
  1927. example:
  1928.  
  1929.                    WRITE('The final answers are',x,'and',y)
  1930.  
  1931. Multiple values, including strings, separated by commas, can appear in a single
  1932. WRITE statement.  When WRITE is executed, the subroutine pauses until the user
  1933. presses a key.
  1934.  
  1935.      Subroutines can also pause to accept input if you use one of the commands
  1936. INPUT or INPUTS.  INPUT asks for a numerical value; INPUTS for a string.  Some
  1937. sample commands are:
  1938.  
  1939.                    INPUT('Enter initial value',x)
  1940.                    INPUTS('Do you want to continue (Y/N)',c)
  1941.  
  1942. Each INPUT command has two parts:  a message to be displayed and a variable to
  1943. hold the users input.
  1944.  
  1945.      You can make your subroutine issue an audible sound with the command BEEP
  1946. on its own line.
  1947. 75
  1948. 9999
  1949.                          Decision and looping operators
  1950.  
  1951.      CC supports all the standard looping and conditional statements found in
  1952. modern programming languages except CASE.  Here are some examples:
  1953.  
  1954. IF x < 3 OR y > 2         WHILE ABS(x) < 1           REPEAT
  1955.     z = z+3                   x = f(x)                   oldx = x
  1956.     w = x*y                 END                          x = x-f(x)/g(x)
  1957.   ELSE IF x > 3                                        UNTIL ABS(x) < 0.01
  1958.     z = 5
  1959.   ELSE
  1960.     w = 4
  1961.   END
  1962.  
  1963. FOR i = 1 TO 20            FOR x = 0.05 TO 1 STEP 0.05
  1964.     s = s + f(i/20)            s = s + f(x)
  1965.   END                        END
  1966.  
  1967. All conditional constructs, except REPEAT, must be terminated by END.  The term
  1968. "then" is not needed after IF.
  1969.  
  1970. The command EXIT, on its own line, causes the immediate termination of the
  1971. current subroutine.
  1972. 76
  1973. 9999
  1974.                             Programming and graphics
  1975.  
  1976.      Sometimes you will want to execute a sequence of graphing commands in a
  1977. subroutine, but CC normally stops after each one and waits for the user to
  1978. press <ENTER> or <ESC>.  You can prevent CC from stopping by prefacing your
  1979. list of graphics commands with the command GRAPHICS.  All commands can be
  1980. executed while GRAPHICS is in force, but CC will not pause after each graphing
  1981. command.  The effect of GRAPHICS can be turned off with the command TEXT.
  1982.      If you want to stop in the middle of a sequence of graphics commands while
  1983. GRAPHICS is in force, use the command PAUSE.  CC will pause until the user
  1984. presses <ENTER> or <ESC>.  While paused, the user can move the crosshairs but
  1985. not zoom a graph.  You can also stop your subroutines for n seconds with the
  1986. command WAIT(n).
  1987.      While GRAPHICS is in effect, you may wish to require the user to input a
  1988. value.  The usual INPUT command could be used, but its window would obscure
  1989. part of the graphics screen.  Alternatively, you may use the command:
  1990.                 INPUT@(x,y,n,v)
  1991. CC will place a box sufficient to hold n characters at location (x,y) on the
  1992. screen, and wait for you to type a value into the box.  The value entered will
  1993. be placed in the variable v.  To input a string instead of a value, use
  1994. INPUTS@.
  1995. 77
  1996. 9999
  1997.                               Using external files
  1998.  
  1999.      CC permits you to save your work in disk files for later reloading or for
  2000. sharing with others.  In this way you can start a problem at one time and
  2001. finish it later, develop work sheets to be completed by others, or write
  2002. interactive demonstrations and lessons.  Not only can you save and reload files
  2003. of CC commands and subroutines, but you can also save and reload specific
  2004. lists, matrices and graphs.
  2005.      To save your work, press function key F7 and enter the name of the file
  2006. you want to save.  The file name can include path information.  To reload a
  2007. saved file, press F8 and enter the name of the file.  See also <A>.
  2008.      To see a list of all the files in a directory, press Shift-F8 and enter
  2009. the name of the directory.  This name can include a mask.  After viewing the
  2010. directory, you will be asked if you wish to make it your current directory.
  2011. You can also change your current directory by pressing Control-F8 and entering
  2012. the name of the new current directory.
  2013.      To save the data, use the command SAVE(data,filename).  The filename
  2014. must be a a string value or surrounded by apostrophes.  The data can be either
  2015. a variable or an expression.  To reload the saved data into a variable, use
  2016. the command LOADVAR(var-name,filename).  To save a graph, either press F7
  2017. while the graph is visible, or use the command SAVEGRAPH(filename) to save the
  2018. last graph.  To load a graph, which will appear on the screen and become your
  2019. last graph <B>, use the command LOADGRAPH(filename).
  2020. 9
  2021. 63
  2022. 78
  2023. 9999
  2024.                                     Printing
  2025.  
  2026.      CC can print text to any printer, and it can print special characters and
  2027. graphs on printers than can emulate the Epson, IBM or LaserJet printers.  All
  2028. printer operations are entered via the function key F2.  After pressing this
  2029. key, CC will ask you to select your printer type if you have not already done
  2030. so, and then present you with a menu of choices:
  2031.  
  2032. 1.  Start printing a record of all input and results
  2033. 2.  Stop printing
  2034. 3.  Print all formulas from input window, all subroutines and all variables
  2035. 4.  Print all formulas from input window
  2036. 5.  Print all subroutines
  2037. 6.  Print all variables
  2038. 7.  Skip to top of page
  2039. 8.  Save input window, subroutines and variables to disk
  2040. 9.  Change printer type
  2041.  
  2042. Option 1 prints all of your entries and results as you enter them.  Option 2
  2043. cancels option 1.  Options 3-6 print all current values.  Option 8 prints to an
  2044. ASCII disk file instead of your printer.
  2045.  
  2046.      For printing graphs or individual lists and matrices, see <A>.
  2047. 80
  2048. 79
  2049. 9999
  2050.                      Printing variables and graphs
  2051.  
  2052.      You can print a graph either by pressing F2 while the graph is visible or
  2053. by entering the command PRINTGRAPH to print your last graph.
  2054.  
  2055.      You can print a variable or any other expression, useful for lists or
  2056. matrices, with the command PRINT(data).  For example:
  2057.  
  2058.                     m = MATRIX(1/(i+j-1),i=1,4,j=1,4)
  2059.                     PRINT(m)
  2060. 80
  2061. 9999
  2062.                            Disk and Memory Management
  2063.  
  2064.      CC is a large program.  It will run in 512K of memory, but larger
  2065. problems require 640K.  CC uses overlays to reduce the amount of code that must
  2066. be in memory at any time, so it runs best off a hard disk.  If you must run CC
  2067. from a floppy disk, it is best to use a disk of at least 720K capacity.  Then
  2068. all system files:  CC.EXE, CC.OVR and CC.HLP can be on one disk.  If you must
  2069. use a 360K disk, put CC.EXE and CC.OVR on it.  The help facility will not be
  2070. available.
  2071.      You should make as much memory as possible available before running CC.
  2072. Delete all but the most necessary TSR programs before starting CC.
  2073.      You can free up memory while CC is running by using FORGET to delete
  2074. unnecessary variables <A> and Shift-F9 to transfer your Last Graph information
  2075. to disk <B>.
  2076. 13
  2077. 63
  2078. 81
  2079. 9999
  2080.                        Subroutine Headers and Parameters
  2081.  
  2082.      Each subroutine must begin with one of the lines:
  2083.                  PROCEDURE procedure-name(parameter-list)
  2084.                  FUNCTION function-name(parameter-list)
  2085. The procedure-name or function-name can be up to 12 characters long beginning
  2086. with a letter.  It cannot duplicate the name of any of CC's built-in functions
  2087. or the name of any of your variables or functions from the Input Window.
  2088.       The parameter list is a list of variable names <A>.  When you call the
  2089. subroutine, you specify initial values for these variables, which can then be
  2090. used in the subroutine.
  2091.       You an also pass a function definition to a subroutine by passing its
  2092. name as a parameter.  You identify a function-name parameter in a subroutine
  2093. header by preceding it with %.  See <B> for an example.
  2094.  
  2095. 13
  2096. 74
  2097. 82
  2098. 9999
  2099.