Seznam operátorů GEL

Vše v jazyce GEL jsou ve skutečnosti jen výrazy. Výrazy jsou dohromady řetězeny pomocí různých operátorů. Jak jste již viděli, i oddělovač je ve skutečnosti jen binární operátor jazyka. Zde je seznam operátorů jazyka GEL.

a;b

Oddělovač, který vyhodnocuje jak a, tak b, ale vrací výsledek pouze z b.

a=b

Operátor přiřazení.

a:=b

Operátor přiřazení. Přiřadí b do a (a musí být platná l-hodnota). Liší se od =, protože se nikdy nepřevádí na ==.

|a|

Absolutní hodnota. V případě, že výraz je komplexní číslo, je vrácen modul (absolutní hodnota komplexního čísla, někdy také nazýván norma), což je vzdálenost od počátku. Například: |3 * e^(1i*pi)| vrátí 3.

Více informací najdete v encyklopediích Mathworld (text je v angličtině) a Wikipedia.

a^b

Umocnění, umocní a na b-tou.

a.^b

Umocňování prvek po prvku. Umocní každý prvek matice a na b-tou. Nebo, když je b matice stejné velikosti jako a, umocňuje se prvek po prvku. Pokud je a číslo a b je matice, pak se vytvoří matice stejné velikosti jako b s a umocněným na všechny různé mocnitele v b.

a+b

Sčítání. Sečte dvě čísla, matice, funkce nebo řetězce. Pokud přičtete řetězec k čemukoliv, výsledkem bude vždy řetězec. Pokud je jeden operand čtvercová matice a druhý číslo, je číslo vynásobeno jednotkovou maticí.

a-b

Odčítání. Odečte dvě čísla, matice nebo funkce.

a*b

Násobení. Jedná se o normální násobení matic.

a.*b

Násobení prvek po prvku v situaci, kdy a a b jsou matice.

a/b

Dělení. Pokud jsou a a b čísla, jedná se o běžné dělení. Pokud to jsou matice, odpovídá to a*b^-1.

a./b

Dělení prvek po prvku. Pro čísla je to stejné jako a/b, ale u matic to funguje prvek po prvku.

a\b

Zpětné dělení. Je to to stejné, jako b/a.

a.\b

Zpětné dělení prvků prvky.

a%b

Operátor zbytku. Nepřepíná do režimu modulární aritmetiky, ale jen prostě vrátí zbytek celočíselného dělení a/b.

a.%b

Operátor zbytku dělení prvků prvky. Vrací zbytky po dělení celočíselných prvků celočíselnými prvky a./b.

a mod b

Operátor modulární aritmetiky. Výraz a je vyhodnocen modulární aritmetikou vůči b. Viz „Modulární aritmetika“. Některé funkce a operátory se chovají odlišně při modulární aritmetice s celými čísly.

a!

Operátor faktoriálu. Je to jako 1*…*(n-2)*(n-1)*n.

a!!

Operátor dvojitého faktoriálu. Je to jako 1*…*(n-4)*(n-2)*n.

a==b

Operátor rovnosti, vrací true (pravda) nebo false (nepravda) podle toho, zda a je b rovno nebo není rovno.

a!=b

Operátor nerovnosti, vrací true (pravda) v případě, že a se nerovná b, jinak vrací false (nepravda).

a<>b

Alternativní operátor nerovnosti, vrací true (pravda) v případě, že a se nerovná b, jinak vrací false (nepravda).

a<=b

Operátor menší než nebo rovno, vrací true (pravda) v případě, že a je menší než nebo se rovná b, jinak vrací false (nepravda). Je možné řetězit ve stylu a <= b <= c (a může se při tom kombinovat s operátorem menší než).

a>=b

Operátor větší než nebo rovno, vrací true (pravda) v případě, že a je větší než nebo se rovná b, jinak vrací false (nepravda). Je možné řetězit ve stylu a >= b >= c (a může se při tom kombinovat s operátorem větší než).

a<=b

Operátor menší než, vrací true (pravda) v případě, že a je menší než b, jinak vrací false (nepravda). Je možné řetězit ve stylu a < b < c (a může se při tom kombinovat s operátorem menší než nebo rovno).

a>=b

Operátor větší než, vrací true (pravda) v případě, že a je větší než b, jinak vrací false (nepravda). Je možné řetězit ve stylu a > b > c (a může se při tom kombinovat s operátorem větší než nebo rovno).

a<=>b

Operátor porovnání. V případě, že a je rovno b, vrací 0, pokud je a menší než b vrací -1 a pokud je a větší než b, vrací 1.

a and b

Logické A (AND). Vrací pravda, když a i b jsou pravda, ve všech ostatních případech nepravda. Pokud jsou předána čísla, je se všemi nenulovými zacházeno jako s pravdivostní hodnotou pravda.

a or b

Logické NEBO (OR). Vrací pravda, když je a nebo b (nebo oboje) pravda, jinak vrací nepravda. Pokud jsou předána čísla, je se všemi nenulovými zacházeno jako s pravdivostní hodnotou pravda.

a xor b

Logické vylučovací NEBO (XOR). Vrací pravda, když právě a nebo b je pravda, ve všech ostatních případech vrací nepravda. Pokud jsou předána čísla, je se všemi nenulovými zacházeno jako s pravdivostní hodnotou pravda.

