view etc/refcards/calccard.tex @ 109165:750db9f3e6d8

Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp * alloc.c (overrun_check_malloc, overrun_check_realloc) (overrun_check_free, xstrdup, allocate_string) (allocate_string_data, compact_small_strings, Fmake_string) (make_unibyte_string, make_multibyte_string) (make_string_from_bytes, make_specified_string, make_float) (Fcons, allocate_terminal, allocate_frame, make_pure_string) (Fgarbage_collect): Replace bcopy, safe_bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp. * atimer.c (start_atimer, set_alarm): Likewise. * buffer.c (clone_per_buffer_values, report_overlay_modification) (mmap_realloc, init_buffer_once): Likewise. * callint.c (Fcall_interactively): Likewise. * callproc.c (Fcall_process, Fcall_process_region, child_setup) (getenv_internal_1): Likewise. * casefiddle.c (casify_object): Likewise. * ccl.c (ccl_driver): Likewise. * character.c (str_as_multibyte, str_to_multibyte): Likewise. * charset.c (load_charset_map_from_file) (load_charset_map_from_file, load_charset_map_from_vector) (Fdefine_charset_internal): Likewise. * cm.c (Wcm_clear): Likewise. * coding.c (decode_eol, decode_coding_object) (Fset_coding_system_priority, make_subsidiaries): Likewise. * data.c (Faset): Likewise. * dired.c (directory_files_internal, file_name_completion_stat): Likewise. * dispnew.c (new_glyph_matrix, adjust_glyph_matrix) (clear_glyph_row, copy_row_except_pointers) (copy_glyph_row_contents, new_glyph_pool, realloc_glyph_pool) (save_current_matrix, restore_current_matrix) (build_frame_matrix_from_leaf_window, mirrored_line_dance) (mirror_line_dance, scrolling_window): Likewise. * doc.c (Fsnarf_documentation, Fsubstitute_command_keys): Likewise. * doprnt.c (doprnt): Likewise. * editfns.c (Fuser_full_name, make_buffer_string_both) (Fmessage_box, Fformat, Ftranspose_regions): Likewise. * emacs.c (sort_args): Likewise. * eval.c (Fapply, Ffuncall): Likewise. * fileio.c (Ffile_name_directory, make_temp_name) (Fexpand_file_name, search_embedded_absfilename) (Fsubstitute_in_file_name, Ffile_symlink_p, Finsert_file_contents) (auto_save_error): Likewise. * fns.c (Fstring_equal, Fcopy_sequence, concat) (string_to_multibyte, Fstring_as_unibyte, Fstring_as_multibyte) (internal_equal, Fclear_string, larger_vector, copy_hash_table) (Fmake_hash_table): Likewise. * fringe.c (Fdefine_fringe_bitmap): Likewise. * ftfont.c (ftfont_text_extents): Likewise. * getloadavg.c (getloadavg): Likewise. * image.c (define_image_type, make_image, make_image_cache) (x_create_x_image_and_pixmap, xbm_image_p) (w32_create_pixmap_from_bitmap_data, xbm_load, xpm_lookup_color) (xpm_image_p, x_create_bitmap_from_xpm_data, xpm_load) (init_color_table, x_build_heuristic_mask, pbm_image_p, pbm_load) (png_image_p, png_read_from_memory, png_load, jpeg_image_p) (tiff_image_p, tiff_read_from_memory, gif_image_p) (gif_read_from_memory, gif_load, svg_image_p, gs_image_p): Likewise. * indent.c (scan_for_column, compute_motion): Likewise. * insdel.c (gap_left, gap_right, make_gap_smaller, copy_text) (insert_1_both, insert_from_gap, replace_range_2): Likewise. * intervals.c (reproduce_tree, reproduce_tree_obj): Likewise. * keyboard.c (echo_char, save_getcjmp, restore_getcjmp) (kbd_buffer_store_event_hold, apply_modifiers_uncached) (store_user_signal_events, menu_bar_items, tool_bar_items) (process_tool_bar_item, append_tool_bar_item) (read_char_minibuf_menu_prompt, read_key_sequence) (Fread_key_sequence, Fread_key_sequence_vector, Frecent_keys): Likewise. * keymap.c (current_minor_maps, Fdescribe_buffer_bindings): Likewise. * lisp.h (STRING_COPYIN): Likewise. * lread.c (Fload, read1, oblookup): Likewise. * msdos.c (Frecent_doskeys): Likewise. * nsfns.m (Fx_create_frame): Likewise. * nsfont.m (nsfont_open, nsfont_text_extents, ns_glyph_metrics): Likewise. * nsimage.m (EmacsImage-initFromSkipXBM:width:height:) (EmacsImage-initForXPMWithDepth:width:height:flip:length:): Likewise. * nsmenu.m (ns_update_menubar): Likewise. * nsterm.m (ns_draw_fringe_bitmap, ns_term_init): Likewise. * print.c (print_unwind, printchar, strout, print_string) (print_error_message): Likewise. * process.c (conv_lisp_to_sockaddr, set_socket_option) (Fmake_network_process, Fnetwork_interface_list) (Fnetwork_interface_info, read_process_output, Fprocess_send_eof) (init_process): Likewise. * ralloc.c (resize_bloc, r_alloc_sbrk, r_alloc_init): Likewise. * regex.c (init_syntax_once, regex_compile, re_compile_fastmap): Likewise. * scroll.c (do_scrolling, do_direct_scrolling) (scrolling_max_lines_saved): Likewise. * search.c (search_buffer, wordify, Freplace_match): Likewise. * sound.c (wav_init, au_init, Fplay_sound_internal): Likewise. * syntax.c (skip_chars, skip_syntaxes): Likewise. * sysdep.c (child_setup_tty, sys_subshell, emacs_get_tty) (emacs_set_tty): Likewise. * term.c (encode_terminal_code, calculate_costs) (produce_special_glyphs, create_tty_output, init_tty, delete_tty): Likewise. * termcap.c (tgetst1, gobble_line): Likewise. * termhooks.h (EVENT_INIT): Likewise. * tparam.c (tparam1): Likewise. * unexalpha.c (unexec): Likewise. * unexec.c (write_segment): Likewise. * unexmacosx.c (unexec_write_zero): Likewise. * w32fns.c (w32_wnd_proc, Fx_create_frame, x_create_tip_frame) (Fx_file_dialog, Fsystem_move_file_to_trash): Likewise. * w32font.c (w32font_list_family, w32font_text_extents) (w32font_list_internal, w32font_match_internal) (w32font_open_internal, compute_metrics, Fx_select_font): Likewise. * w32menu.c (set_frame_menubar, add_menu_item) (w32_menu_display_help, w32_free_submenu_strings): Likewise. * w32term.c (XCreateGC, w32_initialize_display_info): Likewise. * w32uniscribe.c (uniscribe_list_family): Likewise. * w32xfns.c (get_next_msg, post_msg, prepend_msg): Likewise. * window.c (make_window, replace_window, set_window_buffer) (Fsplit_window): Likewise. * xdisp.c (init_iterator, RECORD_OVERLAY_STRING, reseat_to_string) (add_to_log, message3, x_consider_frame_title) (append_space_for_newline, extend_face_to_end_of_line) (decode_mode_spec_coding, init_glyph_string): Likewise. * xfaces.c (x_create_gc, get_lface_attributes_no_remap) (Finternal_copy_lisp_face, Finternal_merge_in_global_face) (face_attr_equal_p, make_realized_face, make_face_cache) (free_realized_faces, lookup_named_face, smaller_face) (face_with_height, lookup_derived_face) (x_supports_face_attributes_p, Finternal_set_font_selection_order) (Finternal_set_font_selection_order, realize_default_face) (compute_char_face, face_at_buffer_position) (face_for_overlay_string, face_at_string_position, merge_faces): Likewise. * xfns.c (xic_create_fontsetname, Fx_create_frame) (Fx_window_property, x_create_tip_frame) (Fx_backspace_delete_keys_p): Likewise. * xfont.c (xfont_list, xfont_match, xfont_list_family) (xfont_text_extents): Likewise. * xmenu.c (set_frame_menubar, xmenu_show): Likewise. * xrdb.c (magic_file_p, x_get_resource): Likewise. * xselect.c (x_queue_event, x_get_window_property) (receive_incremental_selection): Likewise. * xsmfns.c (x_session_check_input): Likewise. * xterm.c (x_send_scroll_bar_event, SET_SAVED_MENU_EVENT) (handle_one_xevent, x_check_errors, xim_initialize, x_term_init): Likewise. * character.h (BCOPY_SHORT): Removed. * config.in: Regenerate. * dispnew.c (safe_bcopy): Only define as dummy if PROFILING. * emacs.c (main) [PROFILING]: Don't declare dump_opcode_frequencies. * lisp.h (safe_bcopy): Remove declaration. (memset) [!HAVE_MEMSET]: Declare. (memcpy) [!HAVE_MEMCPY]: Likewise. (memmove) [!HAVE_MEMMOVE]: Likewise. (memcmp) [!HAVE_MEMCMP]: Likewise. * s/ms-w32.h (bzero, bcopy, bcmp, GAP_USE_BCOPY) (BCOPY_UPWARD_SAFE, BCOPY_DOWNWARD_SAFE, HAVE_BCOPY, HAVE_BCMP): Don't define. (HAVE_MEMCMP, HAVE_MEMCPY, HAVE_MEMMOVE, HAVE_MEMSET): Define. * s/msdos.h (GAP_USE_BCOPY, BCOPY_UPWARD_SAFE) (BCOPY_DOWNWARD_SAFE): Don't define. * sysdep.c (memset) [!HAVE_MEMSET]: Define. (memcpy) [!HAVE_MEMCPY]: Define. (memmove) [!HAVE_MEMMOVE]: Define. (memcmp) [!HAVE_MEMCMP]: Define. * config.nt (HAVE_BCOPY, HAVE_BCMP): Remove undefs. (HAVE_MEMCPY, HAVE_MEMMOVE, HAVE_MEMSET, HAVE_MEMCMP): Add undefs. * sed2v2.inp (HAVE_MEMCPY, HAVE_MEMSET): Edit to 1. (HAVE_BZERO): Don't edit. * lwlib.c (lwlib_memset, lwlib_bcopy): Remove. (malloc_widget_value, free_widget_info, allocate_widget_instance) (lw_separator_p): Replace lwlib_memset, lwlib_bcopy, bzero, bcmp by memset, memcpy, memcmp. * lwlib-utils.c (XtApplyToWidgets): Likewise. * xlwmenu.c (XlwMenuInitialize): Likewise. * lwlib.h (lwlib_bcopy): Remove declaration. * ebrowse.c (add_sym, make_namespace): Replace bcopy, bzero by memcpy, memmove, memset. * pop.c (pop_retrieve, socket_connection, pop_getline): Likewise. * CPP-DEFINES (BCOPY_DOWNWARD_SAFE, BCOPY_UPWARD_SAFE) (GAP_USE_BCOPY, HAVE_BCMP, HAVE_BCOPY, bcmp, bcopy, bzero): Remove. * configure.in: Don't check for bcopy, bcmp, bzero. Don't include <strings.h> and don't define bcopy, bzero, BCMP in config.h.
author Andreas Schwab <schwab@linux-m68k.org>
date Thu, 08 Jul 2010 00:18:28 +0200
parents 8b08de8dc0aa
children 376148b31b5e
line wrap: on
line source

