Innehållsförteckning
GEL står för Genius Extension Language. Det är språket som du använder för att skriva program i Genius. Ett program i GEL är helt enkelt ett uttryck som evalueras till ett tal, en matris eller ett annat objekt i GEL. Genius matematikverktyg kan användas som en enkel miniräknare eller som ett kraftfullt verktyg för teoretisk forskning. Syntaxen är tänkt att ha en så låg inlärningskurva som möjligt, särskilt då det används som en miniräknare.
Värden i GEL kan vara tal, booleska värden eller strängar. GEL behandlar också matriser som värden. Värden kan bland annat användas i beräkningar, tilldelas till variabler och returneras från funktioner.
Heltal är den första taltypen i GEL. Heltal skrivs som vanligt.
1234
Hexadecimala och oktala tal kan skrivas med C-notation. Till exempel:
0x123ABC 01234
Eller så kan du skriva tal i en godtycklig bas med <base>\<number>
. Siffror större än 10 använder bokstäver liknande för hexadecimala tal. Till exempel kan ett tal i bas 23 skrivas:
23\1234ABCD
Den andra typen av GEL-tal är rationella tal. Rationella tal fås helt enkelt genom att dividera två heltal. Man skulle kunna skriva:
3/4
för att få tre fjärdedelar. Rationella tal accepterar också notationen för delade bråk, så för att få ett och tre tiondelar skulle du kunna skriva:
1 3/10
Nästa taltyp är flyttal. Dessa matas in på liknande sätt som C-notation. Du kan använda E
, e
eller @
som exponentavskiljare. Observera att använda exponentavskiljaren ger ett flyttal även om det inte är något decimaltecken i talet. Exempel:
1.315 7.887e77 7.887e-77 .3 0.3 77e5
När Genius skriver ut ett flyttal kommer det alltid att lägga till ett .0
även om talet är ett heltal. Detta är för att indikera att flyttal tas som inexakta kvantiteter. Då ett tal är skrivet i vetenskaplig notation är det alltid ett flyttal och Genius skriver därför inte ut .0
.
Den sista taltypen i GEL är de komplexa talen. Du kan mata in ett komplext tal som en summa av reella och imaginära delar. För att lägga till en imaginärdel, lägg till ett i
. Här är några exempel då komplexa tal matas in:
1+2i 8.01i 77*e^(1.3i)
Då imaginära tal matas in måste det finnas ett tal före i
. Om du använder i
för sig själv kommer Genius att tolka det som att det handlar om variabeln i
. Om du behöver hänvisa till ett ensamt i
, använd 1i
istället.
För att använda blandad bråk-notation med imaginära tal måste du ha det blandade bråket inom parenteser. (d.v.s., (1 2/5)i
)
Genius har också stöd för inbyggda booleska värden. De två booleska konstanterna är definierade som true
och false
; dessa identifierare kan användas som vilken annan variabel som helst. Du kan också använda identifierarna True
, TRUE
, False
och FALSE
som alias för de ovannämnda.
På alla ställen där ett booleskt uttryck förväntas kan du använda ett booleskt värde eller valfritt uttryck som producerar antingen ett tal eller ett booleskt värde. Om Genius behöver evaluera ett tal som ett booleskt värde kommer det tolka 0 som false
och alla andra tal som true
.
Utöver detta kan du göra aritmetik med booleska värden. Till exempel är
( (1 + true) - false ) * true
detsamma som:
( (true or true) or not false ) and true
Endast addition, subtraktion och multiplikation stöds. Om du blandar tal med booleska värden i ett uttryck så konverteras talen till booleska värden som beskrivits ovan. Detta betyder att till exempel:
1 == true
alltid evaluerar till true
eftersom 1 kommer konverteras till true
innan det jämförs med true
.
Som tal och booleska värden kan även strängar i GEL lagras som värden i variabler och skickas till funktioner. Du kan också konkatenera en sträng med ett annat värde med plus-operatorn. Till exempel:
a=2+3;"Resultatet är: "+a
kommer skapa strängen:
Resultatet är: 5
Du kan också använda C-liknande kontrollsekvenser som \n
,\t
,\b
, och \r. F\ eller " i str\. Till exempel: "Omv kommer skapa en strOmv Observera dock att nprint eller printn.
Dessutom kan du använda biblioteksfunktionen string
för att konvertera vad som helst till en sträng. Till exempel:
string(22)
kommer returnera
"22"
Strängar kan också jämföras med (jämförelse)operatorerna ==
(lika med), !=
(inte lika med) och <=>
Det finns ett speciellt värde som kallas null
. Inga operationer kan be utföras på det, och inget skrivs ut då det returneras. Därför är null
användbart då du inte vill ha utdata från ett uttryck. Värdet null
kan erhållas som ett uttryck då du skriver .
, konstanten null
eller ingenting. Med ingenting menar vi att om du avslutar ett uttryck med en avskiljare ;
är det ekvivalent med att avsluta det med en avskiljare följt av ett null
.
Exempel:
x=5;. x=5;
Vissa funktioner returnerar null
då inget värde kan returneras eller då ett fel uppstått. null
används också som en tom vektor eller matris, eller en tom referens.