Fix copyright years by hand.
[bpt/emacs.git] / doc / misc / calc.texi
index 138ed23..7fba181 100644 (file)
@@ -94,7 +94,7 @@ This file documents Calc, the GNU Emacs calculator, included with
 GNU Emacs @value{EMACSVER}.
 @end ifnotinfo
 
-Copyright @copyright{} 1990-1991, 2001-2012 Free Software Foundation, Inc.
+Copyright @copyright{} 1990--1991, 2001--2014 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -106,8 +106,7 @@ Texts as in (a) below.  A copy of the license is included in the section
 entitled ``GNU Free Documentation License.''
 
 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
-modify this GNU manual.  Buying copies from the FSF supports it in
-developing GNU and promoting software freedom.''
+modify this GNU manual.''
 @end quotation
 @end copying
 
@@ -9910,9 +9909,9 @@ listed.
 
 @kindex h n
 The @kbd{h n} or @kbd{h C-n} (@code{calc-view-news}) command displays
-the ``news'' or change history of Calc.  This is kept in the file
-@file{README}, which Calc looks for in the same directory as the Calc
-source files.
+the ``news'' or change history of Emacs, and jumps to the most recent
+portion concerning Calc (if present).  For older history, see the file
+@file{etc/CALC-NEWS} in the Emacs distribution.
 
 @kindex h C-c
 @kindex h C-d
@@ -11802,6 +11801,18 @@ Thus @kbd{M-@key{DEL}} by itself removes the second-from-top stack element,
 leaving the first, third, fourth, and so on; @kbd{M-3 M-@key{DEL}} deletes
 the third stack element.
 
+The above commands do not depend on the location of the cursor.
+If the customizable variable @code{calc-context-sensitive-enter} is
+non-@code{nil} (@pxref{Customizing Calc}), these commands will become
+context sensitive.  For example, instead of duplicating the top of the stack,
+@key{RET} will copy the element at the cursor to the top of the
+stack.  With a positive numeric prefix, a copy of the element at the
+cursor and the appropriate number of preceding elements will be placed
+at the top of the stack.  A negative prefix will still duplicate the
+specified element of the stack regardless of the cursor  position.
+Similarly, @key{DEL} will remove the corresponding elements from the
+stack.
+
 @kindex @key{TAB}
 @pindex calc-roll-down
 To exchange the top two elements of the stack, press @key{TAB}
@@ -13417,27 +13428,27 @@ dates.  @xref{Specifying Operators}.  To avoid confusion with nameless
 functions, your date formats should avoid using the @samp{#} character.
 
 @menu
-* ISO-8601::
+* ISO 8601::
 * Date Formatting Codes::
 * Free-Form Dates::
 * Standard Date Formats::
 @end menu
 
-@node ISO-8601, Date Formatting Codes, Date Formats, Date Formats
-@subsubsection ISO-8601
+@node ISO 8601, Date Formatting Codes, Date Formats, Date Formats
+@subsubsection ISO 8601
 
 @noindent
-@cindex ISO-8601
+@cindex ISO 8601
 The same date can be written down in different formats and Calc tries
 to allow you to choose your preferred format.  Some common formats are
 ambiguous, however; for example, 10/11/2012 means October 11,
 2012 in the United States but it means November 10, 2012 in
 Europe.  To help avoid such ambiguities, the International Organization
-for Standardization (ISO) provides the ISO-8601 standard, which
+for Standardization (ISO) provides the ISO 8601 standard, which
 provides three different but easily distinguishable and unambiguous
 ways to represent a date.
 
-The ISO-8601 calendar date representation is
+The ISO 8601 calendar date representation is
 
 @example
    @var{YYYY}-@var{MM}-@var{DD}
@@ -13452,9 +13463,9 @@ later.)  The year, which should be padded with zeros to ensure it has at
 least four digits, is the Gregorian year, except that the year before
 0001 (1 AD) is the year 0000 (1 BC).  The date October 11, 2012 is
 written 2012-10-11 in this representation and November 10, 2012 is
