# Comandos suportados pelo KAlgebra

## plus

- Nome: plus

- Descrição: Adição

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

- Exemplo: x->x+2

## times

- Nome: times

- Descrição: Multiplicação

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

- Exemplo: x->x*2

## minus

- Nome: minus

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

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

- Exemplo: x->x-2

## divide

- Nome: divide

- Descrição: Divisão

- Parâmetros: divide(par1, par2)

- Exemplo: x->x/2

## quotient

- Nome: quotient

- Descrição: Quociente

- Parâmetros: quotient(par1, par2)

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

## power

- Nome: power

- Descrição: Potência

- Parâmetros: power(par1, par2)

- Exemplo: x->x^2

## root

- Nome: root

- Descrição: Raiz

- Parâmetros: root(par1, par2)

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

## factorial

- Nome: factorial

- Descrição: Fatorial. fatorial(n)=n!

- Parâmetros: factorial(par1)

- Exemplo: x->factorial(x)

## and

- Nome: and

- Descrição: 'E' booleano

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

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

## or

- Nome: or

- Descrição: 'ou' booleano

- Parâmetros: or(... 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 }

## not

- Nome: not

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

- Parâmetros: not(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 fator 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 }

## implies

- Nome: implies

- Descrição: Implicação booleana

- Parâmetros: implies(par1, par2)

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

## approx

- Nome: approx

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

- Parâmetros: approx(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 cosseno 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: Cosseno 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-cosseno

- 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-cosseno hiperbólico

- Parâmetros: arccosh(par1)

- Exemplo: x->arccosh(x)

## arccsc

- Nome: arccsc

- Descrição: Arco-cossecante

- Parâmetros: arccsc(par1)

- Exemplo: x->arccsc(x)

## arccsch

- Nome: arccsch

- Descrição: Arco-cossecante 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)

## conjugate

- Nome: conjugate

- Descrição: Conjugado

- Parâmetros: conjugate(par1)

- Exemplo: x->conjugate(x*i)

## arg

- Nome: arg

- Descrição: Argumento

- Parâmetros: arg(par1)

- Exemplo: x->arg(x*i)

## real

- Nome: Parte real

- Descrição: Real

- Parâmetros: real(par1)

- Exemplo: x->real(x*i)

## imaginary

- Nome: imaginary

- Descrição: Parte imaginária

- Parâmetros: imaginary(par1)

- Exemplo: x->imaginary(x*i)

## 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

- Parâmetros: diff(par1 : var)

- 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: Seleciona o par1-ésimo elemento da lista ou vetor '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 : var)

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

## exists

- Nome: exists

- Descrição: Existe

- Parâmetros: exists(par1 : var)

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

## map

- Nome: map

- Descrição: Aplica uma função para cada elemento em 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]

## filter

- Nome: filter

- Descrição: Remove todos os elementos que não corresponde a uma 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]

## transpose

- Nome: transpose

- Descrição: Transpose

- Parâmetros: transpose(par1)

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