1.3.1. - spec as a Calculator
In some respects, the spec user interface behaves like a BASIC language interpreter that uses the C language syntax. For example, you can easily print strings and the results of arithmetic expressions:
1.FOURC> p 2+2, sqrt(3), "2^16 =", 1<<16
4 1.73205 2^16 = 65536 2.FOURC>
(The
p
macro is defined as
print
,
a built-in command.)
You do not need to search for your calculator, as
all the standard operators and functions are available.
The arithmetic operators (
=
, *
, /
, %
, +
, -
, ++
, --
, +=
, -=
, *=
, /=
, %=
), the relational
operators (>
, <
, <=
, >=
, ==
, !=
), the boolean
operators (!
, &&
, ||
), the bitwise
operators (>>
, <<
, ~
, &
, ^
, |
, >>=
, <<=
, &=
, ^=
, |=
) and the ternary
operator (?:
)
are all available.
Parentheses can be used for grouping within expressions.
See the
Reference Manual
for a description of all the operators
and their rules of precedence.
The most useful standard C math functions are included, such as
sin()
, cos()
, tan()
, asin()
, acos()
, atan()
, exp()
, log()
, log10()
, pow()
, sqrt()
, and
fabs()
. Conversions functions such as
deg()
and
rad()
convert between degrees and radians, while
bcd()
and
dcb()
convert between decimal and binary-coded decimal.
A
rand()
function to return random numbers is also provided.
Numbers can be entered in decimal, octal or hexadecimal notation, just as in C.
1.FOURC> p 100, 0100, 0x100
100 64 256 2.FOURC>
Special string functions also exist. The
date()
function provides
the current date and time as a string:
1.FOURC> p date()
Mon Feb 15 02:13:13 1994 2.FOURC>
The
date()
function
can also take an argument that is the number of seconds
from the UNIX epoch.
1.FOURC> p date(1e9)
Sat Sep 8 21:46:40 2001 2.FOURC> p date(0)
Wed Dec 31 19:00:00 1969 3.FOURC> p int(time()), date(time())
729760917 Mon Feb 15 02:21:57 1994 4.FOURC>
The second example shows the (Eastern Standard Time) moment of the UNIX epoch. The function
time()
returns the number of
seconds
since that moment, including a fractional part with
a resolution determined by the system clock.
The difference of subsequent calls to
time()
can, for example, give a reasonable elapsed time
for each point in a scan.
The function
input()
reads a string from the keyboard.
An optional argument will be printed first.
For example, a macro or command file
might prompt you for information:
1.FOURC> TITLE = input("Please enter a title: ")
Please enter a title: Au (001) Sample #1 2.FOURC>
Other string functions such as
index()
,
substr()
, length(s)
and
sprintf(format, [args])
are also available.
See the
Reference Manual
for details.