-written 2012-11-10. 
+written 2012-11-10.
 
-The ISO-8601 ordinal date representation is 
+The ISO 8601 ordinal date representation is
 
 @example
   @var{YYYY}-@var{DDD}
@@ -13463,9 +13474,9 @@ The ISO-8601 ordinal date representation is
 @noindent
 where @var{YYYY} is the year, as above, and @var{DDD} is the day of the year.
 The date December 31, 2011 is written 2011-365 in this representation
-and January 1, 2012 is written 2012-001.  
+and January 1, 2012 is written 2012-001.
 
-The ISO-8601 week date representation is 
+The ISO 8601 week date representation is
 
 @example
  @var{YYYY}-W@var{ww}-@var{D}
@@ -13476,32 +13487,32 @@ where @var{YYYY} is the ISO week-numbering year, @var{ww} is the two
 digit week number (preceded by a literal ``W''), and @var{D} is the day
 of the week (1 for Monday through 7 for Sunday).  The ISO week-numbering
 year is based on the Gregorian year but can differ slightly.  The first
-week of an ISO week-numbering year is the week with the Gregorian year's 
+week of an ISO week-numbering year is the week with the Gregorian year's
 first Thursday in it (equivalently, the week containing January 4);
 any day of that week (Monday through Sunday) is part of the same ISO
 week-numbering year, any day from the previous week is part of the
 previous year.  For example, January 4, 2013 is on a Friday, and so
 the first week for the ISO week-numbering year 2013 starts  on
-Monday, December 31, 2012.  The day December 31, 2012 is then part of the 
+Monday, December 31, 2012.  The day December 31, 2012 is then part of the
 Gregorian year 2012 but ISO week-numbering year 2013.  In the week
 date representation, this week goes from 2013-W01-1 (December 31,
 2012) to 2013-W01-7 (January 6, 2013).
 
-All three ISO-8601 representations arrange the numbers from most
+All three ISO 8601 representations arrange the numbers from most
 significant to least significant; as well as being unambiguous
 representations, they are easy to sort since chronological order in
 this formats corresponds to lexicographical order. The hyphens are
 sometimes omitted.
 
-The ISO-8601 standard uses a 24 hour clock; a particular time is
+The ISO 8601 standard uses a 24 hour clock; a particular time is
 represented by @var{hh}:@var{mm}:@var{ss} where @var{hh} is the
 two-digit hour (from 00 to 24), @var{mm} is the two-digit minute (from
 00 to 59) and @var{ss} is the two-digit second.  The seconds or minutes
 and seconds can be omitted, and decimals can be added.  If a date with a
 time is represented, they should be separated by a literal ``T'', so noon
-on December 13, 2012 can be represented as 2012-12-13T12:00
+on December 13, 2012 can be represented as 2012-12-13T12:00.
 
-@node Date Formatting Codes, Free-Form Dates, ISO-8601, Date Formats
+@node Date Formatting Codes, Free-Form Dates, ISO 8601, Date Formats
 @subsubsection Date Formatting Codes
 
 @noindent
@@ -13543,9 +13554,9 @@ Year:  ``1991'' for 1991, ``23'' for 23 AD.
 @item YYYY
 Year:  ``1991'' for 1991, ``+23'' for 23 AD.
 @item ZYYY
-Year:  ``1991'' for 1991, ``0023'' for 23 AD., ``0000'' for 1 BC.
+Year:  ``1991'' for 1991, ``0023'' for 23 AD, ``0000'' for 1 BC.
 @item IYYY
-Year:  ISO-8601 week-numbering year.
+Year:  ISO 8601 week-numbering year.
 @item aa
 Year:  ``ad'' or blank.
 @item AA
@@ -13607,7 +13618,7 @@ Weekday:  ``SUNDAY'' for Sunday.
 @item Wwww
 Weekday:  ``Sunday'' for Sunday.
 @item Iww
