
Speakeasy is a powerful tool for solving the most difficult
computational problems!



Speakeasy
gives you the power to perform wide range of mathematical operations and
more.


In
simplest terms, Speakeasy is like a powerful, handheld calculator without
the limitations of a calculator. A calculator operates on scalars (a
single value). Speakeasy, however, allows multiplevalue variables
to be defined and repetitious calculations to be performed efficiently.


The links below will introduce you to some of the many
capabilities that Speakeasy has to offer.




Getting
Started 
The Speakeasy prompt
( :_ )
indicates that Speakeasy is ready for user
input. A user simply types the desired calculation and presses the
enter key. Speakeasy performs the calculation and displays the
output. It's as simple as that!



Basic Arithmetic 
Speakeasy
provides a convenient means for performing the arithmetic or binary
operator: addition, subtraction, multiplication, division and
exponentiation.
The
most commonly used mathematical operations are also provided,
including: absolute value, average, natural logarithm, base10 logarithm,
factorial, square root, cube root, and xx modulo nn (the remainder of xx/nn).
Enter
a simple arithmetic statement such as:
:_ 2+3
Speakeasy
replies with the statement:
2+3 = 5



Large and Small Numbers 
Very
large or very
small numbers can be expressed in scientific notation by
numeric field with the letter E
followed by the power
of 10 associated with that number. (No spaces should be inserted
anywhere in such a numeric specification.) For example:
1.057E5
means
.00001057
236E+6 means 236000000
In contrast to other
computer languages, Speakeasy makes no distinction between integer and
noninteger numbers. The forms 4, 4.0 and 4.E0 are all
equivalent ways of representing the same value.



Trigonometric Functions 
Speakeasy
includes all of the trigonometric
functions:
Standard Functions:
sinsine, coscosine, tantangent, cotcotangent
Arc Functions:
asinarcsine, acosarccosine, atanarctangent, acotarccotangent
Hyperbolic Functions:
sinhhyperbolic sine, coshhyperbolic cosine, tanhhyperbolic tangent
A given operation can be
used singly or in any combination within a Speakeasy statement. For
example:
:_sqrt ( (14**2) /
(abs(7)) + 8*cos(0) )
SQTR ( (14**2) / (ABS(7)) + 8*COS(0)) = 6



PreProgrammed Operations 
Unlike other
mathematical packages, Speakeasy provides an extensive set of
numerical operations.
Without the clutter (or the cost) of
extraneous functions, the Speakeasy language remains easy to use.
Each of these operations is invoked with a single, obvious word  a word
you already know!
Speakeasy includes
operations for:



UserDefined Operations 
UserDefined
Operations eliminate repetitious input and
greatly expand the power of Speakeasy.
Speakeasy
can be used to develop new userdefined operations, in the form of a
procedure. A Speakeasy procedure is simply a collection of Speakeasy
statements saved as an object which, in turn, can be executed with a single
statement.
Because
of the intuitive language of Speakeasy, the user does not have to be trained in
conventional programming to create a procedure. Several operations are
provided, however, for creating advanced procedures with loops, branches and/or
queries.
These programming
capabilities closely parallel the features found in other languages.
However, because of the powerful operations available in Speakeasy, the
procedures are relatively compact and thus easily constructed and understood.



Structured Objects 
Using
Speakeasy enables users to have the ability to make a series of
calculations in an interactive manner. This ability becomes
extremely powerful when used with arrays, times series, set, matrices and
vectors.
Speakeasy
supports all of the standard types of structured objects including:
scalars, arrays, time series, sets and matrices/vectors...and, Speakeasy can solve
any arithmetic expression using these objects.
Objects are
easily defined, as shown in the following statement which defines an
array. The following example of an array has three rows and three
columns:
:_x =
array(3, 3 : 1 2 3 4 5 6 7 8 9)
:_y
= matrix(3, 3 : 1 2 3 4 5 6 7 8 9)
:_x
X
(A 3 by 3 Array)
1 2 3
4 5 6
7 8 9
Algebraic
operations in Speakeasy are context sensitive. They examine the
structure and the family associated with objects involved in order to
determine the proper operation to perform. For example,
multiplication for arrays and matrices are performed differently. In
the commands below, we multiply x*x and y*y. Note that each command
produces the appropriate result:
:_x*x
X*X
(A 3 by 3 Array)
1
4 9
16 25 36
49 64 81
:_y*y
Y*Y
(A 3 by 3 Matrix)
30 36 42
66 81 96
102 126 150
Speakeasy
also incorporates elaborate syntax and logic checking. Whenever two
objects are combined in an operation, they are examined for compatibility
and structure information that may direct the overall operation. If
an error occurs a helpful and easily understood message will lead you to
your solution.



Applications with Front Ends 
Speakeasy's
highlevel language is well suited to the development of powerful, customized
applications.
Selfcontained applications written in Speakeasy have been developed for a
number of vertical applications. The Paneleasy component of Speakeasy,
provides developers the opportunity to create custom applications designed for a
specific enduser application.
Since
Speakeasy's numeric and graphical capabilities are fully integrated, you can
also create applications with mousedriven front ends.



Analytical Graphing 
Graphing operations are as easy to use as the rest of Speakeasy's operations: a
single word is typically all you need to create presentationquality images.
Speakeasy
provides powerful graphical operations that generate:



Literal Data 
Speakeasy
provides literal
data processing tools in addition to its superior numeric capabilities. Scalars, sets and arrays can be defined with
literal elements.
Two
forms of literal data are available:

 characterliteral
data which are strings of letters, and 


 nameliteral
data, which are collections of words. 

CharacterLiteral
data is specified by enclosing the information in quotation marks.
Each character or space is an element in such data:
"ABCDEFGHIJKLMN"
specifies
a fourteen element characterliteral containing all uppercase characters.
Characterliterals are generally used for textual information. Both
uppercase and lowercase characters can be specified in a characterliteral
object.
NameLiteral
data is specified by enclosing the information in apostrophes. An
element of a nameliteral has, at most, eight characters. Thus
'N'
specifies
a nameliteral containing the letter N.
Nameliterals are generally used for names of defined objects. Lowercase
characters are automatically converted into uppercase characters in a
nameliteral object.

