Biblioteca do C±

Todas as funções embutidas da linguagem. “T” indica que a função aceita int ou float e devolve o mesmo tipo.

Entrada e saída

Função

Devolve

Faz

in(p)

int

lê a porta de entrada p

fin(p)

float

lê a porta p convertendo para float

out(p, e)

nada

escreve e na porta de saída p (float é convertido para int, com aviso)

fout(p, e)

nada

escreve mantendo o formato float

O número da porta é sempre um literal inteiro, validado contra #NUIOIN e #NUIOOU.

Funções baratas

Mapeiam em uma ou poucas instruções.

Função

Devolve

Faz

abs(x)

T (ou float para comp)

valor absoluto; para complexo, o módulo

pset(x)

T

x se positivo, senão 0

sign(x, y)

T

y com o sinal de x

norm(x)

int

divide pelo #NUGAIN sem instanciar divisor; só int

copy(x, id)

nada

copia x na variável id sem checagem de tipo

Funções matemáticas

Implementadas como rotinas anexadas ao programa quando usadas; cada uma aparece no relatório do TASM.

Função

Aceita comp?

sqrt(x)

sim

sin(x), cos(x), tan(x), atan(x)

sim

exp(x), log(x)

sim

pow(x, y)

não

sinh(x), cosh(x), tanh(x)

não

floor(x), ceil(x), round(x)

não

Todas devolvem float (ou comp nas versões complexas). O método por trás delas está publicado em Implementação de Funções Não-Lineares em Processador Soft-Core (ENMC, 2025).

Funções de números complexos

Função

Devolve

Faz

real(z)

float

parte real

imag(z)

float

parte imaginária

mod2(z)

float

módulo ao quadrado

fase(z)

float

fase em radianos, quatro quadrantes

complex(a, b)

comp

monta a + bi de dois floats

conj(z)

comp

conjugado; um real vira x + 0i

Operações vetoriais (notação de Dirac)

A tabela completa das formas ⟨a|b⟩, a # |M|b⟩ e demais está em Notação de Dirac: álgebra linear em hardware. Restrições gerais: dimensões constantes, tipos iguais dos dois lados, sem comp.