% Reference Card for GNU Emacs Calc 2.02
%**start of header
\newcount\columnsperpage

% The format for this file is adapted from the GNU Emacs reference
% card version 1.9, by Stephen Gildea.

% This file can be printed with 1, 2, or 3 columns per page (see below).
% Specify how many you want here.

\columnsperpage=3

% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
% a landscape layout.

\input pdflayout.sty
\pdflayout=(1l)

% Nothing else needs to be changed.
% Typical command to format:  tex calccard.tex
% Typical command to print (3 cols):  dvips -t landscape calccard.dvi

% Copyright (C) 1987, 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
%   2008, 2009, 2010  Free Software Foundation, Inc.

% This file is part of GNU Emacs.

% GNU Emacs is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.

% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.

% You should have received a copy of the GNU General Public License
% along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.

% This file is intended to be processed by plain TeX (TeX82).
%
% The final reference card has six columns, three on each side.
% This file can be used to produce it in any of three ways:
% 1 column per page
%    produces six separate pages, each of which needs to be reduced to 80%.
%    This gives the best resolution.
% 2 columns per page
%    produces three already-reduced pages.
%    You will still need to cut and paste.
% 3 columns per page
%    produces two pages which must be printed sideways to make a
%    ready-to-use 8.5 x 11 inch reference card.
%    For this you need a dvi device driver that can print sideways.
% Which mode to use is controlled by setting \columnsperpage above.
%
% Author (Calc reference card):
%  Dave Gillespie
%  UUCP: uunet!synaptx!daveg
%  Internet: daveg@synaptics.com
%
% Author (refcard.tex format):
%  Stephen Gildea
%  UUCP: mit-erl!gildea
%  Internet: gildea@stop.mail-abuse.org

\def\emacsversionnumber{23}
\def\year{2010}                 % latest copyright year

\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
  \centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
  Permissions on back.}}

\def\copyrightnotice{
\vskip 1ex plus 2 fill\begingroup\small
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
\centerline{designed by Dave Gillespie and Stephen Gildea,}
\centerline{for GNU Emacs Calc.}

Permission is granted to make and distribute copies of
this card provided the copyright notice and this permission notice
are preserved on all copies.

%For copies of the GNU Emacs Calc manual, write to the Free Software
%Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
%MA 02110-1301, USA.
%
\endgroup}

% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}

\newdimen\intercolumnskip
\newbox\columna
\newbox\columnb

\def\ncolumns{\the\columnsperpage}

\message{[\ncolumns\space
  column\if 1\ncolumns\else s\fi\space per page]}

\def\scaledmag#1{ scaled \magstep #1}

% This multi-way format was designed by Stephen Gildea
% October 1986.
\if 1\ncolumns
  \hsize 4in
  \vsize 10in
  \voffset -.7in
  \font\titlefont=\fontname\tenbf \scaledmag3
  \font\headingfont=\fontname\tenbf \scaledmag2
  \font\smallfont=\fontname\sevenrm
  \font\smallsy=\fontname\sevensy

  \footline{\hss\folio}
  \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
\else
  \hsize 3.2in
  \vsize 7.95in
  \hoffset -.75in
  \voffset -.745in
  \font\titlefont=cmbx10 \scaledmag2
  \font\headingfont=cmbx10 \scaledmag1
  \font\smallfont=cmr6
  \font\smallsy=cmsy6
  \font\eightrm=cmr8
  \font\eightbf=cmbx8
  \font\eightit=cmti8
  \font\eighttt=cmtt8
  \font\eightsy=cmsy8
  \textfont0=\eightrm
  \textfont2=\eightsy
  \def\rm{\eightrm}
  \def\bf{\eightbf}
  \def\it{\eightit}
  \def\tt{\eighttt}
  \normalbaselineskip=.8\normalbaselineskip
  \normallineskip=.8\normallineskip
  \normallineskiplimit=.8\normallineskiplimit
  \normalbaselines\rm		%make definitions take effect

  \if 2\ncolumns
    \let\maxcolumn=b
    \footline{\hss\rm\folio\hss}
    \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
  \else \if 3\ncolumns
    \let\maxcolumn=c
    \nopagenumbers
  \else
    \errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
    \errmessage{Illegal number of columns per page}
  \fi\fi

  \intercolumnskip=.46in
  \def\abc{a}
  \output={%
      % This next line is useful when designing the layout.
      %\immediate\write16{Column \folio\abc\space starts with \firstmark}
      \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
      \else\if a\abc
	\global\setbox\columna\columnbox \global\def\abc{b}
        %% in case we never use \columnb (two-column mode)
        \global\setbox\columnb\hbox to -\intercolumnskip{}
      \else
	\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
  \def\multicolumnformat{\shipout\vbox{\makeheadline
      \hbox{\box\columna\hskip\intercolumnskip
        \box\columnb\hskip\intercolumnskip\columnbox}
      \makefootline}\advancepageno}
  \def\columnbox{\leftline{\pagebody}}

  \def\bye{\par\vfill\supereject
    \if a\abc \else\null\vfill\eject\fi
    \if a\abc \else\null\vfill\eject\fi
    \end}
\fi

% we won't be using math mode much, so redefine some of the characters
% we might want to talk about
\catcode`\^=12
\catcode`\_=12

\chardef\\=`\\
\chardef\{=`\{
\chardef\}=`\}

\hyphenation{mini-buf-fer}

\parindent 0pt
\parskip 1ex plus .5ex minus .5ex

\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}

\outer\def\newcolumn{\vfill\eject}

\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}

\outer\def\section#1{\par\filbreak
  \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
  \vskip 2ex plus 1ex minus 1.5ex}

\newdimen\keyindent

\def\beginindentedkeys{\keyindent=1em}
\def\endindentedkeys{\keyindent=0em}
\endindentedkeys

\def\paralign{\vskip\parskip\halign}

\def\<#1>{$\langle${\rm #1}$\rangle$}

\def\kbd#1{{\tt#1}\null}	%\null so not an abbrev even if period follows

\def\beginexample{\par\leavevmode\begingroup
  \obeylines\obeyspaces\parskip0pt\tt}
{\obeyspaces\global\let =\ }
\def\endexample{\endgroup}

\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
  {\hsize=.75\hsize\rightskip=1em
  \hskip\keyindent\relax#1}\kbd{#2}\hfil}}

\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
\newdimen\metaxwidth
\metaxwidth=\wd\metaxbox

\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
  {\hskip\keyindent\relax#1\hfil}%
  \hskip -\metaxwidth minus 1fil
  \kbd{#2}\hfil}}

\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
  &\kbd{#3}\quad\cr}

%
% Calc-specific commands here:
%

\let\^=^
\let\_=_
\catcode`\^=7
\catcode`\_=8

% Redefine to make spaces a bit smaller
\let\wkbd=\kbd
\def\kbd#1{{\spaceskip=.37em\tt#1}\null}

\def\wkey#1#2{\leavevmode\hbox to \hsize{\vtop
  {\hsize=.75\hsize\rightskip=1em
  \hskip\keyindent\relax#1}\wkbd{#2}\hfil}}
\def\wthreecol#1#2#3{\hskip\keyindent\relax#1\hfil&\wkbd{#2}\quad
  &\wkbd{#3}\quad\cr}

\def\stkkey#1#2#3#4{\par\line{\hskip1em\rlap{\kbd{#1}}\hskip4.5em%
  \rlap{{#2}}\hskip7.5em\rlap{{#3}}\hskip7.5em\rlap{{#4}}\hfill}\par}
\def\S#1{$S_{\scriptscriptstyle #1}$}
\def\swap{$\leftrightarrow$}

\def\calcprefix{C-x *\ }
\def\,{{\rm ,\hskip.55em}\ignorespaces}
\def\lesssectionskip{\vskip-1.5ex}

\def\iline#1{\par\line{\hskip1em\relax #1\hfill}\par}

\if 1\ncolumns
\else
  \font\eighti=cmmi8
  \textfont1=\eighti
\fi

%**end of header


% Column 1

\title{GNU Calc Reference Card}

\centerline{(for GNU Emacs version \emacsversionnumber)}

\section{Starting and Stopping}

\wkey{start/stop standard Calc}{\calcprefix c}
\wkey{start/stop X keypad Calc}{\calcprefix k}
\wkey{\quad start/stop either: \kbd{\calcprefix *}}{}
\wkey{stop standard Calc}{q}

\wkey{Calc tutorial}{\calcprefix t}
\wkey{run Calc in other window}{\calcprefix o}
\wkey{quick calculation in minibuffer}{\calcprefix q}

\section{Getting Help}

\lesssectionskip
The \kbd{h} prefix key is Calc's analogue of \kbd{C-h} in Emacs.

\key{quick summary of keys}{?}
\key{describe key briefly}{h c}
\key{describe key fully}{h k}
\key{describe function or command}{h f}
\key{read on-line manual}{h i{\rm\enskip or\enskip}\calcprefix i}
\key{read full Calc summary}{h s{\rm\enskip or\enskip}\calcprefix s}

\section{Error Recovery}

\key{abort command in progress}{C-g}
\key{display recent error messages}{w}
\key{undo last operation}{U}
\key{redo last operation}{D}
\key{recall last arguments}{M-RET}
\key{edit top of stack}{`}
\wkey{reset Calc to initial state}{\calcprefix 0 {\rm (zero)}}

\section{Transferring Data}

\wkey{grab region from a buffer}{\calcprefix g}
\wkey{grab rectangle from a buffer}{\calcprefix r}
\wkey{grab rectangle, summing columns}{\calcprefix :}
\wkey{grab rectangle, summing rows}{\calcprefix \_}

\wkey{yank data to a buffer}{\calcprefix y}

Also, try \kbd{C-k}/\kbd{C-y} or X cut and paste.

\section{Examples}

\lesssectionskip
In RPN, enter numbers first, separated by \kbd{RET} if necessary,
then type the operator.  To enter a calculation in algebraic form,
press the apostrophe first.

\beginindentedkeys
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt\hfil\quad&#\hfil\cr
\wthreecol{ }{{\bf RPN style:}}{{\bf algebraic style:}}
\wthreecol{Example:}{2 RET 3 +}{' 2+3 RET}
\wthreecol{Example:}{2 RET 3 + 4 *}{' (2+3)*4 RET}
\wthreecol{Example:}{2 RET 3 RET 4 + *}{' 2*(3+4) RET}
\wthreecol{Example:}{3 RET 6 + Q 3 \^}{' sqrt(3+6)\^3 RET}
\wthreecol{Example:}{P 3 / n S}{' sin(-pi/3) RET =}
}
\endindentedkeys

\shortcopyrightnotice

% Column 2

\section{Arithmetic}

\key{add, subtract, multiply, divide}{+\, -\, *\, /}
\key{raise to a power, {\it n\/}th root}{\^\, I \^}
\key{change sign}{n}
\key{reciprocal $1/x$}{\&}
\key{square root $\sqrt x$}{Q}

\key{set precision}{p}
\key{round off last two digits}{c 2}
\key{convert to fraction, float}{c F\, c f}

\wkey{enter using algebraic notation}{' 2+3*4}
\wkey{refer to previous result}{' 3*\$\^2}
\wkey{refer to higher stack entries}{' \$1*\$2\^2}
\key{finish alg entry without evaluating}{LFD}
\key{set mode where alg entry used by default}{m a}

\section{Stack Commands}

\lesssectionskip
Here \S{n} is the $n$th stack entry, and $N$ is the size of the stack.

\vskip.5ex
\stkkey{\it key}{\it no prefix}{\it prefix $n$}{\it prefix $-n$}
\stkkey{RET}{copy \S{1}}{copy \S{1..n}}{copy \S{n}}
\stkkey{LFD}{copy \S{2}}{copy \S{n}}{copy \S{1..n}}
\stkkey{DEL}{delete \S{1}}{delete \S{1..n}}{delete \S{n}}
\stkkey{M-DEL}{delete \S{2}}{delete \S{n}}{delete \S{1..n}}
\stkkey{TAB}{swap \S{1}\swap\S{2}}{roll \S{1} to \S{n}}{roll \S{n} to \S{N}}
\stkkey{M-TAB}{roll \S{3} to \S{1}}{roll \S{n} to \S{1}}{roll \S{N} to \S{n}}

With a 0 prefix, these copy, delete, or reverse the entire stack.

\section{Display}

\wkey{scroll horizontally, vertically}{< >\, \{ \}}
\key{home cursor}{o}
\key{line numbers on/off}{d l}
\key{trail display on/off}{t d}

\key{scientific notation}{d s}
\key{fixed-point notation}{d f}
\key{floating-point (normal) notation}{d n}
\key{group digits with commas}{d g}

For display mode commands, \kbd{H} prefix prevents screen redraw
and \kbd{I} prefix temporarily redraws top of stack.

\section{Notations}

\wkey{scientific notation}{6.02e23}
\wkey{minus sign in numeric entry}{\_23{\rm\quad or\quad}23 n}
\wkey{fractions}{3:4}
\wkey{complex numbers}{({\it x}, {\it y})}
\wkey{polar complex numbers}{({\it r}; $\theta$)}
\wkey{vectors (commas optional)}{[1, 2, 3]}
\wkey{matrices (or nested vectors)}{[1, 2; 3, 4]}
\wkey{error forms (\kbd{p} key)}{100 +/- 0.5}
\wkey{interval forms}{[2 ..\ 5)}
\wkey{modulo forms (\kbd{M} key)}{6 mod 24}
\wkey{HMS forms}{5@ 30' 0"}
\wkey{date forms}{<Jul 4, 1992>}
\wkey{infinity, indeterminate}{inf\, nan}

% Column 3

\section{Scientific Functions}

\key{ln, log${}_{\scriptscriptstyle 10}$, log${}_b$}{L\, H L\, B}
\key{exponential {\it e}${}^x$, 10${}^x$}{E\, H E}
\key{sin, cos, tan}{S\, C\, T}
\key{arcsin, arccos, arctan}{I S\, I C\, I T}
\key{inverse, hyperbolic prefix keys}{I\, H}
\key{two-argument arctan}{f T}
\key{degrees, radians modes}{m d\, m r}
\key{pi ($\pi$)}{P}

\key{factorial, double factorial}{!\, k d}
\key{combinations, permutations}{k c\, H k c}
\key{prime factorization}{k f}
\key{next prime, previous prime}{k n\, I k n}
\key{GCD, LCM}{k g\, k l}
\key{random number, shuffle}{k r\, k h}
\key{minimum, maximum}{f n\, f x}

\key{error functions erf, erfc}{f e\, I f e}
\key{gamma, beta functions}{f g\, f b}
\key{incomplete gamma, beta functions}{f G\, f B}
\key{Bessel $J_\nu$, $Y_\nu$ functions}{f j\, f y}

\key{complex magnitude, arg, conjugate}{A\, G\, J}
\key{real, imaginary parts}{f r\, f i}
\key{convert polar/rectangular}{c p}

\section{Financial Functions}

\key{enter percentage}{M-\%}
\key{convert to percentage}{c \%}
\key{percentage change}{b \%}

\key{present value}{b P}
\key{future value}{b F}
\key{rate of return}{b T}
\key{number of payments}{b \#}
\key{size of payments}{b M}
\key{net present value, int.\ rate of return}{b N\, b I}

Above computations assume payments at end of period.  Use \kbd{I}
prefix for beginning of period, or \kbd{H} for a lump sum investment.

\key{straight-line depreciation}{b S}
\key{sum-of-years'-digits}{b Y}
\key{double declining balance}{b D}

\section{Units}

\wkey{enter with units}{' 55 mi/hr}
\key{convert to new units, base units}{u c\, u b}
\key{convert temperature units}{u t}
\key{simplify units expression}{u s}
\key{view units table}{u v}

Common units:
\iline{distance: \kbd{m}, \kbd{cm}, \kbd{mm}, \kbd{km};
  \kbd{in}, \kbd{ft}, \kbd{mi}, \kbd{mfi};
  \kbd{point}, \kbd{lyr}}
\iline{volume: \kbd{l} or \kbd{L}, \kbd{ml};
  \kbd{gal}, \kbd{qt}, \kbd{pt}, \kbd{cup}, \kbd{floz},
  \kbd{tbsp}, \kbd{tsp}}
\iline{mass: \kbd{g}, \kbd{mg}, \kbd{kg}, \kbd{t};
  \kbd{lb}, \kbd{oz}, \kbd{ton}}
\iline{time: \kbd{s} or \kbd{sec}, \kbd{ms}, \kbd{us}, \kbd{ns}, \kbd{min},
  \kbd{hr}, \kbd{day}, \kbd{wk}}
\iline{temperature: \kbd{degC}, \kbd{degF}, \kbd{K}}

% Column 4

\newcolumn
\title{GNU Calc Reference Card}

\section{Programmer's Functions}

\key{binary, octal, hex display}{d 2\, d 8\, d 6}
\key{decimal, other radix display}{d 0\, d r}
\key{display leading zeros}{d z}
\key{entering non-decimal numbers}{16\#7FFF}

\key{binary word size}{b w}
\key{binary AND, OR, XOR}{b a\, b o\, b x}
\key{binary DIFF, NOT}{b d\, b n}
\key{left shift}{b l}
\key{logical right shift}{b r}
\key{arithmetic right shift}{b R}

\key{integer quotient, remainder}{\\\, \%}
\key{integer square root, logarithm}{f Q\, f I}
\key{floor, ceiling, round to integer}{F\, I F\, R}

\section{Variables}

\lesssectionskip
Variable names are single digits or whole words.

\key{store to variable}{s t}
\key{store and keep on stack}{s s}
\key{recall from variable}{s r}
\key{shorthands for digit variables}{t {\it n}\, s {\it n}\, r {\it n}}
\key{unstore, exchange variable}{s u\, s x}
\key{edit variable}{s e}

\section{Vector Operations}

\key{vector of 1, 2, $\ldots\mskip\thinmuskip$, {\it n}}{v x {\it n}}
\key{vector of {\it n} counts from {\it a} by {\it b}}{C-u v x}
\key{vector of copies of a value}{v b}
\key{concatenate into vector}{|}
\key{pack many stack items into vector}{v p}
\key{unpack vector or object}{v u}

\key{length of vector (list)}{v l}
\key{reverse vector}{v v}
\key{sort, grade vector}{V S\, V G}
\key{histogram of vector data}{V H}
\key{extract vector element}{v r}

\key{matrix determinant, inverse}{V D\, \&}
\key{matrix transpose, trace}{v t\, V T}
\key{cross, dot products}{V C\, *}
\key{identity matrix}{v i}
\key{extract matrix row, column}{v r\, v c}

\key{intersection, union, diff of sets}{V \^\, V V\, V -}
\key{cardinality of set}{V \#}

\key{add vectors elementwise (i.e., map \kbd{+})}{V M +}
\key{sum elements in vector (i.e., reduce \kbd{+})}{V R +}
\key{sum rows in matrix}{V R \_ +}
\key{sum columns in matrix}{V R : +}
\key{sum elements, accumulate results}{V U +}

% Column 5

\section{Algebra}

\wkey{enter an algebraic formula}{' 2x+3y\^2}
\wkey{enter an equation}{' 2x\^2=18}

\key{symbolic (vs.\ numeric) mode}{m s}
\key{fractions (vs.\ float) mode}{m f}
\key{suppress evaluation of formulas}{m O}
\key{simplify formulas automatically}{m S}
\key{return to default evaluation rules}{m D}

\key{``Big'' display mode}{d B}
\key{C, Pascal, FORTRAN modes}{d C\, d P\, d F}
\key{\TeX, La\TeX, eqn modes}{d T\, d L\, d E}
\key{Maxima}{d X}
\key{Unformatted mode}{d U}
\key{Normal language mode}{d N}

\key{simplify formula}{a s}
\key{put formula into rational form}{a n}
\key{evaluate variables in formula}{=}
\key{evaluate numerically}{N}
\key{let variable equal a value in formula}{s l {\it x\/}={\it val}}
\key{declare properties of variable}{s d}
\iline{Common decls: \kbd{pos}, \kbd{int}, \kbd{real},
  \kbd{scalar}, \kbd{[{\it a}..{\it b}\hskip.1em]}.}

\key{expand, collect terms}{a x\, a c}
\key{factor, partial fractions}{a f\, a a}
\key{polynomial quotient, remainder, GCD}{a \\\, a \%\, a g}
\key{derivative, integral}{a d\, a i}
\key{taylor series}{a t}

\key{principal solution to equation(s)}{a S}
\key{list of solutions}{a P}
\key{generic solution}{H a S}
\key{apply function to both sides of eqn}{a M}

\key{rewrite formula}{a r}
\iline{Example: \wkbd{a r a*b + a*c := a*(b+c)}}
\iline{Example: \wkbd{a r sin(x)\^2 := 1-cos(x)\^2}}
\iline{Example: \wkbd{a r cos(n pi) := 1 ::\ integer(n) ::\ n\%2 = 0}}
\iline{Example: \wkbd{a r [f(0) := 1, f(n) := n f(n-1) ::\ n > 0]}}
\iline{Put rules in \kbd{EvalRules} to have them apply automatically.}
\iline{Put rules in \kbd{AlgSimpRules} to apply during \kbd{a s}
  command.}
\iline{Common markers: \kbd{opt}, \kbd{plain}, \kbd{quote}, \kbd{eval},
  \kbd{let}, \kbd{remember}.}

\section{Numerical Computations}

\key{sum formula over a range}{a +}
\key{product of formula over a range}{a *}
\key{tabulate formula over a range}{a T}
\key{integrate numerically over a range}{a I}
\key{find zero of formula or equation}{a R}
\key{find local min, max of formula}{a N\, a X}
\key{fit data to line or curve}{a F}

\key{mean of data in vector or variable}{u M}
\key{median of data}{H u M}
\key{geometric mean of data}{u G}
\key{sum, product of data}{u +\, u *}
\key{minimum, maximum of data}{u N\, u X}
\key{sample, pop.\ standard deviation}{u S\, I u S}

% Column 6

\section{Selections}

\key{select subformula under cursor}{j s}
\key{select {\it n\/}th subformula}{j {\it n}}
\key{select more}{j m}
\key{unselect this, all formulas}{j u\, j c}

\key{copy indicated subformula}{j RET}
\key{delete indicated subformula}{j DEL}

\key{commute selected terms}{j C}
\key{commute term leftward, rightward}{j L\, j R}
\key{distribute, merge selection}{j D\, j M}
\key{isolate selected term in equation}{j I}
\key{negate, invert term in context}{j N\, j \&}
\key{rewrite selected term}{j r}

\section{Graphics}

\key{graph function or data}{g f}
\key{graph 3D function or data}{g F}
\key{replot current graph}{g p}
\key{print current graph}{g P}
\key{add curve to graph}{g a}
\key{set number of data points}{g N}
\key{set line, point styles}{g s\, g S}
\key{set log vs.\ linear {\it x, y} axis}{g l\, g L}
\key{set range for {\it x, y} axis}{g r\, g R}
\key{close graphics window}{g q}

\section{Programming}

\key{begin, end recording a macro}{C-x (\, C-x )}
\key{replay keyboard macro}{X}
\wkey{read region as written-out macro}{\calcprefix m}
\key{if, else, endif}{Z [\, Z :\, Z ]}
\key{equal to, less than, member of}{a =\, a <\, a \{}
\key{repeat {\it n} times, break from loop}{Z <\, Z >\, Z /}
\key{``for'' loop: start, end; body, step}{Z (\, Z )}
\key{save, restore mode settings}{Z `\, Z '}
\key{query user during macro}{Z \#}
\key{put finished macro on a key}{Z K}

\key{define function with formula}{Z F}
\key{edit definition}{Z E}

\key{record user-defined command permanently}{Z P}
\key{record variable value permanently}{s p}
\key{record mode settings permanently}{m m}

\copyrightnotice

\bye

% Local variables:
% compile-command: "pdftex calccard"
% End:

% arch-tag: a2764f34-ec23-4083-bd5c-53f9e70a5da9