/usr/share/calc/help/overview is in apcalc-common 2.12.4.4-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | CALC - An arbitrary precision calculator.
by David I. Bell
This is a calculator program with arbitrary precision arithmetic.
All numbers are represented as fractions with arbitrarily large
numerators and denominators which are always reduced to lowest terms.
Real or exponential format numbers can be input and are converted
to the equivalent fraction. Hex, binary, or octal numbers can be
input by using numbers with leading '0x', '0b' or '0' characters.
Complex numbers can be input using a trailing 'i', as in '2+3i'.
Strings and characters are input by using single or double quotes.
Commands are statements in a C-like language, where each input
line is treated as the body of a procedure. Thus the command
line can contain variable declarations, expressions, labels,
conditional tests, and loops. Assignments to any variable name
will automatically define that name as a global variable. The
other important thing to know is that all non-assignment expressions
which are evaluated are automatically printed. Thus, you can evaluate
an expression's value by simply typing it in.
Many useful built-in mathematical functions are available. Use
the 'show builtins' command to list them. You can also define
your own functions by using the 'define' keyword, followed by a
function declaration very similar to C. Functions which only
need to return a simple expression can be defined using an
equals sign, as in the example 'define sc(a,b) = a^3 + b^3'.
Variables in functions can be defined as either 'global', 'local',
or 'static'. Global variables are common to all functions and the
command line, whereas local variables are unique to each function
level, and are destroyed when the function returns. Static variables
are scoped within single input files, or within functions, and are
never destroyed. Variables are not typed at definition time, but
dynamically change as they are used. So you must supply the correct
type of variable to those functions and operators which only work
for a subset of types.
Calc has a help command that will produce information about
every builtin function, command as well as a number of other
aspects of calc usage. Try the command:
help help
for and overview of the help system. The command:
help builtin
provides information on built-in mathematical functions, whereas:
help asinh
will provides information a specific function. The following
help files:
help command
help define
help operator
help statement
help variable
provide a good overview of the calc language. If you are familiar
with C, you should also try:
help unexpected
It contains information about differences between C and calc
that may surprize you.
To learn about calc standard resource files, try:
help resource
To learn how to invoke the calc command and about calc -flags, try:
help usage
To learn about calc shell scripts, try:
help script
A full and extensive overview of calc may be obtained by:
help full
By default, arguments to functions are passed by value (even
matrices). For speed, you can put an ampersand before any
variable argument in a function call, and that variable will be
passed by reference instead. However, if the function changes
its argument, the variable will change. Arguments to built-in
functions and object manipulation functions are always called
by reference. If a user-defined function takes more arguments
than are passed, the undefined arguments have the null value.
The 'param' function returns function arguments by argument
number, and also returns the number of arguments passed. Thus
functions can be written to handle an arbitrary number of
arguments.
The mat statement is used to create a matrix. It takes a
variable name, followed by the bounds of the matrix in square
brackets. The lower bounds are zero by default, but colons can
be used to change them. For example 'mat foo[3, 1:10]' defines
a two dimensional matrix, with the first index ranging from 0
to 3, and the second index ranging from 1 to 10. The bounds of
a matrix can be an expression calculated at runtime.
Lists of values are created using the 'list' function, and values can
be inserted or removed from either the front or the end of the list.
List elements can be indexed directly using double square brackets.
The obj statement is used to create an object. Objects are
user-defined values for which user-defined routines are
implicitly called to perform simple actions such as add,
multiply, compare, and print. Objects types are defined as in
the example 'obj complex {real, imag}', where 'complex' is the
name of the object type, and 'real' and 'imag' are element
names used to define the value of the object (very much like
structures). Variables of an object type are created as in the
example 'obj complex x,y', where 'x' and 'y' are variables.
The elements of an object are referenced using a dot, as in the
example 'x.real'. All user-defined routines have names composed
of the object type and the action to perform separated by an
underscore, as in the example 'complex_add'. The command 'show
objfuncs' lists all the definable routines. Object routines
which accept two arguments should be prepared to handle cases
in which either one of the arguments is not of the expected
object type.
These are the differences between the normal C operators and
the ones defined by the calculator. The '/' operator divides
fractions, so that '7 / 2' evaluates to 7/2. The '//' operator
is an integer divide, so that '7 // 2' evaluates to 3. The '^'
operator is a integral power function, so that 3^4 evaluates to
81. Matrices of any dimension can be treated as a zero based
linear array using double square brackets, as in 'foo[[3]]'.
Matrices can be indexed by using commas between the indices, as
in foo[3,4]. Object and list elements can be referenced by
using double square brackets.
The print statement is used to print values of expressions.
Separating values by a comma puts one space between the output
values, whereas separating values by a colon concatenates the
output values. A trailing colon suppresses printing of the end
of line. An example of printing is 'print \"The square of\",
x, \"is\", x^2\'.
The 'config' function is used to modify certain parameters that
affect calculations or the display of values. For example, the
output display mode can be set using 'config(\"mode\", type)',
where 'type' is one of 'frac', 'int', 'real', 'exp', 'hex',
'oct', or 'bin'. The default output mode is real. For the
integer, real, or exponential formats, a leading '~' indicates
that the number was truncated to the number of decimal places
specified by the default precision. If the '~' does not
appear, then the displayed number is the exact value.
The number of decimal places printed is set by using
'config(\"display\", n)'. The default precision for
real-valued functions can be set by using 'epsilon(x)', where x
is the required precision (such as 1e-50).
There is a command stack feature so that you can easily
re-execute previous commands and expressions from the terminal.
You can also edit the current command before it is completed.
Both of these features use emacs-like commands.
Files can be read in by using the 'read filename' command.
These can contain both functions to be defined, and expressions
to be calculated. Global variables which are numbers can be
saved to a file by using the 'write filename' command.
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc 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 Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
##
## @(#) $Revision: 30.1 $
## @(#) $Id: overview,v 30.1 2007/03/16 11:10:42 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/overview,v $
##
## Under source code control: 1991/07/21 04:37:23
## File existed as early as: 1991
##
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|