not a

Logická negace (NOT). Vrací logickou negaci a.

-a

Operátor negace. Vrací opačné číslo nebo matici (u matice pracuje prvek po prvku).

&a

Reference proměnné (pro předání odkazu na proměnnou). Viz „Reference“.

*a

Dereference proměnné (pro přístup k odkazované proměnné). Viz „Reference“.

a'

Transponovat matici komplexně sdruženou (Hermiteovsky sdružená matice). Tj. řádky a sloupce se prohodí a vezmou se komplexně sdružená čísla ke všem prvkům. To znamená, že když prvek i,j matice a je x+iy, pak prvek j,i matice a' je x-iy.

a.'

Transponovat matici (bez komplexního sdružení). To znamená, že prvek i,j matice a se stane prvkem j,i matice a.'.

a@(b,c)

Získat prvek matice v řádku b a sloupci c. Pokud jsou b, c vektory, získají se odpovídající řádky, sloupce nebo podmatice.

a@(b,)

Získat řádek matice (nebo více řádků, pokud je b vektor).

a@(b,:)

Stejné jako předchozí.

a@(,c)

Získat sloupec matice (nebo sloupce, pokud je c vektor).

a@(:,c)

Stejné jako předchozí.

a@(b)

Získat prvek z matice, s kterou se zachází jako s vektorem. Matice se prochází řádek pro řádku.

a:b

Sestavit vektor od a do b (nebo zadané části řádku, sloupce pro operátor @). Například pro získání řádků 2 až 4 z matice A byste mohli použít

A@(2:4,)
	     

, kdy 2:4 vrátí vektor [2,3,4].

a:b:c

Sestavit vektor od a do c s krokem b. Tj. například

genius> 1:2:9
=
`[1, 3, 5, 7, 9]

Když jsou použita desetinná čísla, například 1.0:0.4:3.0, je výstupem to, co očekáváte, přestože se k 1,0 pětkrát přidá 0,4, je to jen o něco více než 3,0 z důvodu, jakým jsou desetinná čísla uchována ve dvojkové soustavě (není to přesně 0,4, ale uložené číslo je obvykle o trochu větší). Způsob, jakým je to zpracováváno, je stejný jako u cyklu a sčítacích a násobících smyček. Pokud je konec v rámci 2^-20násobku velikosti kroku koncového bodu, je koncový bod použit a předpokládá se, že nastaly chyby zaokrouhlení. To sice není perfektní, ale řeší to většinu případů. Tato kontrola se provádí až ve verzi 1.0.18 a novějších, takže provádění vašeho kódu může být ve starších verzích odlišné. Pokud chcete této záležitosti předejít, používejte opravdová racionální čísla, případně použijte funkci float, když si přejete na konci dostat desetinné číslo. Například 1:2/5:3 funguje správně a float(1:2/5:3) vám poskytne desetinné číslo a přitom to bude nepatrně přesnější než 1.0:0.4:3.0.

(a)i

Udělat z a imaginární číslo (vynásobit a imaginární hodnotou i). Všimněte si, že normálně se i zapisuje jako 1i. Takže předchozí je vlastně ekvivalentní k

(a)*1i
	     
`a

Uvozovat identifikátor, kterýžto nebude vyhodnocen. Nebo uvozovat matici, takže nebude rozšířena.

a swapwith b

Přehodit hodnotu proměnné a s hodnotou proměnné b. V současnosti nepracuje s částmi prvků matice. Vrací null. Dostupné od verze 1.0.13.

increment a

Zvýšit hodnotu proměnné a o 1. V případě, že a je matice, je o 1 zvýšen každý prvek. Dělá to vlastně to stejné co a=a+1, akorát o něco rychleji. Vrací null. Dostupné od verze 1.0.13.

increment a by b

Zvýšit hodnotu proměnné a o b. V případě, že a je matice, je o zvýšen každý prvek. Dělá to vlastně to stejné co a=a+b, akorát o něco rychleji. Vrací null. Dostupné od verze 1.0.13.

Poznámka

Operátor @() dává operátoru : více možností. S ním můžete určovat části matice. Takže a@(2:4,6) jsou řádky 2,3,4 sloupce 6. Nebo a@(,1:2) vám dá první dva sloupce matice. Do operátoru @() můžete i přiřazovat, stačí když je pravou hodnotou matice o stejném rozměru jako určená oblast nebo je to jiný typ hodnoty.

Poznámka

Porovnávací operátory (vyjma operátoru <=>, který se chová normálně) nejsou striktně binární operátory, mohou být fakticky seskupovány běžným matematickým způsobem, např.: (1<x<=y<5) je platný pravdivostní výraz a znamená přesně to, co by měl, tj. (1<x a x≤y a y<5)

Poznámka

Unární operátor mínus funguje různými způsoby v závislosti na tom, kde se vyskytuje. Když se objeví před číslem, váže se přímo k němu. Když se objeví před výrazem, má slabší vazbu než mocnina a faktoriál. Například -1^k je ve skutečnosti (-1)^k, ale -neco(1)^k je ve skutečnosti -(neco(1)^k). Takže věnujte pozornost tomu, jak je používáte a pokud máte pochybnosti, raději přidejte závorky.