DEV Community

Patrícia Villela for Feministech

Posted on

2 1

Símbolos de APL: "Vezes" e "Divisão"

AVISO! Essa série de artigos usará exemplos rodados em Dyalog APL, a implementação da Dyalog.

AVISO 2! Esse artigo contém exemplos de código. Se você quiser rodá-los, copie e cole as linhas identadas à direita (as linhas identadas à esquerda são os resultados) nesse site: https://tryapl.org

Nesse artigo vem mais 2 símbolos!

Vezes (×)

A função monádica do × é "direção" ("Signum" na documentação).
A função "direção" retorna o sinal do argumento

      ×3 ¯10 0
1 ¯1 0
      ×3J4
0.6J0.8
Enter fullscreen mode Exit fullscreen mode

3 é positivo, -10 é negativo e 0 é zero. Esse passo é o comum.

      ×3J4
0.6J0.8
      3J4÷|3J4
0.6J0.8
Enter fullscreen mode Exit fullscreen mode

No caso do número complexo a função é um pouco mais complexa. Ela é a divisão do número pela sua magnitude.

      2×3
6
Enter fullscreen mode Exit fullscreen mode

No entanto há uma diferença de com fazemos multiplicação de matrizes. Quando multiplicamos matrizes, além de a restrição ser apenas que o número de colunas de uma deve ser igual ao número de linhas da outra, cada elemento da matriz resultante é a soma dos produtos dos elementos de cada coluna de uma matriz por cada linha da outra matriz.

A matriz

1   2   3
4   5   6
7   8   9
Enter fullscreen mode Exit fullscreen mode

multiplicada pela matriz

1   2   3
4   5   6
7   8   9
Enter fullscreen mode Exit fullscreen mode

resulta na matriz

30  36  42
66  81  96
102 126 150
Enter fullscreen mode Exit fullscreen mode

No entanto a razão de ser da APL foi uma necessidade de regularização da notação matemática. Por isso a multiplicação de matrizes funciona da mesma maneira que a adição, elemento a elemento.

      3 3⍴2
2 2 2
2 2 2
2 2 2
      (3 3⍴2)×3 3⍴2
4 4 4
4 4 4
4 4 4
Enter fullscreen mode Exit fullscreen mode

Divisão (÷)

A função monádica do ÷ é "recíproco" ("Reciprocal" na documentação).
O retorno dessa função é o inverso do agumento.

      ÷1 ¯2 1J2
1 ¯0.5 0.2J¯0.4
      ÷0
DOMAIN ERROR: Divide by zero
      ÷0
      ∧
Enter fullscreen mode Exit fullscreen mode

O recíproco de 0 claro que dá um erro de divisão por zero.

A função diática do ÷ é "dividir" ("Divide" na documentação). A divisão também funciona da maneira esperada.

      2 0 5÷4 0 2
0.5 1 2.5
Enter fullscreen mode Exit fullscreen mode

Notem que há mais uma incongruência com a matemática padrão. Em APL, 0÷0 é 1!

Conclusão

Esse artigo foi menor mas ainda assim cobrimos dois outros operadores aritméticos da APL.
Bom APL!

Até a próxima!

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay