# Comandos suportados pelo KAlgebra

## mais

- Nome: mais

- Descrição: Adição

- Parâmetros plus(... parâmetros, ...)

- Exemplo: x->x+2

## vezes

- Nome: vezes

- Descrição: Multiplicação

- Parâmetros: vezes(... parâmetros, ...)

- Exemplo: x->x*2

## menos

- Nome: menos

- Descrição: Subtracção. Irá remover todos os valores do primeiro.

- Parâmetros: menos(... parâmetros, ...)

- Exemplo: x->x-2

## dividir

- Nome: dividir

- Descrição: Divisão

- Parâmetros: dividir(par1, par2)

- Exemplo: x->x/2

## quociente

- Nome: quociente

- Descrição: Quociente

- Parâmetros: quociente(par1, par2)

- Exemplo: x->quociente(x, 2)

## potência

- Nome: potência

- Descrição: Potência

- Parâmetros: potência(par1, par2)

- Exemplo: x->x^2

## raiz

- Nome: raiz

- Descrição: Raiz

- Parâmetros: raiz(par1, par2)

- Exemplo: x->raiz(x, 2)

## factorial

- Nome: factorial

- Descrição: Factorial. factorial(n)=n!

- Parâmetros: factorial(par1)

- Exemplo: x->factorial(x)

## e

- Nome: e

- Descrição: 'E' booleano

- Parâmetros: e(... parâmetros, ...)

- Exemplo: x->piecewise { and(x>-2, x<2) ? 1, ? 0 }

## ou

- Nome: ou

- Descrição: 'ou' booleano

- Parâmetros: ou(... parâmetros, ...)

- Exemplo: x->piecewise { or(x>2, x>-2) ? 1, ? 0 }

## xor

- Nome: xor

- Descrição: 'ou exclusivo' booleano

- Parâmetros: xor(... parâmetros, ...)

- Exemplo: x->piecewise { xor(x>0, x<3) ? 1, ? 0 }

## nao

- Nome: nao

- Descrição: 'não' booleano

- Parâmetros: nao(par1)

- Exemplo: x->piecewise { not(x>0) ? 1, ? 0 }

## gcd

- Nome: gcd

- Descrição: Máximo divisor comum

- Parâmetros: gcd(... parâmetros, ...)

- Exemplo: x->gcd(x, 3)

## lcm

- Nome: lcm

- Descrição: Mínimo múltiplo comum

- Parâmetros: lcm(... parâmetros, ...)

- Exemplo: x->lcm(x, 4)

## rem

- Nome: rem

- Descrição: Resto

- Parâmetros: rem(par1, par2)

- Exemplo: x->rem(x, 5)

## factorof

- Nome: factorof

- Descrição: O factor de

- Parâmetros: factorof(par1, par2)

- Exemplo: x->factorof(x, 3)

## max

- Nome: max

- Descrição: Máximo

- Parâmetros: max(... parâmetros, ...)

- Exemplo: x->max(x, 4)

## min

- Nome: min

- Descrição: Mínimo

- Parâmetros: min(... parâmetros, ...)

- Exemplo: x->min(x, 4)

## lt

- Nome: lt

- Descrição: Menor que. lt(a,b)=a<b

- Parâmetros: lt(par1, par2)

- Exemplo: x->piecewise { x<4 ? 1, ? 0 }

## gt

- Nome: gt

- Descrição: Maior que. gt(a,b)=a>b

- Parâmetros: gt(par1, par2)

- Exemplo: x->piecewise { x>4 ? 1, ? 0 }

## eq

- Nome: eq

- Descrição: Igual. eq(a,b) = a=b

- Parâmetros: eq(par1, par2)

- Exemplo: x->piecewise { x=4 ? 1, ? 0 }

## neq

- Nome: neq

- Descrição: Diferente. neq(a,b)=a≠b

- Parâmetros: neq(par1, par2)

- Exemplo: x->piecewise { x!=4 ? 1, ? 0 }

## leq

- Nome: leq

- Descrição: Menor ou igual. leq(a,b)=a≤b

- Parâmetros: leq(par1, par2)

- Exemplo: x->piecewise { x<=4 ? 1, ? 0 }

## geq

- Nome: geq

- Descrição: Maior ou igual. geq(a,b)=a≥b

- Parâmetros: geq(par1, par2)

- Exemplo: x->piecewise { x>=4 ? 1, ? 0 }

## implica

- Nome: implica

- Descrição: Implicação booleana

- Parâmetros: implica(par1, par2)

- Exemplo: x->piecewise { implies(x<0, x<3) ? 1, ? 0 }

## aprox

- Nome: aprox

- Descrição: Aproximação approx(a)=a±n

- Parâmetros: aprox(par1, par2)

- Exemplo: x->piecewise { approx(x, 4) ? 1, ? 0 }

## abs

- Nome: abs

- Descrição: Valor absoluto. abs(n)=|n|

- Parâmetros: abs(par1)

- Exemplo: x->abs(x)

## floor

- Nome: floor

- Descrição: Valor por defeito. floor(n)=⌊n⌋

- Parâmetros: floor(par1)

- Exemplo: x->floor(x)

## ceiling

- Nome: ceiling

- Descrição: Valor por excesso. ceil(n)=⌈n⌉

- Parâmetros: ceiling(par1)

- Exemplo: x->ceiling(x)

## sin

- Nome: sin

- Descrição: Função para calcular o seno de um determinado ângulo

- Parâmetros: sin(par1)

- Exemplo: x->sin(x)

## cos

- Nome: cos

- Descrição: Função para calcular o coseno de um dado ângulo

- Parâmetros: cos(par1)

- Exemplo: x->cos(x)

## tan

- Nome: tan

- Descrição: Função para calcular a tangente de um dado ângulo

- Parâmetros: tan(par1)

- Exemplo: x->tan(x)

## sec

- Nome: sec

- Descrição: Secante

- Parâmetros: sec(par1)

- Exemplo: x->sec(x)

## csc

- Nome: csc

- Descrição: Co-secante

- Parâmetros: csc(par1)

- Exemplo: x->csc(x)

## cot

- Nome: cot

- Descrição: Co-tangente

- Parâmetros: cot(par1)

- Exemplo: x->cot(x)

## sinh

- Nome: sinh

- Descrição: Seno hiperbólico

- Parâmetros: sinh(par1)

- Exemplo: x->sinh(x)

## cosh

- Nome: cosh

- Descrição: Coseno hiperbólico

- Parâmetros: cosh(par1)

- Exemplo: x->cosh(x)

## tanh

- Nome: tanh

- Descrição: Tangente hiperbólica

- Parâmetros: tanh(par1)

- Exemplo: x->tanh(x)

## sech

- Nome: sech

- Descrição: Secante hiperbólica

- Parâmetros: sech(par1)

- Exemplo: x->sech(x)

## csch

- Nome: csch

- Descrição: Co-secante hiperbólica

- Parâmetros: csch(par1)

- Exemplo: x->csch(x)

## coth

- Nome: coth

- Descrição: Cotangente hiperbólica

- Parâmetros: coth(par1)

- Exemplo: x->coth(x)

## arcsin

- Nome: arcsin

- Descrição: Arco-seno

- Parâmetros: arcsin(par1)

- Exemplo: x->arcsin(x)

## arccos

- Nome: arccos

- Descrição: Arco-coseno

- Parâmetros: arccos(par1)

- Exemplo: x->arccos(x)

## arctan

- Nome: arctan

- Descrição: Arco-tangente

- Parâmetros: arctan(par1)

- Exemplo: x->arctan(x)

## arccot

- Nome: arccot

- Descrição: Arco-cotangente

- Parâmetros: arccot(par1)

- Exemplo: x->arccot(x)

## arccosh

- Nome: arccosh

- Descrição: Arco-coseno hiperbólico

- Parâmetros: arccosh(par1)

- Exemplo: x->arccosh(x)

## arccsc

- Nome: arccsc

- Descrição: Arco-cosecante

- Parâmetros: arccsc(par1)

- Exemplo: x->arccsc(x)

## arccsch

- Nome: arccsch

- Descrição: Arco-cosecante hiperbólica

- Parâmetros: arccsch(par1)

- Exemplo: x->arccsch(x)

## arcsec

- Nome: arcsec

- Descrição: Arco-secante

- Parâmetros: arcsec(par1)

- Exemplo: x->arcsec(x)

## arcsech

- Nome: arcsech

- Descrição: Arco-secante hiperbólica

- Parâmetros: arcsech(par1)

- Exemplo: x->arcsech(x)

## arcsinh

- Nome: arcsinh

- Descrição: Arco-seno hiperbólico

- Parâmetros: arcsinh(par1)

- Exemplo: x->arcsinh(x)

## arctanh

- Nome: arctanh

- Descrição: Arco-tangente hiperbólica

- Parâmetros: arctanh(par1)

- Exemplo: x->arctanh(x)

## exp

- Nome: exp

- Descrição: Expoente (e^x)

- Parâmetros: exp(par1)

- Exemplo: x->exp(x)

## ln

- Nome: ln

- Descrição: Logaritmo de base-e

- Parâmetros: ln(par1)

- Exemplo: x->ln(x)

## log

- Nome: log

- Descrição: Logaritmo de base-10

- Parâmetros: log(par1)

- Exemplo: x->log(x)

## sum

- Nome: sum

- Descrição: Somatório

- Parâmetros: sum(par1 : var=de..até)

- Exemplo: x->x*sum(t*t:t=0..3)

## product

- Nome: product

- Descrição: Produtório

- Parâmetros: product(par1 : var=de..até)

- Exemplo: x->product(t+t:t=1..3)

## diff

- Nome: diff

- Descrição: Derivada

- Parameters: diff(par1 : variável)

- Exemplo: x->(diff(x^2:x))(x)

## card

- Nome: card

- Descrição: Cardinalidade

- Parâmetros: card(par1)

- Exemplo: x->card(vector { x, 1, 2 })

## scalarproduct

- Nome: scalarproduct

- Descrição: Produto escalar

- Parâmetros: scalarproduct(... parâmetros, ...)

- Exemplo: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1]

## selector

- Nome: selector

- Descrição: Selecciona o par1-ésimo elemento da lista ou vector 'par2'

- Parâmetros: selector(par1, par2)

- Exemplo: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1]

## union

- Nome: union

- Descrição: Junta vários itens do mesmo tipo

- Parâmetros: union(... parâmetros, ...)

- Exemplo: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3]

## forall

- Nome: forall

- Descrição: Para todos

- Parâmetros: forall(par1 : variável)

- Exemplo: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 }

## exists

- Nome: exists

- Descrição: Existe

- Parâmetros: exists(par1 : variável)

- Exemplo: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 }

## map

- Nome: map

- Descrição: Aplica uma dada função a todos os elementos de uma lista

- Parâmetros: map(par1, par2)

- Exemplo: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3]

## filtro

- Nome: filter

- Descrição: Remove todos os elementos que não correspondam a uma dada condição

- Parâmetros: filter(par1, par2)

- Exemplo: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3]