-Week number:  ISO-8601 week number, ``W01'' for week 1.
+Week number:  ISO 8601 week number, ``W01'' for week 1.
 @item d
 Day of year:  ``34'' for Feb. 3.
 @item ddd
@@ -13718,15 +13729,21 @@ abbreviated to one letter, and the alternate forms @samp{a.m.},
 @samp{p.m.}, and @samp{mid} are also understood.  Obviously
 @samp{noon} and @samp{midnight} are allowed only on 12:00:00.
 The words @samp{noon}, @samp{mid}, and @samp{midnight} are also
-recognized with no number attached.
+recognized with no number attached.  Midnight will represent the
+beginning of a day.
 
 If there is no AM/PM indicator, the time is interpreted in 24-hour
 format.
 
-To read the date portion, all words and numbers are isolated
-from the string; other characters are ignored.  All words must
-be either month names or day-of-week names (the latter of which
-are ignored).  Names can be written in full or as three-letter
+When reading the date portion, Calc first checks to see if it is an
+ISO 8601 week-numbering date; if the string contains an integer
+representing the year, a ``W'' followed by two digits for the week
+number, and an integer from 1 to 7 representing the weekday (in that
+order), then all other characters are ignored and this information
+determines the date.  Otherwise, all words and numbers are isolated
+from the string; other characters are ignored.  All words must be
+either month names or day-of-week names (the latter of which are
+ignored). Names can be written in full or as three-letter
 abbreviations.
 
 Large numbers, or numbers with @samp{+} or @samp{-} signs,
@@ -13792,7 +13809,7 @@ command (@pxref{Mode Settings}).
 @item 10
 @samp{ZYYY-MM-DD Www< hh:mm>} (Org mode format)
 @item 11
-@samp{IYYY-Iww-w< Thh:mm:ss>} (ISO-8601 week numbering format)
+@samp{IYYY-Iww-w<Thh:mm:ss>} (ISO 8601 week numbering format)
 @end table
 
 @node Truncating the Stack, Justification, Date Formats, Display Modes
@@ -14117,7 +14134,7 @@ conventions.  Like C mode, Pascal mode interprets array brackets and uses
 a different table of operators.  Hexadecimal numbers are entered and
 displayed with a preceding dollar sign.  (Thus the regular meaning of
 @kbd{$2} during algebraic entry does not work in Pascal mode, though
-@kbd{$} (and @kbd{$$}, etc.) not followed by digits works the same as
+@kbd{$} (and @kbd{$$}, etc.)@: not followed by digits works the same as
 always.)  No special provisions are made for other non-decimal numbers,
 vectors, and so on, since there is no universally accepted standard way
 of handling these in Pascal.
@@ -17436,7 +17453,7 @@ daylight saving computations.  This is an internal version of
 the user-level @code{pwday} function described in the previous
 section. It takes four arguments:  The floating-point date value,
 the corresponding six-element date list, the day-of-month number,
-and the weekday number (0-6).
+and the weekday number (0--6).
 
 The default daylight saving hook ignores the time zone name, but a
 more sophisticated hook could use different algorithms for different
@@ -27854,18 +27871,14 @@ while typing @kbd{u c au/yr @key{RET}} produces
 
 If the units you request are inconsistent with the original units, the
 number will be converted into your units times whatever ``remainder''
-units are left over.  For example, converting @samp{55 mph} into acres
+units are left over.  (This can be disabled; @pxref{Customizing Calc}.)
+For example, converting @samp{55 mph} into acres
 produces @samp{6.08e-3 acre / m s}.  (Recall that multiplication binds
 more strongly than division in Calc formulas, so the units here are
 acres per meter-second.)  Remainder units are expressed in terms of
 ``fundamental'' units like @samp{m} and @samp{s}, regardless of the
 input units.
 
