GEL stands for Genius Extension Language. It is the language you use
to write programs in Genius. A program in GEL is simply an
expression that evaluates to a number.
Genius Mathematics Tool can therefore be used as a simple calculator, or as a
powerful theoretical research tool. The syntax is meant to
have as shallow of a learning curve as possible, especially for use
as a calculator.
Values in GEL can be numbers, Booleans or strings. Values can be used in calculations, assigned to variables and returned from functions, among other uses.
Integers are the first type of number in GEL. Integers are written in the normal way.
Hexadecimal and octal numbers can be written using C notation. For example:
Or you can type numbers in an arbitrary base using
<base>\<number>. Digits higher than 10 use letters in a similar way to hexadecimal. For example, a number in base 23 could be written:
The second type of GEL number is rationals. Rationals are simply achieved by dividing two integers. So one could write:
to get three quarters. Rationals also accept mixed fraction notation. So in order to get one and three tenths you could write:
The next type if number is floating point. These are entered in a similar fashion to C notation. You can use E, e or @ as the exponent delimiter. Note that using the exponent delimiter gives a float even if there is no decimal point in the number. Examples:
1.315
7.887e77
7.887e-77
.3
0.3
77e5
|
When Genius prints a floating point number it will always append a
.0 even if the number is whole. This is to indicate that
floating point numbers are taken as imprecise quantities. When a number is written in the
scientific notation, it is always a floating point number and thus Genius does not
print the
.0.
The final type of number in gel is the complex numbers. You can enter a complex number as a sum of real and imaginary parts. The imaginary part ends with an i. Here are examples of entering complex numbers:
|
When entering imaginary numbers, a number must be in front of the i. If you use i by itself, Genius will interpret this as referring to the variable i . If you need to refer to i by itself, use 1i instead.
In order to use mixed fraction notation with imaginary numbers you must have the mixed fraction in parentheses. (i.e., (1 2/5)i)
|
Genius also supports native Boolean values. The two Boolean constants are
defined as true
and false
; these
identifiers can be used like any other variable. You can also use the
identifiers True
, TRUE
,
False
and FALSE
as aliases for the
above.
At any place where a Boolean expression is expected, you can use a Boolean
value or any expression that produces either a number or a Boolean. If
Genius needs to evaluate a number as a Boolean it will interpret
0 as false
and any other number as
true
.
In addition, you can do arithmetic with Boolean values. For example:
( (1 + true) - false ) * true
|
is the same as:
( (true or true) or not false ) and true
|
Only addition, subtraction and multiplication are supported. If you mix numbers with Booleans in an expression then the numbers are converted to Booleans as described above. This means that, for example:
always evaluates to
true
since 1 will be converted to
true
before being compared to
true
.
Like numbers and Booleans, strings in GEL can be stored as values inside variables and passed to functions. You can also concatenate a string with another value using the plus operator. For example:
a=2+3;"The result is: "+a
|
will create the string:
You can also use C-like escape sequences such as
\n,
\t,
\b,
\a and
\r. To get a
\ or
" into the string you can quote it with a
\. For example:
"Slash: \\ Quotes: \" Tabs: \t1\t2\t3"
|
will make a string:
Slash: \ Quotes: " Tabs: 1 2 3
|
In addition, you can use the library function string to convert anything to a string. For example:
will return
Strings can also be compared with
== (equal),
!= (not equal) and
<=> (comparison) operators
There is a special value called
null
. No operations can be performed on
it, and nothing is printed when it is returned. Therefore,
null
is useful when you do not want output from an
expression. The value null
can be obtained as an expression when you
type ., the contant null
or nothing.
By nothing we mean that if you end an expression with
a separator ;, it is equivalent to ending it with a
separator followed by a null
.
Example:
Some functions return null
when no value can be returned
or an error happened. Also null
is used as an empty vector
or matrix, or an empty reference.