home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-06-05 | 57.7 KB | 1,242 lines |
- Newsgroups: comp.sources.misc
- From: daveg@csvax.caltech.edu (David Gillespie)
- Subject: v13i040: Emacs Calculator 1.01, part 14/19
- Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
-
- Posting-number: Volume 13, Issue 40
- Submitted-by: daveg@csvax.caltech.edu (David Gillespie)
- Archive-name: gmcalc/part14
-
- ---- Cut Here and unpack ----
- #!/bin/sh
- # this is part 14 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file calc.texinfo continued
- #
- CurArch=14
- if test ! -r s2_seq_.tmp
- then echo "Please unpack part 1 first!"
- exit 1; fi
- ( read Scheck
- if test "$Scheck" != $CurArch
- then echo "Please unpack part $Scheck next!"
- exit 1;
- else exit 0; fi
- ) < s2_seq_.tmp || exit 1
- echo "x - Continuing file calc.texinfo"
- sed 's/^X//' << 'SHAR_EOF' >> calc.texinfo
- Xthe stack. These line numbers are ordinarily displayed on the lefthand side
- Xof the window. The @kbd{d l} (@code{calc-line-numbering}) command controls
- Xwhether these numbers appear. (Line numbers may be turned off since they
- Xslow the Calculator down a bit and also clutter the display.)
- X
- XThe @key{RET} (or equivalent @key{SPC}) key is only required to separate
- Xtwo consecutive numbers.
- X(After all, if you typed @kbd{1 2} by themselves the Calculator
- Xwould enter the number 12.) If you press @kbd{RET} or @kbd{SPC} @emph{not}
- Xright after typing a number, the key duplicates the number on the top of
- Xthe stack. @kbd{@key{RET} *} is thus a handy way to square a number.@refill
- X
- XThe @key{DEL} key pops and throws away the top number on the stack.
- XThe @key{TAB} key swaps the top two objects on the stack.
- X@xref{Stack and Trail}, for descriptions of these and other stack-related
- Xcommands.@refill
- X
- X@node Numeric Entry, Algebraic Entry, Stack Basics, Introduction
- X@section Numeric Entry
- X
- X@kindex 0-9
- X@kindex #
- X@kindex .
- X@kindex @@
- X@kindex e
- X@cindex Numeric entry
- X@cindex Entering numbers
- XPressing a digit or other numeric key begins numeric entry using the
- Xminibuffer. The number is pushed on the stack when you press the @key{RET}
- Xor @key{SPC} keys. If you press any other non-numeric key, the number is
- Xpushed onto the stack and the appropriate operation is performed. If
- Xyou press a numeric key which is not valid (say, a second decimal point),
- Xthe key is ignored.
- X
- X@cindex Minus signs
- X@cindex Negative numbers, entering
- X@kindex _
- XThere are three different concepts corresponding to the word ``minus,''
- Xtypified by @samp{a-b} (subtraction), @samp{-x}
- X(change-sign), and @samp{-5} (negative number). Calc uses three
- Xdifferent keys for these operations, respectively:
- X@kbd{-}, @kbd{n}, and @kbd{_} (the underscore). The @kbd{-} key subtracts
- Xthe two numbers on the top of the stack. The @kbd{n} key changes the sign
- Xof the number on the top of the stack or the number currently being entered.
- XThe @kbd{_} key begins entry of a negative number or changes the sign of
- Xthe number currently being entered. The following sequences all enter the
- Xnumber @samp{-5} onto the stack: @kbd{0 @key{RET} 5 -}, @kbd{5 n @key{RET}},
- X@kbd{5 @key{RET} n}, @kbd{_ 5 @key{RET}}, @kbd{5 _ @key{RET}}.@refill
- X
- XDuring numeric entry, the only editing key available is @kbd{DEL}.
- X
- X@node Algebraic Entry, Quick Calculator, Numeric Entry, Introduction
- X@section Algebraic Entry
- X
- X@kindex '
- X@pindex calc-algebraic-entry
- X@cindex Algebraic notation
- X@cindex Formulas, entering
- XCalculations can also be entered in algebraic form. This is accomplished
- Xby typing the apostrophe key, @kbd{'}, followed by the expression in
- Xstandard format: @kbd{@key{'} 2+3*4 @key{RET}} computes
- X@samp{2+(3*4)} = 14 and pushes that on the stack. If you wish you can
- Xignore the RPN aspect of Calc altogether and simply enter algebraic
- Xexpressions in this way. You may want to use @key{DEL} every so often to
- Xclear previous results off the stack.@refill
- X
- XYou can press the apostrophe key during normal numeric entry to switch
- Xthe half-entered number into algebraic entry mode. One reason to do this
- Xwould be to use the full Emacs cursor motion and editing keys, which are
- Xavailable during algebraic entry but not during numeric entry.
- X
- X@kindex m a
- X@pindex calc-algebraic-mode
- X@cindex Algebraic mode
- XIf you prefer algebraic entry, you can use the command @kbd{m a}
- X(@code{calc-algebraic-mode}) to set Algebraic mode. In this mode,
- Xdigits and other keys that would normally start numeric entry instead
- Xstart full algebraic entry; as long as your formula begins with a digit
- Xyou can omit the apostrophe. Open parentheses and square brackets also
- Xbegin algebraic entry. You can still do RPN calculations in this mode,
- Xbut you will have to press @key{RET} to terminate every number:
- X@kbd{2 @key{RET} 3 @key{RET} * 4 @key{RET} +} would accomplish the same
- Xthing as @kbd{2*3+4 @key{RET}}.@refill
- X
- XPressing @kbd{'} (the apostrophe) a second time re-enters the previous
- Xalgebraic formula. You can then use the normal Emacs editing keys to
- Xmodify this formula to your liking before pressing @key{RET}.
- X
- X@kindex $
- X@cindex Formulas, referring to stack
- XWithin a formula entered from the keyboard, the symbol @kbd{$}
- Xrepresents the number on the top of the stack. If an entered formula
- Xcontains any @kbd{$} characters, the Calculator replaces the top of
- Xstack with that formula rather than simply pushing the formula onto the
- Xstack. Thus, @kbd{' 1+2 @key{RET}} pushes 3 on the stack, and @kbd{$*2
- X@key{RET}} replaces it with 6. Note that the @kbd{$} key always
- Xinitiates algebraic entry; the @kbd{'} is unnecessary if @kbd{$} is the
- Xfirst character in the new formula.@refill
- X
- XHigher stack elements can be accessed from an entered formula with the
- Xsymbols @kbd{$$}, @kbd{$$$}, and so on. The number of stack elements
- Xremoved (to be replaced by the entered values) equals the number of dollar
- Xsigns in the longest such symbol in the formula. For example, @samp{$$+$$$}
- Xadds the second and third stack elements, replacing the top three elements
- Xwith the answer. (All information about the top stack element is thus lost
- Xsince no single @samp{$} appears in this formula.)@refill
- X
- XIf a sequence of formulas are entered separated by commas, each formula
- Xis pushed onto the stack in turn. For example, @samp{1,2,3} pushes
- Xthose three numbers onto the stack (leaving the 3 at the top), and
- X@samp{$+1,$-1} replaces a 5 on the stack with 4 followed by 6. Also,
- X@samp{$,$$} exchanges the top two elements of the stack, just like the
- X@key{TAB} key.
- X
- X@node Quick Calculator, Prefix Arguments, Algebraic Entry, Introduction
- X@section ``Quick Calculator'' Mode
- X
- X@pindex quick-calc
- X@cindex Quick Calculator
- XThere is another way to invoke the Calculator if all you need to do
- Xis make one or two quick calculations. Type @kbd{M-x quick-calc},
- Xthen type any formula as an algebraic entry. The Calculator will
- Xcompute the result and display it in the echo area, without ever
- Xactually putting up a Calculator window.
- X
- XYou can use the @kbd{$} character in a Quick Calculator formula to
- Xrefer to the previous Quick Calculator result. Older results are
- Xnot retained; the Quick Calculator has no effect on the full
- XCalculator's stack or trail. If you compute a result and then
- Xforget what it was, just run @code{quick-calc} again and enter
- X@samp{$} as the formula.
- X
- XIf this is the first time you have used the Calculator in this Emacs
- Xsession, the @code{quick-calc} command will create the @code{*Calculator*}
- Xbuffer and perform all the usual initializations; it simply will
- Xrefrain from putting that buffer up in a new window. The Quick
- XCalculator refers to the @code{*Calculator*} buffer for all mode
- Xsettings. Thus, for example, to set the precision that the Quick
- XCalculator uses, simply run the full Calculator momentarily and use
- Xthe regular @kbd{p} command.
- X
- XPlease note that the Quick Calculator is not any faster at loading
- Xor computing the answer than the full Calculator; the name ``quick''
- Xmerely refers to the fact that it's much less hassle to use for
- Xsmall calculations.
- X
- XYou may wish to use @code{global-set-key} to bind @code{quick-calc}
- Xto some convenient keystroke.
- X
- X@node Prefix Arguments, Undo, Quick Calculator, Introduction
- X@section Numeric Prefix Arguments
- X
- XMany Calculator commands use numeric prefix arguments. Some, such as
- X@kbd{b w} (@code{calc-word-size}), set a parameter to the value of the
- Xprefix argument, or display the current value if there is no prefix
- Xargument. Others require an argument and prompt for a number if you
- Xdon't give one as a prefix.@refill
- X
- XAs a rule, stack-manipulation commands accept a numeric prefix argument
- Xwhich is interpreted as an index into the stack. A positive argument
- Xoperates on the top @var{n} stack entries; a negative argument operates
- Xon the @var{n}th stack entry in isolation; and a zero argument operates
- Xon the entire stack.
- X
- XMost commands that perform computations (such as the arithmetic and
- Xscientific functions) accept a numeric prefix argument that allows the
- Xoperation to be applied across many stack elements. For unary operations
- X(that is, functions of one argument like absolute value or complex
- Xconjugate), a prefix argument applies that function to the top @var{n}
- Xstack entries simultaneously. For binary operations (functions of two
- Xarguments like addition, GCD, and vector concatenation), a positive
- Xprefix argument ``reduces'' the function across the top @var{n}
- Xstack elements (for example, @kbd{C-u 5 +} sums the top 5 stack entries;
- X@pxref{Reducing and Mapping}), and a negative argument maps the next-to-top
- X@var{n} stack elements with the top stack element as a second argument
- X(for example, @kbd{7 c-u -5 +} adds 7 to the top 5 stack elements).
- XThis feature is not available for operations which use the numeric prefix
- Xargument for some other purpose.
- X
- XNumeric prefixes are specified the same way as always in Emacs: Press
- Xa sequence of @key{META}-digits, or press @key{ESC} followed by digits,
- Xor press @kbd{C-u} followed by digits.@refill
- X
- X@kindex ~
- X@pindex calc-num-prefix
- XYou can type @kbd{~} (@code{calc-num-prefix}) to pop an integer from the
- Xtop of the stack and enter it as the numeric prefix for the next command.
- XFor example, @kbd{C-u 16 p} sets the precision to 16 digits; an alternate
- X(silly) way to do this would be @kbd{2 @key{RET} 4 ^ ~ p}, i.e., compute 2
- Xto the fourth power and set the precision to that value.@refill
- X
- XConversely, if you have typed a numeric prefix argument the @kbd{~} key
- Xpushes it onto the stack in the form of an integer.
- X
- X@node Undo, Error Messages, Prefix Arguments, Introduction
- X@section Undoing Mistakes
- X
- X@kindex U
- X@kindex C-_
- X@pindex calc-undo
- X@cindex Mistakes, undoing
- X@cindex Undoing mistakes
- X@cindex Errors, undoing
- XThe shift-@kbd{U} key (@code{calc-undo}) undoes the most recent operation.
- XIf that operation added or dropped objects from the stack, those objects
- Xare removed or restored. If it was a @code{store} operation, you are
- Xqueried whether or not to restore the variable to its original value.
- XThe @kbd{U} key may be pressed any number of times to undo successively
- Xfarther back in time; with a numeric prefix argument it undoes a
- Xspecified number of operations. The undo history is cleared only by the
- X@kbd{q} (@code{calc-quit}) command. (Recall that @kbd{M-#} is usually
- Xmade synonymous with @code{calc-quit} while inside the Calculator; this
- Xalso clears the undo history.)
- X
- XCurrently the mode-setting commands (like @code{calc-precision}) are not
- Xundoable. You can undo past a point where you changed a mode, but you
- Xwill need to reset the mode yourself.
- X
- X@kindex D
- X@pindex calc-redo
- X@cindex Redoing after an Undo
- XThe shift-@kbd{D} key (@code{calc-redo}) redoes an operation that was
- Xmistakenly undone. Pressing @kbd{U} with a negative prefix argument is
- Xequivalent to executing @code{calc-redo}. You can redo any number of
- Xtimes, up to the number of recent consecutive undo commands. Redo
- Xinformation is cleared whenever you give any command that adds new undo
- Xinformation, i.e., if you undo, then enter a number on the stack or make
- Xany other change, then it will be too late to redo.
- X
- X@kindex X
- X@pindex calc-last-x
- X@cindex Last-X feature
- X@cindex Arguments, restoring
- XThe shift-@kbd{X} key (@code{calc-last-x}) is like undo in that it
- Xrestores the arguments of the most recent command onto the stack;
- Xhowever, it does not remove the result of that command. Given a numeric
- Xprefix argument, this command applies to the @samp{n}th most recent
- Xcommand which removed items from the stack; it pushes those items back
- Xonto the stack.
- X
- XIt is also possible to recall previous results or inputs using the trail.
- X@xref{Trail Commands}.
- X
- XThe standard Emacs @kbd{C-_} undo key is recognized as a synonym for @kbd{U}.
- X
- X@node Error Messages, Multiple Calculators, Undo, Introduction
- X@section Error Messages
- X
- X@kindex w
- X@pindex calc-why
- X@cindex Errors, messages
- X@cindex Why did an error occur?
- XMany situations that would produce an error message in other calculators
- Xsimply create unsimplified formulas in the Emacs Calculator. For example,
- X@kbd{1 @key{RET} 0 /} pushes the formula @samp{1 / 0}; @kbd{0 L} pushes
- Xthe formula @kbd{ln(0)}. When this happens, you can use the @kbd{w}
- X(@code{calc-why}) command to see a brief explanation of why the formula
- Xcould not be simplified. Press @kbd{w} repeatedly to see all the error
- Xmessages which arose from the last calculation.
- X
- X@kindex d w
- X@pindex calc-auto-why
- XThe @kbd{d w} (@code{calc-auto-why}) command turns on and off a mode in
- Xwhich these error messages are automatically displayed. Sometimes these
- Xmessages are a nuisance; for example, @samp{sqrt(a)} will produce the
- Xmessage @samp{Number expected: a}. For this reason the @kbd{d w} mode is
- Xoff by default.
- X
- X@node Multiple Calculators, Troubleshooting Commands, Error Messages, Introduction
- X@section Multiple Calculators
- X
- X@pindex another-calc
- XIt is possible to have any number of Calc Mode buffers at once.
- XUsually this is done by executing @kbd{M-x another-calc}, which
- Xis similar to @kbd{M-x calc} except that if a @samp{*Calculator*}
- Xbuffer already exists, a new, independent one with a name of the
- Xform @samp{*Calculator*<@var{n}>} is created. You can also use the
- Xcommand @code{calc-mode} to put any buffer into Calculator mode, but
- Xthis would ordinarily never be done.
- X
- XThe @kbd{q} (@code{calc-quit}) command does not destroy a Calculator buffer;
- Xit only closes its window. Use @kbd{M-x kill-buffer} to destroy a
- XCalculator buffer.
- X
- XEach Calculator buffer keeps its own stack, undo list, and mode settings
- Xsuch as precision, angular mode, and display formats. In Emacs terms,
- Xvariables such as @code{calc-stack} are buffer-local variables. The
- Xglobal default values of these variables are used only when a new
- XCalculator buffer is created. The @code{calc-quit} command saves
- Xthe stack and mode settings of the buffer being quit as the new defaults.
- X
- XThere is only one trail buffer, @samp{*Calc Trail*}, used by all
- XCalculator buffers.
- X
- X@node Troubleshooting Commands, , Multiple Calculators, Introduction
- X@section Troubleshooting Commands
- X
- XThis section describes commands you can use in case a computation
- Xincorrectly fails or gives the wrong answer.
- X
- X@menu
- X* Recursion Depth::
- X* Caches::
- X@end menu
- X
- X@node Recursion Depth, Caches, Troubleshooting Commands, Troubleshooting Commands
- X@subsection Recursion Depth
- X
- X@kindex M
- X@pindex calc-more-recursion-depth
- X@pindex calc-less-recursion-depth
- X@cindex Recursion depth
- X@cindex @code{max-lisp-eval-depth}
- X@cindex @code{max-specpdl-size}
- XCalc uses recursion in many of its calculations. Emacs Lisp keeps a
- Xvariable @code{max-lisp-eval-depth} which limits the amount of recursion
- Xpossible in an attempt to recover from program bugs. If a calculation
- Xever halts incorrectly because of a
- X``Lisp nesting exceeds @code{max-lisp-eval-depth}'' error,
- Xuse the @kbd{M} command (@code{calc-more-recursion-depth}) to increase
- Xthis limit.@refill
- X
- XThe limit is always increased (multiplied) by a factor of two. There is
- Xalso a @code{calc-less-recursion-depth} (or @kbd{x less}) command which
- Xdecreases this limit by a factor of two, down to a minimum value of 200.
- XThe default value is 1000.
- X
- XThese commands also double or halve @code{max-specpdl-size}, another
- Xinternal Lisp recursion limit. The minimum value for this limit is 600.
- X
- X@node Caches, , Recursion Depth, Troubleshooting Commands
- X@subsection Caches
- X
- X@cindex Caches
- X@cindex Flushing caches
- XCalc saves certain values after they have been computed once. For
- Xexample, the @kbd{P} (@code{calc-pi}) command initially ``knows'' the
- Xconstant @samp{pi} to about 20 decimal places; if the current precision
- Xis greater than this, it will recompute @samp{pi} using a series
- Xapproximation. This value will not need to be recomputed ever again
- Xunless you raise the precision still further. Many operations such as
- Xlogarithms and sines make use of similarly cached values such as
- X@samp{pi/4} and @samp{ln(2)}. The visible effect of caching is that
- Xhigh-precision computations may be especially slow the first time.
- XOther things cached include powers of two (for the binary arithmetic
- Xfunctions), matrix inverses and determinants, and symbolic integrals.
- X
- X@pindex calc-flush-caches
- XIf you suspect a Calculator cache has become corrupt, you can use the
- X@code{calc-flush-caches} command to reset all caches to the empty state.
- X(This should only be necessary in event of bugs in the Calculator.)
- X
- X@node Data Types, Stack and Trail, Introduction, Top
- X@chapter Data Types
- X
- XThis chapter discusses the various types of objects that can be placed
- Xon the Calculator stack, how they are displayed, and how they are
- Xentered. (@xref{Data Type Formats}, for information on how these data
- Xtypes are represented as Lisp objects.)@refill
- X
- XIntegers, fractions, and floats are various ways of describing real
- Xnumbers. HMS forms also for many purposes act as real numbers. These
- Xtypes can be combined to form complex numbers, modulo forms, error forms,
- Xor interval forms. (But these last four types cannot be combined with
- Xeach other: error forms may not contain modulo forms, for example.)
- XFinally, all these types of numbers may be combined into vectors,
- Xmatrices, or algebraic formulas.
- X
- X@menu
- X* Integers:: The most basic data type.
- X* Fractions:: This and above are called @dfn{rationals}.
- X* Floats:: This and above are called @dfn{reals}.
- X* Complex Numbers:: This and above are called @dfn{numbers}.
- X* Vectors and Matrices::
- X* Strings::
- X* HMS Forms::
- X* Modulo Forms::
- X* Error Forms::
- X* Interval Forms::
- X* Incomplete Objects::
- X* Variables::
- X* Formulas::
- X@end menu
- X
- X@node Integers, Fractions, Data Types, Data Types
- X@section Integers
- X
- X@cindex Integers
- XThe Calculator stores integers to arbitrary precision. Addition,
- Xsubtraction, and multiplication of integers always yields an exact
- Xinteger result. (If the result of a division or exponentiation of
- Xintegers is not an integer, it is expressed in fractional or
- Xfloating-point form according to the current Fraction Mode.
- X@xref{Fraction Mode}.)
- X
- XA decimal integer is represented as an optional sign followed by a
- Xsequence of digits. Grouping (@pxref{Grouping Digits}) can be used to
- Xinsert a comma at every third digit for display purposes, but such
- Xcommas are not allowed during the entry of numbers.@refill
- X
- XA non-decimal integer is represented as an optional sign, a radix
- Xbetween 2 and 36, a @samp{#} symbol, and one or more digits. For radix 11
- Xand above, the letters A through Z (upper- or lower-case) count as
- Xdigits and do not terminate numeric entry mode. @xref{Radix Modes}, for how
- Xto set the default radix for display of integers. Numbers of any radix
- Xmay be entered at any time. If you press @kbd{#} at the beginning of a
- Xnumber, the current display radix is used.@refill
- X
- X@node Fractions, Floats, Integers, Data Types
- X@section Fractions
- X
- X@cindex Fractions
- XA @dfn{fraction} is a ratio of two integers. Fractions are traditionally
- Xwritten ``2/3'' but Calc uses the notation @samp{2:3}. (The @kbd{/} key
- Xperforms RPN division; the following two sequences push the number
- X@samp{2:3} on the stack: @kbd{2 : 3 @key{RET}}, @kbd{2 @key{RET} 3 /},
- Xassuming Fraction Mode has been enabled.)
- XWhen the Calculator produces a fractional result it always reduces it to
- Xsimplest form, which may in fact be an integer.@refill
- X
- XFractions may also be entered in a three-part form, where @samp{2:3:4}
- Xrepresents two-and-three-quarters. @xref{Fraction Formats}, for fraction
- Xdisplay formats.@refill
- X
- XNon-decimal fractions are entered and displayed in the form
- X@samp{@var{radix}#@var{num}:@var{denom}} (or in the analogous three-part
- Xform). The numerator and denominator always use the same radix.@refill
- X
- X@node Floats, Complex Numbers, Fractions, Data Types
- X@section Floats
- X
- X@cindex Floating-point numbers
- XA floating-point number or @dfn{float} is a number stored in scientific
- Xnotation. The number of significant digits in the fractional part is
- Xgoverned by the current floating precision (@pxref{Precision}). The
- Xexponent is stored as a Lisp integer with no overflow or underflow
- Xchecking; thus the safe limit is roughly 10^1000000 for large numbers,
- Xand 10^-1000000 for small numbers.
- X
- XIf a rational number and a float are mixed in a calculation, the result
- Xwill in general be expressed as a float. Commands that require an integer
- Xvalue (such as @code{calc-gcd}) will also accept integer-valued floats,
- Xi.e., a floating-point number with nothing after the decimal point.
- X
- XFloats are identified by the presence of a decimal point and/or an
- Xexponent. In general a float consists of an optional sign, digits
- Xincluding an optional decimal point, and an optional exponent consisting
- Xof an @samp{e}, an optional sign, and one to six exponent digits.
- XFor example, @samp{23.5e-2} is 23.5 times ten to the minus-second power,
- Xor 0.235.
- X
- XFloating-point numbers are normally displayed in decimal notation with
- Xall significant figures shown. Exceedingly large or small numbers are
- Xdisplayed in scientific notation. Various other display options are
- Xavailable. @xref{Float Formats}.
- X
- X@cindex Accuracy of computations
- XFloating-point numbers are stored in decimal, not binary. The result
- Xof each operation is rounded to the nearest value representable in the
- Xnumber of significant digits specified by the current precision,
- Xrounding away from zero in the case of a tie. Thus (in the default
- Xdisplay mode) what you see is exactly what you get. Some operations such
- Xas square roots and transcendental functions are performed with several
- Xdigits of extra precision and then rounded down, in an effort to make the
- Xfinal result accurate to the full requested precision. However,
- Xaccuracy is not rigorously guaranteed. If you suspect the validity of a
- Xresult, try doing the same calculation in a higher precision. The
- XCalculator's arithmetic is not intended to be IEEE-conformant in any
- Xway.@refill
- X
- X@node Complex Numbers, Vectors and Matrices, Floats, Data Types
- X@section Complex Numbers
- X
- X@cindex Complex numbers
- XThere are two supported formats for complex numbers: rectangular and
- Xpolar. The default format is rectangular, displayed in the form
- X@samp{(@var{real},@var{imag})} where @var{real} is the real part and
- X@var{imag} is the imaginary part, each of which may be any real number.
- XRectangular complex numbers can also be displayed in @samp{@var{a}+@var{b}i}
- Xnotation; @pxref{Complex Formats}.@refill
- X
- XPolar complex numbers are displayed in the form @samp{(@var{r};@var{theta})}
- Xwhere @var{r} is the nonnegative magnitude and @var{theta} is the argument
- Xor phase angle. The range of @var{theta} depends on the current angular
- Xmode (@pxref{Angular Modes}); it is generally between -180 and +180 degrees
- Xor the equivalent range in radians.@refill
- X
- XComplex numbers are entered in stages using incomplete objects.
- X@xref{Incomplete Objects}.
- X
- XOperations on rectangular complex numbers yield rectangular complex
- Xresults, and similarly for polar complex numbers. Where the two types
- Xare mixed, or where new complex numbers arise (as for the square root of
- Xa negative real), the current @dfn{Polar Mode} is used to determine the
- Xtype. @xref{Polar Mode}.
- X
- XA complex result in which the imaginary part is zero (or the phase angle
- Xis 0 or 180 degrees or @samp{pi} radians) is automatically converted to a real
- Xnumber.
- X
- X@node Vectors and Matrices, Strings, Complex Numbers, Data Types
- X@section Vectors and Matrices
- X
- X@cindex Vectors
- X@cindex Plain vectors
- X@cindex Matrices
- XThe @dfn{vector} data type is flexible and general. A vector is simply a
- Xlist of zero or more data objects. When these objects are numbers, the
- Xwhole is a vector in the mathematical sense. When these objects are
- Xthemselves vectors of equal (nonzero) length, the whole is a @dfn{matrix}.
- XA vector which is not a matrix is referred to here as a @dfn{plain vector}.
- X
- XA vector is displayed as a list of comma-separated values enclosed in
- Xsquare brackets: @samp{[1, 2, 3]}. Thus the following is a 2 row by
- X3 column matrix: @samp{[[1, 2, 3], [4, 5, 6]]}. Vectors, like complex
- Xnumbers, are entered as incomplete objects. @xref{Incomplete Objects}.
- XDuring algebraic entry, vectors are entered all at once in the usual
- Xbrackets-and-commas form. Matrices may be entered algebraically as nested
- Xvectors, or using the shortcut notation @samp{[1, 2, 3; 4, 5, 6]},
- Xwith rows separated by semicolons. The commas may usually be omitted
- Xwhen entering vectors: @samp{[1 2 3]}. Curly braces may be used in
- Xplace of brackets: @samp{@{1, 2, 3@}}, but the commas are required in
- Xthis case.
- X
- XTraditional vector and matrix arithmetic is supported;
- X@pxref{Basic Arithmetic} and @pxref{Matrix Functions}.
- XMany other operations are applied to vectors element-wise. For example,
- Xthe complex conjugate of a vector is a vector of the complex conjugates
- Xof its elements.@refill
- X
- X@node Strings, HMS Forms, Vectors and Matrices, Data Types
- X@section Strings
- X
- X@kindex "
- X@cindex Strings
- X@cindex Character strings
- XCharacter strings are not a special data type in the Calculator.
- XRather, a string is represented simply as a vector all of whose
- Xelements are integers in the range 0 to 255. You can enter a string
- Xat any time by pressing the @kbd{"} key. Quotation marks and
- Xbackslashes are written @samp{\"} and @samp{\\}, respectively,
- Xinside strings. (In fact, all the standard Emacs Lisp conventions
- Xfor strings are allowed.)
- X
- X@kindex d "
- X@pindex calc-display-strings
- XStrings are normally displayed in vector-of-integers form. The
- X@kbd{d "} (@code{calc-display-strings}) command toggles a mode in
- Xwhich any vectors of the appropriate form are displayed as quoted
- Xstrings instead.
- X
- XThe Calculator does not use strings in any of its built-in features.
- XThey are provided mainly as a convenient way to do conversions
- Xbetween ASCII characters and integers.
- X
- X@node HMS Forms, Modulo Forms, Strings, Data Types
- X@section HMS Forms
- X
- X@cindex Hours-minutes-seconds forms
- X@cindex Degrees-minutes-seconds forms
- X@dfn{HMS} stands for Hours-Minutes-Seconds; when used as an angular
- Xargument, the interpretation is Degrees-Minutes-Seconds. All functions
- Xthat operate on angles accept HMS forms. These are interpreted as
- Xdegrees regardless of the current angular mode. It is also possible to
- Xuse HMS as the angular mode so that calculated angles are expressed in
- Xdegrees, minutes, and seconds.
- X
- XThe default format for HMS values is
- X@samp{@var{hours}@@ @var{mins}' @var{secs}"}. During entry, the letters
- X@samp{h} (for ``hours'') or
- X@samp{o} (approximating the ``degrees'' symbol) are accepted as well as
- X@samp{@@}, @samp{m} is accepted in place of @samp{'}, and @samp{s} is
- Xaccepted in place of @samp{"}.
- XThe @var{hours} value is an integer (or integer-valued float).
- XThe @var{mins} value is an integer or integer-valued float between 0 and 59.
- XThe @var{secs} value is a real number between 0 (inclusive) and 60
- X(exclusive). A positive HMS form is interpreted as @var{hours} +
- X@var{mins}/60 + @var{secs}/3600. A negative HMS form is interpreted
- Xas - @var{hours} - @var{mins}/60 - @var{secs}/3600.
- XDisplay format for HMS forms is quite flexible. @xref{HMS Formats}.@refill
- X
- XHMS forms can be added and subtracted. When they are added to numbers,
- Xthe numbers are interpreted according to the current angular mode. HMS
- Xforms can also be multiplied and divided by real numbers. Dividing
- Xtwo HMS forms produces a real-valued ratio of the two angles.
- X
- X@pindex calc-time
- X@cindex Time of day
- XJust for kicks, @code{calc-time} pushes the current time of day on
- Xthe stack as an HMS form.
- X
- X@node Modulo Forms, Error Forms, HMS Forms, Data Types
- X@section Modulo Forms
- X
- X@cindex Modulo forms
- XA @dfn{modulo form} is a real number which is taken modulo (i.e., within
- Xan integer multiple of) some value @samp{M}. Arithmetic modulo @samp{M}
- Xoften arises in number theory. Modulo forms are written
- X@samp{@var{a} mod @var{M}},
- Xwhere @var{a} and @var{M} are real numbers or HMS forms, and
- X@samp{0 <= @var{a} < @var{M}}.
- XIn many applications @var{a} and @var{M} will be
- Xintegers but this is not required.@refill
- X
- XModulo forms are not to be confused with the modulo operator @samp{%}.
- XThe expression @samp{27 % 10} means to compute 27 modulo 10 to produce
- Xthe result 7. Further computations treat this 7 as just a regular integer.
- XThe expression @samp{27 mod 10} produces the result @samp{7 mod 10};
- Xfurther computations with this value are again reduced modulo 10 so that
- Xthe result always lies in the desired range.
- X
- XWhen two modulo forms with identical @var{M}'s are added or multiplied,
- Xthe Calculator simply adds or multiplies the values, then reduces modulo
- X@var{M}. If one argument is a modulo form and the other a plain number,
- Xthe plain number is treated like a compatible modulo form. It is also
- Xpossible to raise modulo forms to powers; the result is the value raised
- Xto the power, then reduced modulo @var{M}. (When all values involved
- Xare integers, this calculation is done much more efficiently than
- Xactually computing the power and then reducing.)
- X
- X@cindex Modulo division
- XTwo modulo forms @samp{@var{a} mod @var{M}} and @samp{@var{b} mod
- X@var{M}} can be divided if @var{a}, @var{b}, and @var{M} are all
- Xintegers. The result is the modulo form which, when multiplied by
- X@samp{@var{b} mod @var{M}}, produces @samp{@var{a} mod @var{M}}. If
- Xthere is no solution to this equation (which can happen only when
- X@var{M} is non-prime), or if any of the arguments are non-integers, the
- Xdivision is left in symbolic form. Other operations, such as square
- Xroots, are not yet supported for modulo forms. (Note that, although
- X@samp{(@var{a} mod @var{M})^.5} will compute a ``modulo square root'' in
- Xthe sense of reducing @samp{sqrt(@var{a})} modulo @var{M}, this is not a
- Xuseful definition from the number-theoretical point of view.)@refill
- X
- XTo create a modulo form during numeric entry, press the shift-@kbd{M}
- Xkey to enter the word @samp{mod}. As a special convenience, pressing
- Xshift-@kbd{M} a second time automatically enters the value of @var{M}
- Xthat was most recently used before. During algebraic entry, either
- Xtype @samp{mod} by hand or press @kbd{M-m} (that's @kbd{@key{META}-m}).
- XOnce again, pressing this a second time enters the current modulo.@refill
- X
- XIt is possible to mix HMS forms and modulo forms. For example, an
- XHMS form modulo 24 could be used to manipulate clock times; an HMS
- Xform modulo 360 would be suitable for angles. Making the modulo @var{M}
- Xalso be an HMS form eliminates troubles that would arise if the angular
- Xmode were inadvertently set to Radians, in which case @samp{2@@ 0' 0" mod 24}
- Xwould be interpreted as two degrees modulo 24 radians!
- X
- X@node Error Forms, Interval Forms, Modulo Forms, Data Types
- X@section Error Forms
- X
- X@cindex Error forms
- X@cindex Standard deviations
- XAn @dfn{error form} is a real number with an associated standard
- Xdeviation, as in @samp{2.3 +/- 0.12}. The notation
- X@samp{@var{x} +/- @var{sigma}}
- Xstands for an uncertain value which follows a normal or
- XGaussian distribution of mean @var{x} and standard deviation or
- X``error'' @var{sigma}. Both the mean and the error are real numbers
- X(or algebraic expressions which are treated like real numbers); the
- Xerror must be positive. A value with zero error is converted to a
- Xregular number by the Calculator.@refill
- X
- XAll arithmetic and transcendental functions accept error forms as input.
- XOperations on the mean-value part work just like operations on regular
- Xnumbers. The error part for any function @samp{f(x)} (such as @samp{sin(x)})
- Xis defined by the error of @samp{x} times the derivative of @samp{f}
- Xevaluated at the mean value of @samp{x}. For a two-argument function
- X@samp{f(x,y)} (such as addition) the error is the square root of the sum
- Xof the squares of the errors due to @samp{x} and @samp{y}. Note that this
- Xdefinition assumes the errors in @samp{x} and @samp{y} are uncorrelated.
- XA side effect of this definition is that @samp{(2 +/- 1) * (2 +/- 1)}
- Xis not the same as @samp{(2 +/- 1)^2}; the former represents the product
- Xof two independent values which happen to have the same probability
- Xdistributions, and the product of one random value with itself. The
- Xform will produce an answer with less error, since on the average the
- Xtwo indepdent errors can be expected to cancel out.@refill
- X
- XConsult a good text on error analysis for a discussion of the proper use
- Xof standard deviations. Actual errors often are neither Gaussian-distributed
- Xnor uncorrelated, and the above formulas are valid only when errors
- Xare small. As an example, the error arising from @samp{sin(x +/- dx)} is
- X@samp{dx * abs(cos(x))}. When @samp{x} is close to zero, @samp{cos(x)} is
- Xclose to one so the error in the sine is close to @samp{dx}; this makes
- Xsense, since @samp{sin(x)} is approximately @samp{x} near zero, so a given
- Xerror in @samp{x} will produce about the same error in the sine. Likewise,
- Xnear 90 degrees @samp{cos(x)} is nearly zero and so the computed error is
- Xsmall: The sine curve is nearly flat in that region, so an error in @samp{x}
- Xhas relatively little effect on the value of @samp{sin(x)}. However, consider
- X@samp{sin(90 +/- 1000)}. The cosine of 90 is zero, so Calc will report
- Xzero error! We get an obviously wrong result because we have violated
- Xthe small-error approximation underlying the error analysis. If the error
- Xin @samp{x} had been small, the error in @code{sin(x)} would indeed have
- Xbeen negligible.@refill
- X
- XTo enter an error form during regular numeric entry, use the @samp{p}
- X(``plus-or-minus'') key to type the @samp{+/-} symbol. (If you try actually
- Xtyping @samp{+/-} the @kbd{+} key will be interpreted as the Calculator's
- X@kbd{+} command!) Within an algebraic formula, you can press @kbd{M-p} to
- Xtype the @samp{+/-} symbol, or type it out by hand.
- X
- XError forms and complex numbers cannot be mixed. For example, @samp{sqrt(-9)}
- Xproduces the complex result @samp{(0,3)}, but @samp{sqrt(-9 +/- 1)} is left
- Xunevaluated by the Calculator. However, error forms whose arguments are
- XHMS forms are allowed.
- X
- X@node Interval Forms, Incomplete Objects, Error Forms, Data Types
- X@section Interval Forms
- X
- X@cindex Interval forms
- XAn @dfn{interval} is a subset of consecutive real numbers. For example,
- Xthe interval @samp{[2 .. 4]} represents all the numbers from 2 to 4,
- Xinclusive. If you multiply it by the interval @samp{[0.5 .. 2]} you
- Xobtain @samp{[1 .. 6]}. This calculation represents the fact that if
- Xyou multiply some number in the range @samp{[2 .. 4]} by some other
- Xnumber in the range @samp{[0.5 .. 2]}, your result will lie in the range
- Xfrom 1 to 6. Interval arithmetic is used to get a worst-case estimate
- Xof the possible range of values a computation will produce, given the
- Xset of possible values of the input.
- X
- XCalc supports several varieties of intervals, including @dfn{closed}
- Xintervals of the type shown above, @dfn{open} intervals such as
- X@samp{(2 .. 4)}, which represents the range of numbers from 2 to 4
- X@emph{exclusive}, and @dfn{semi-open} intervals in which one end
- Xuses a round parenthesis and the other a square bracket. In mathematical
- Xterms, @samp{[2 .. 4]} means @samp{2 <= x <= 4}, whereas @samp{(2 .. 4)}
- Xrepresents @samp{2 < x < 4}, @samp{[2 .. 4)} represents @samp{2 <= x < 4},
- Xand @samp{(2 .. 4]} represents @samp{2 < x <= 4}.@refill
- X
- XThe lower and upper limits of an interval must be either real numbers
- X(or HMS forms), or symbolic expressions which are assumed to be real-valued.
- XIn general the lower limit must be less than the upper limit. A closed
- Xinterval containing only one value, @samp{[3 .. 3]}, is converted to a
- Xplain number (3) automatically. An interval containing no values at all
- X(such as @samp{[3 .. 2]} or @samp{[2 .. 2)}) can be represented but is not
- Xguaranteed to behave well when used in arithmetic.
- X
- XIntervals are entered in the notation shown here, either as algebraic
- Xformulas, or using incomplete forms. (@xref{Incomplete Objects}.)
- XIn algebraic formulas, multiple periods in a row are collected from
- Xleft to right, so that @samp{1....1e2} is interpreted as @samp{1 .. .. 1e2}
- X(a syntax error) rather than @samp{1. .. .1e2}. Use spaces or type
- X@samp{1.0..0.1e2} to make the notation unambiguous.
- X
- XWhile it may seem that intervals and error forms are similar, they are
- Xbased on entirely different concepts of inexact quantities. An error
- Xform @samp{x +/- sigma} means a variable is random, and its value could
- Xbe anything but is ``probably'' within one @code{sigma} of the mean
- Xvalue @code{x}. An interval @samp{[lo .. hi]} means a variable's value
- Xis unknown, but guaranteed to lie in the specified range. Error forms
- Xare statistical or ``average case'' approximations; interval arithmetic
- Xtends to produce ``worst case'' bounds on an answer.@refill
- X
- X@node Incomplete Objects, Variables, Interval Forms, Data Types
- X@section Incomplete Objects
- X
- X@kindex [
- X@kindex ]
- X@kindex (
- X@kindex )
- X@kindex ,
- X@kindex ;
- X@cindex Incomplete vectors
- X@cindex Incomplete complex numbers
- X@cindex Incomplete interval forms
- XWhen @kbd{(} or @kbd{[} is typed to begin entering a complex number or
- Xvector, respectively, the effect is to push an @dfn{incomplete} complex
- Xnumber or vector onto the stack. The @kbd{,} key adds the value(s) at
- Xthe top of the stack onto the current incomplete object. The @kbd{)}
- Xand @kbd{]} keys ``close'' the incomplete object after adding any values
- Xon the top of the stack in front of the incomplete object.
- X
- XAs a result, the sequence of keystrokes @kbd{[ 2 , 3 @key{RET} 2 * , 9 ]}
- Xpushes the vector @samp{[2, 6, 9]} onto the stack. Likewise, @kbd{( 1 , 2 Q )}
- Xpushes the complex number @samp{(1, 1.414)} (approximately).
- X
- XIf several values lie on the stack in front of the incomplete object,
- Xall are collected and appended to the object. Thus the @kbd{,} key
- Xis redundant: @kbd{[ 2 @key{RET} 3 @key{RET} 2 * 9 ]}. Some people
- Xprefer the equivalent @key{SPC} key to @key{RET}.@refill
- X
- XAs a special case, typing @kbd{,} immediately after @kbd{(}, @kbd{[}, or
- X@kbd{,} adds a zero or duplicates the preceding value in the list being
- Xformed. Typing @key{DEL} during incomplete entry removes the last item
- Xfrom the list.
- X
- XThe @kbd{;} key is used in the same way as @kbd{,} to create polar complex
- Xnumbers: @kbd{( 1 ; 2 )}. When entering a vector, @kbd{;} is useful for
- Xcreating a matrix. In particular, @kbd{[ [ 1 , 2 ; 3 , 4 ; 5 , 6 ] ]} is
- Xequivalent to @kbd{[ [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] ]}.
- X
- X@pindex calc-dots
- XIncomplete entry is also used to enter intervals. For example,
- X@kbd{[ 2 .. 4 )} enters a semi-open interval. Note that when you type
- Xthe first period, it will be interpreted as a decimal point, but when
- Xyou type a second period immediately afterward, it is re-interpreted as
- Xpart of the interval symbol. Typing @kbd{..} corresponds to executing
- Xthe @code{calc-dots} command.
- X
- XIf you find incomplete entry distracting, you may wish to enter vectors
- Xand complex numbers as algebraic formulas by pressing the apostrophe key.
- X
- X@node Variables, Formulas, Incomplete Objects, Data Types
- X@section Variables
- X
- X@cindex Variables, in formulas
- XA @dfn{variable} is somewhere between a storage register on a conventional
- Xcalculator, and a variable in a programming language. (In fact, a Calc
- Xvariable is really just an Emacs Lisp variable that contains a Calc number
- Xor formula.) A variable's name is normally composed of letters and digits.
- XCalc also allows apostrophes and underscores in variable names.
- XThe Calc variable @code{foo} corresponds to the Emacs Lisp variable
- X@code{var-foo}. The @code{calc-store} and @code{calc-recall} commands can
- Xbe made to use any arbitrary Lisp variable simply by backspacing over the
- X@samp{var-} prefix in the minibuffer.@refill
- X
- XIn a command that takes a variable name, you can either type the full
- Xname of a variable, or type a single digit to use one of the special
- Xconvenience variables @code{var-0} through @code{var-9}. For example,
- X@kbd{3 s 2} stores the number 3 in variable @code{var-2}, and
- X@kbd{3 s foo @key{RET}} stores that number in variable @code{var-foo}.@refill
- X
- XTo push a variable itself (as opposed to the variable's value) on the
- Xstack, enter its name as an algebraic expression using the apostrophe
- X(@key{'}) key. Variable names in algebraic formulas implicitly have
- X@samp{var-} prefixed to their names. The underscore @samp{_} character
- Xis changed to a dash @samp{-} in variable names used in algebraic
- Xformulas. If the name contains an underscore, the prefix @samp{var-} is
- X@emph{not} automatically added. Thus the two formulas @samp{foo+1} and
- X@samp{var_foo+1} are equivalent.
- X
- X@kindex =
- X@pindex calc-evaluate
- X@cindex Evaluation of variables in a formula
- X@cindex Variables, evaluation
- X@cindex Formulas, evaluation
- XThe @kbd{=} (@code{calc-evaluate}) key ``evaluates'' a formula by
- Xreplacing all variables in the formula which have been given values by a
- X@code{calc-store} or @code{calc-let} command by their stored values.
- XOther variables are left alone. Thus a variable that has not been
- Xstored acts like an abstract variable in algebra; a variable that has
- Xbeen stored acts more like a register in a traditional calculator.
- X
- X@cindex @code{e} variable
- X@cindex @code{pi} variable
- X@cindex @code{i} variable
- XA few variables are called @dfn{special constants}. Their names are
- X@samp{e}, @samp{pi}, and @samp{i}. When they are evaluated with @kbd{=},
- Xtheir values are calculated if necessary according to the current precision
- Xor complex polar mode. If you wish to use these symbols for other purposes,
- Xsimply undefine or redefine them using @code{calc-store}.@refill
- X
- X@xref{Store and Recall}, for a discussion of commands dealing with variables.
- X
- X@node Formulas, , Variables, Data Types
- X@section Formulas
- X
- X@cindex Formulas
- X@cindex Operators in formulas
- X@cindex Precedence of operators
- XWhen you press the apostrophe key you may enter any expression or formula
- Xin algebraic form. (Calc uses the terms ``expression'' and ``formula''
- Xinterchangeably.) An expression is built up of numbers, variable names,
- Xand function calls, combined with various arithmetic operators.
- XParentheses may
- Xbe used to indicate grouping. Spaces are ignored within formulas, except
- Xthat spaces are not permitted within variable names or numbers.
- XArithmetic operators, in order from highest to lowest precedence, and
- Xwith their equivalent function names, are:
- X
- X@display
- Xprefix @samp{+} and @samp{-} [@code{neg}] (as in @samp{-x})
- X and prefix @samp{!} [@code{lnot}] (logical ``not,'' as in @samp{!x});
- X
- X@samp{+/-} [@code{sdev}] (the standard deviation symbol) and
- X @samp{mod} [@code{makemod}] (the symbol for modulo forms);
- X
- Xpostfix @samp{!} [@code{fact}] (factorial, as in @samp{n!});
- X
- X@samp{^} [@code{pow}] (raised-to-the-power-of);
- X
- X@samp{*} [@code{mul}];
- X
- X@samp{/} [@code{div}], @samp{%} [@code{mod}] (modulo), and
- X @samp{\} [@code{idiv}] (integer division);
- X
- Xinfix @samp{+} [@code{add}] and @samp{-} [@code{sub}] (as in @samp{x-y});
- X
- X@samp{|} [@code{vconcat}] (vector concatenation);
- X
- Xrelations @samp{=} [@code{eq}], @samp{!=} [@code{neq}], @samp{<} [@code{lt}], @samp{>} [@code{gt}],
- X @samp{<=} [@code{leq}], and @samp{>=} [@code{geq}];
- X
- X@samp{&&} [@code{land}] (logical ``and'');
- X
- X@samp{||} [@code{lor}] (logical ``or'');
- X
- Xthe C-style ``if'' operator @samp{a?b:c} [@code{if}].
- X@end display
- X
- XNote that, unlike in usual computer notation, multiplication binds more
- Xstrongly than division: @samp{a*b/c*d} is equivalent to @samp{(a*b)/(c*d)}.
- X
- X@cindex Multiplication, implicit
- X@cindex Implicit multiplication
- XThe multiplication sign @samp{*} may be omitted in many cases. In particular,
- Xif the righthand side is a number, variable name, or parenthesized
- Xexpression, the @samp{*} may be omitted. Implicit multiplication has the
- Xsame precedence as the explicit @samp{*} operator. The one exception to
- Xthe rule is that a variable name followed by a parenthesized expression,
- Xas in @samp{f(x)},
- Xis interpreted as a function call, not an implicit @samp{*}. In many
- Xcases you must use a space if you omit the @samp{*}: @samp{2a} is the
- Xsame as @samp{2*a}, and @samp{a b} is the same as @samp{a*b}, but @samp{ab}
- Xis a variable called @code{ab}, @emph{not} the product of @samp{a} and
- X@samp{b}!@refill
- X
- X@cindex Implicit comma in vectors
- XThe rules are slightly different for vectors written with square brackets.
- XThere, the space character is interpreted (like the comma) as a separator
- Xof elements of the vector. Thus @samp{[ 2a b+c d ]} is equivalent to
- X@samp{[2*a, b+c, d]}, whereas @samp{2a b+c d} is equivalent to
- X@samp{2*a*b + c*d}.
- XNote that spaces around the brackets, and around explicit commas, are
- Xignored. To force spaces to be interpreted as multiplication you can
- Xenclose a formula in parentheses as in @samp{[(a b) 2(c d)]}, which is
- Xinterpreted as @samp{[a*b, 2*c*d]}. An implicit comma is also inserted
- Xbetween @samp{][}, as in the matrix @samp{[[1 2][3 4]]}.@refill
- X
- XVectors that contain commas (not embedded within nested parentheses or
- Xbrackets) do not treat spaces specially: @samp{[a b, 2 c d]} is a vector
- Xof two elements. Also, vectors entered with curly braces instead of
- Xsquare brackets, do not give spaces any special treatment.
- X
- X@cindex Function call notation
- XA function call is, e.g., @samp{sin(1+x)}. Function names follow the same
- Xrules as variable names except that the default prefix @samp{calcFunc-} is
- Xused (instead of @samp{var-}) for the internal Lisp form.
- XMost mathematical Calculator commands like
- X@code{calc-sin} have function equivalents like @code{sin}.
- XIf no Lisp function is defined for a function called by a formula, the
- Xcall is left as it is during algebraic manipulation: @samp{f(x+y)} is
- Xleft alone. Beware that many innocent-looking short names like @code{in}
- Xand @code{re} have predefined meanings which could surprise you; however,
- Xsingle letters or single letters followed by digits are always safe.
- X@xref{Function Index}.@refill
- X
- XIn the documentation for particular commands, the notation @kbd{H S}
- X(@code{calc-sinh}) [@code{sinh}] means that the key sequence @kbd{H S}, the
- Xcommand @kbd{M-x calc-sinh}, and the algebraic function @code{sinh(x)} all
- Xrepresent the same operation.@refill
- X
- X@xref{Algebra}, for commands for manipulating formulas
- Xsymbolically.
- X
- X@node Stack and Trail, Mode Settings, Data Types, Top
- X@chapter Stack and Trail Commands
- X
- XThis chapter describes the Calc commands for manipulating objects in the
- Xstack and in the trail buffer. (These commands operate on objects of any
- Xtype, such as numbers, vectors, formulas, and incomplete objects.)
- X
- X@menu
- X* Stack Manipulation::
- X* Trail Commands::
- X@end menu
- X
- X@node Stack Manipulation, Trail Commands, Stack and Trail, Stack and Trail
- X@section Stack Manipulation Commands
- X
- X@kindex RET
- X@kindex SPC
- X@pindex calc-enter
- X@cindex Duplicating stack entries
- XTo duplicate the top object on the stack, press @key{RET} or @key{SPC}
- X(two equivalent keys for the @code{calc-enter} command).
- XGiven a positive numeric prefix argument, these commands duplicate
- Xseveral elements at the top of the stack.
- XGiven a negative argument,
- Xthese commands duplicate the specified element of the stack.
- XGiven an argument of zero, they duplicate the entire stack.
- XFor example, with @samp{10 20 30} on the stack,
- X@key{RET} creates @samp{10 20 30 30},
- X@kbd{C-u 2 @key{RET}} creates @samp{10 20 30 20 30},
- X@kbd{C-u - 2 @key{RET}} creates @samp{10 20 30 20}, and
- X@kbd{C-u 0 @key{RET}} creates @samp{10 20 30 10 20 30}.@refill
- X
- X@kindex LFD
- X@pindex calc-over
- XThe @key{LFD} (@code{calc-over}) command (on a key marked Line-Feed if you
- Xhave it, else on @kbd{C-j}) is like @code{calc-enter}
- Xexcept that the sign of the numeric prefix argument is interpreted
- Xoppositely. Also, with no prefix argument the default argument is 2.
- XThus with @samp{10 20 30} on the stack, @key{LFD} and @kbd{C-u 2 @key{LFD}}
- Xare both equivalent to @kbd{C-u - 2 @key{RET}}, producing
- X@samp{10 20 30 20}.@refill
- X
- X@kindex DEL
- X@kindex C-d
- X@pindex calc-pop
- X@cindex Removing stack entries
- X@cindex Deleting stack entries
- XTo remove the top element from the stack, press @key{DEL} (@code{calc-pop}).
- XThe @kbd{C-d} key is a synonym for @key{DEL}.
- X(If the top element is an incomplete object with at least one element, the
- Xlast element is removed from it.) Given a positive numeric prefix argument,
- Xseveral elements are removed. Given a negative argument, the specified
- Xelement of the stack is deleted. Given an argument of zero, the entire
- Xstack is emptied.
- XFor example, with @samp{10 20 30} on the stack,
- X@key{DEL} creates @samp{10 20},
- X@kbd{C-u 2 @key{DEL}} creates @samp{10},
- X@kbd{C-u - 2 @key{DEL}} creates @samp{10 30}, and
- X@kbd{C-u 0 @key{DEL}} creates an empty stack.@refill
- X
- X@kindex TAB
- X@pindex calc-roll-down
- XTo exchange the top two elements of the stack, press @key{TAB}
- X(@code{calc-roll-down}). Given a positive numeric prefix argument, the
- Xspecified number of elements at the top of the stack are rotated downward.
- XGiven a negative argument, the entire stack is rotated downward the specified
- Xnumber of times. Given an argument of zero, the entire stack is reversed
- Xtop-for-bottom.
- XFor example, with @samp{10 20 30 40 50} on the stack,
- X@key{TAB} creates @samp{10 20 30 50 40},
- X@kbd{C-u 3 @key{TAB}} creates @samp{10 20 50 30 40},
- X@kbd{C-u - 2 @key{TAB}} creates @samp{40 50 10 20 30}, and
- X@kbd{C-u 0 @key{TAB}} creates @samp{50 40 30 20 10}.@refill
- X
- X@kindex M-TAB
- X@pindex calc-roll-up
- XThe command @key{M-TAB} (@code{calc-roll-up}) is analogous to @key{TAB}
- Xexcept that it rotates upward instead of downward. Also, the default
- Xwith no prefix argument is to rotate the top 3 elements.
- XFor example, with @samp{10 20 30 40 50} on the stack,
- X@key{M-TAB} creates @samp{10 20 40 50 30},
- X@kbd{C-u 4 @key{M-TAB}} creates @samp{10 30 40 50 20},
- X@kbd{C-u - 2 @key{M-TAB}} creates @samp{30 40 50 10 20}, and
- X@kbd{C-u 0 @key{M-TAB}} creates @samp{50 40 30 20 10}.@refill
- X
- X@node Trail Commands, , Stack Manipulation, Stack and Trail
- X@section Trail Commands
- X
- X@cindex Trail buffer
- XThe commands for manipulating the Calc Trail buffer are two-key sequences
- Xbeginning with the @kbd{t} prefix.
- X
- X@kindex t d
- X@pindex calc-trail-display
- XThe @kbd{t d} (@code{calc-trail-display}) command turns display of the
- Xtrail on and off. Normally the trail display is toggled on if it was off,
- Xoff if it was on. With a numeric prefix of zero, this command always
- Xturns the trail off; with a prefix of one, it always turns the trail on.
- XThe other trail-manipulation commands described here automatically turn
- Xthe trail on. Note that when the trail is off values are still recorded
- Xthere; they are simply not displayed. To set Emacs to turn the trail
- Xoff by default, turn it off with @kbd{t d}, then save the mode settings
- Xwith @kbd{m m} (@code{calc-save-modes}).
- X
- X@kindex t i
- X@pindex calc-trail-in
- X@kindex t o
- X@pindex calc-trail-out
- XThe @kbd{t i} (@code{calc-trail-in}) and @kbd{t o}
- X(@code{calc-trail-out}) commands switch the cursor into and out of the
- XCalc Trail window. In practice they are rarely used, since the commands
- Xshown below are a more convenient way to move around in the
- Xtrail, and they work ``by remote control'' when the cursor is still
- Xin the Calculator window.@refill
- X
- X@cindex Trail pointer
- XThere is a @dfn{trail pointer} which selects some entry of the trail at
- Xany given time. The trail pointer looks like a @samp{>} symbol right
- Xbefore the selected number. The following commands operate on the
- Xtrail pointer in various ways.
- X
- X@kindex t y
- X@pindex calc-trail-yank
- X@cindex Retrieving previous results
- XThe @kbd{t y} (@code{calc-trail-yank}) command reads the selected value in
- Xthe trail and pushes it onto the Calculator stack. It allows you to
- Xre-use any previously computed value without retyping.
- X
- X@kindex t <
- X@pindex calc-trail-scroll-left
- X@kindex t >
- X@pindex calc-trail-scroll-right
- XThe @kbd{t <} (@code{calc-trail-scroll-left}) and @kbd{d >}
- X(@code{calc-trail-scroll-right}) commands horizontally scroll the trail
- Xwindow left or right by one half of its width.@refill
- X
- X@kindex t n
- X@pindex calc-trail-next
- X@kindex t p
- X@pindex calc-trail-previous
- X@kindex t f
- X@pindex calc-trail-forward
- X@kindex t b
- X@pindex calc-trail-backward
- XThe @kbd{t n} (@code{calc-trail-next}) and @kbd{t p}
- X(@code{calc-trail-previous)} commands move the trail pointer down or up
- Xone line. The @kbd{t f} (@code{calc-trail-forward}) and @kbd{t b}
- X(@code{calc-trail-backward}) commands move the trail pointer down or up
- Xone screenful at a time. All of these commands accept numeric prefix
- Xarguments to move several lines or screenfuls at a time.@refill
- X
- X@kindex t [
- X@pindex calc-trail-first
- X@kindex t ]
- X@pindex calc-trail-last
- X@kindex t h
- X@pindex calc-trail-here
- XThe @kbd{t [} (@code{calc-trail-first}) and @kbd{t ]}
- X(@code{calc-trail-last}) commands move the trail pointer to the first or
- Xlast line of the trail. The @kbd{t h} (@code{calc-trail-here}) command
- Xmoves the trail pointer to the cursor position; unlike the other trail
- Xcommands, @kbd{t h} works only when Calc Trail is the selected window.@refill
- X
- X@kindex t s
- X@pindex calc-trail-isearch-forward
- X@kindex t r
- X@pindex calc-trail-isearch-backward
- XThe @kbd{t s} (@code{calc-trail-isearch-forward}) and @kbd{t r}
- X(@code{calc-trail-isearch-backward}) commands perform an incremental
- Xsearch forward and backward through the trail. When you terminate the
- Xsearch (typically by pressing @key{ESC}) the trail pointer moves to the
- Xcurrent line. If you cancel the search with @kbd{C-g}, the trail pointer
- Xdoes not move.@refill
- X
- X@kindex t m
- X@pindex calc-trail-marker
- XThe @kbd{t m} (@code{calc-trail-marker}) command allows you to enter a
- Xline of text of your own choosing into the trail. The text is inserted
- Xafter the line containing the trail pointer; this usually means it is
- Xadded to the end of the trail. Trail markers are useful mainly as the
- Xtargets for later incremental searches in the trail.
- X
- X@kindex t k
- X@pindex calc-trail-kill
- XThe @kbd{t k} (@code{calc-trail-kill}) command removes the selected line
- Xfrom the trail. The line is saved in the Emacs kill ring suitable for
- Xyanking into another buffer, but it is not easy to yank the text back
- Xinto the trail buffer. With a numeric prefix argument, this command
- Xkills the @samp{N} lines below or above the selected one.
- X
- X@node Mode Settings, Arithmetic, Stack and Trail, Top
- X@chapter Mode Settings
- X
- XThis chapter describes commands that set modes in the Calculator.
- XThey do not affect the contents of the stack, although they may change
- Xthe @emph{appearance} of the stack's contents.
- X
- X@kindex m m
- X@pindex calc-save-modes
- X@cindex Continuous memory
- X@cindex Saving mode settings
- X@cindex Permanent mode settings
- X@cindex @file{.emacs} file, mode settings
- XYou can save all of the current mode settings in your @file{.emacs} file
- Xwith the @kbd{m m} (@code{calc-save-modes}) command. This will cause
- XEmacs to reestablish these modes each time it starts up. The modes saved
- Xin the file include everything controlled by the @kbd{m} and @kbd{d}
- Xprefix keys, the current precision and binary word size, whether or not
- Xthe trail is displayed, and the current height of the Calc window.
- X(You can change which file this uses; @pxref{Installation}.)@refill
- X
- X@kindex m x
- X@pindex calc-always-load-extensions
- XThe @kbd{m x} (@code{calc-always-load-extensions}) command enables a mode
- Xin which the first use of Calc loads the entire program, including the
- Xextensions module. Otherwise, the extensions module will not be loaded
- Xuntil the first advanced Calc feature is used. Since this mode only
- Xhas effect when Calc is first loaded, @kbd{m x} is usually followed
- Xby @kbd{m m} to make the mode-setting permanent.
- X
- X@menu
- X* Precision::
- X* Inverse and Hyperbolic::
- X* Calculation Modes::
- X* Simplification Modes::
- X* Display Modes::
- X* Language Modes::
- X@end menu
- X
- X@node Precision, Inverse and Hyperbolic, Mode Settings, Mode Settings
- X@section Precision
- X
- X@kindex p
- X@pindex calc-precision
- X@cindex Precision of calculations
- XThe @kbd{p} (@code{calc-precision}) command controls the precision to
- Xwhich floating-point calculations are carried. The precision must be
- Xat least 3 digits and may be arbitrarily high, within the limits of
- Xmemory and time. This affects only floats: Integer and rational
- Xcalculations are always carried out with as many digits as necessary.
- X
- XMany internal calculations are carried to one or two digits higher
- Xprecision than normal. Results are rounded down afterward to the
- Xcurrent precision. Unless a special display mode has been selected,
- Xfloats are always displayed with their full stored precision, i.e.,
- Xwhat you see is what you get. Reducing the current precision does not
- Xround values already on the stack, but those values will be rounded
- Xdown before being used in any calculation. The @kbd{c c} (@code{calc-clean})
- Xcommand (@pxref{Conversions}) can be used to round an existing value to
- Xa new precision.@refill
- X
- XThe @kbd{p} key prompts for the current precision. If you wish you
- Xcan instead give the precision as a numeric prefix argument.
- X
- X@node Inverse and Hyperbolic, Calculation Modes, Precision, Mode Settings
- SHAR_EOF
- echo "End of part 14"
- echo "File calc.texinfo is continued in part 15"
- echo "15" > s2_seq_.tmp
- exit 0
-