-If you want to disallow using inconsistent units, you can set the customizable variable
-@code{calc-ensure-consistent-units} to @code{t} (@pxref{Customizing Calc}).  In this case,
-if you request units which are inconsistent with the original units, you will be warned about
-it and no conversion will occur.
-
 One special exception is that if you specify a single unit name, and
 a compatible unit appears somewhere in the units expression, then
 that compatible unit will be converted to the new unit and the
@@ -27907,10 +27920,13 @@ Composite units are expanded as if by @kbd{a x}, so that
 
 If the value on the stack does not contain any units, @kbd{u c} will
 prompt first for the old units which this value should be considered
-to have, then for the new units.  Assuming the old and new units you
-give are consistent with each other, the result also will not contain
-any units.  For example, @kbd{@w{u c} cm @key{RET} in @key{RET}}
-converts the number 2 on the stack to 5.08.
+to have, then for the new units.  (If the value on the stack can be
+simplified so that it doesn't contain any units, like @samp{ft/in} can
+be simplified to 12, then @kbd{u c} will still prompt for both old
+units and new units.   Assuming the old and new units you give are
+consistent with each other, the result also will not contain any
+units.  For example, @kbd{@w{u c} cm @key{RET} in @key{RET}} converts
+the number 2 on the stack to 5.08.
 
 @kindex u b
 @pindex calc-base-units
@@ -33302,12 +33318,15 @@ Lisp integers.  This is the only storage format for Calc data objects
 which is not a Lisp list.
 
 Large integers are stored as lists of the form @samp{(bigpos @var{d0}
-@var{d1} @var{d2} @dots{})} for positive integers 1000000 or more, or
-@samp{(bigneg @var{d0} @var{d1} @var{d2} @dots{})} for negative integers
-@mathit{-1000000} or less.  Each @var{d} is a base-1000 ``digit,'' a Lisp integer
-from 0 to 999.  The least significant digit is @var{d0}; the last digit,
+@var{d1} @var{d2} @dots{})} for sufficiently large positive integers
+(where ``sufficiently large'' depends on the machine), or
+@samp{(bigneg @var{d0} @var{d1} @var{d2} @dots{})} for negative
+integers.  Each @var{d} is a base-@expr{10^n} ``digit'' (where again,
+@expr{n} depends on the machine), a Lisp integer from 0 to
+99@dots{}9.  The least significant digit is @var{d0}; the last digit,
 @var{dn}, which is always nonzero, is the most significant digit.  For
-example, the integer @mathit{-12345678} is stored as @samp{(bigneg 678 345 12)}.
+example, the integer @mathit{-12345678} might be stored as
+@samp{(bigneg 678 345 12)}.
 
 The distinction between small and large integers is entirely hidden from
 the user.  In @code{defmath} definitions, the Lisp predicate @code{integerp}
@@ -35689,6 +35708,16 @@ have different dimensions. The default value of @code{calc-ensure-consistent-uni
 is @code{nil}.
 @end defvar
 
+@defvar calc-context-sensitive-enter
+The commands @code{calc-enter} and @code{calc-pop} will typically
+duplicate the top of the stack.  If
+@code{calc-context-sensitive-enter} is non-@code{nil}, then the
+@code{calc-enter} will copy the element at the cursor to the
+top of the stack and @code{calc-pop} will delete the element at the
+cursor.  The default value of @code{calc-context-sensitive-enter} is
+@code{nil}.
+@end defvar
+
 @defvar calc-undo-length
 The variable @code{calc-undo-length} determines the number of undo
 steps that Calc will keep track of when @code{calc-quit} is called.
@@ -36749,7 +36778,7 @@ time zone number or name from the top of the stack.  @xref{Time Zones}.
 
 @c 17
 @item
-A prefix argument specifies a day number (0-6, 0-31, or 0-366).
+A prefix argument specifies a day number (0--6, 0--31, or 0--366).
 
 @c 18
 @item