calc: C FORTRAN Pascal
7.8.2 C, FORTRAN, and Pascal Modes
----------------------------------
The ‘d C’ (‘calc-c-language’) command selects the conventions of the C
language for display and entry of formulas. This differs from the
normal language mode in a variety of (mostly minor) ways. In
particular, C language operators and operator precedences are used in
place of Calc’s usual ones. For example, ‘a^b’ means ‘xor(a,b)’ in C
mode; a value raised to a power is written as a function call,
‘pow(a,b)’.
In C mode, vectors and matrices use curly braces instead of brackets.
Octal and hexadecimal values are written with leading ‘0’ or ‘0x’ rather
than using the ‘#’ symbol. Array subscripting is translated into
‘subscr’ calls, so that ‘a[i]’ in C mode is the same as ‘a_i’ in Normal
mode. Assignments turn into the ‘assign’ function, which Calc normally
displays using the ‘:=’ symbol.
The variables ‘pi’ and ‘e’ would be displayed ‘pi’ and ‘e’ in Normal
mode, but in C mode they are displayed as ‘M_PI’ and ‘M_E’,
corresponding to the names of constants typically provided in the
‘<math.h>’ header. Functions whose names are different in C are
translated automatically for entry and display purposes. For example,
entering ‘asin(x)’ will push the formula ‘arcsin(x)’ onto the stack;
this formula will be displayed as ‘asin(x)’ as long as C mode is in
effect.
The ‘d P’ (‘calc-pascal-language’) command selects Pascal
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 ‘$2’ during algebraic entry does not work in Pascal mode, though ‘$’
(and ‘$$’, 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.
The ‘d F’ (‘calc-fortran-language’) command selects FORTRAN
conventions. Various function names are transformed into FORTRAN
equivalents. Vectors are written as ‘/1, 2, 3/’, and may be entered
this way or using square brackets. Since FORTRAN uses round parentheses
for both function calls and array subscripts, Calc displays both in the
same way; ‘a(i)’ is interpreted as a function call upon reading, and
subscripts must be entered as ‘subscr(a, i)’. If the variable ‘a’ has
been declared to have type ‘vector’ or ‘matrix’, however, then ‘a(i)’
will be parsed as a subscript. (Declarations.) Usually it
doesn’t matter, though; if you enter the subscript expression ‘a(i)’ and
Calc interprets it as a function call, you’ll never know the difference
unless you switch to another language mode or replace ‘a’ with an actual
vector (or unless ‘a’ happens to be the name of a built-in function!).
Underscores are allowed in variable and function names in all of
these language modes. The underscore here is equivalent to the ‘#’ in
Normal mode, or to hyphens in the underlying Emacs Lisp variable names.
FORTRAN and Pascal modes normally do not adjust the case of letters
in formulas. Most built-in Calc names use lower-case letters. If you
use a positive numeric prefix argument with ‘d P’ or ‘d F’, these modes
will use upper-case letters exclusively for display, and will convert to
lower-case on input. With a negative prefix, these modes convert to
lower-case for display and input.