
Modulo da diferença
Módulos vs módulos
Desambiguação: C também tem uma função chamada dupla modf(valor duplo, duplo *iptr) semelhante, que quebra o valor do argumento em partes integrais e fracionárias, cada uma com o mesmo tipo e sinal que o argumento. Isto tem pouco a ver com a discussão “mod” aqui, exceto a similaridade de nomes.
Para aqueles que querem funcionalidade adequada em todos os casos, um modulo_Euclidean() melhorado que 1) detecta mod(x,0) e 2) um bom e nenhum resultado UB com modulo_Euclidean2(INT_MIN, -1). Inspirado por 4 implementações diferentes do modulo com comportamento totalmente definido.
1 Antes de C99, a definição de % de C ainda era o restante da divisão, mas então / permitiu que os quocientes negativos fossem arredondados para baixo em vez de “truncamento em direção a zero”. Veja Por que você obtém valores diferentes para divisão inteira em C89? Assim, com alguma compilação pré-C99, o código % pode agir exatamente como a divisão Euclidiana “mod”. O modulo_Euclidean() acima também funcionará com este remanescente alternativo da velha escola.
O resto é simplesmente a parte restante após a divisão aritmética entre dois números inteiros, enquanto o módulo é a soma do resto e do divisor quando são assinados de forma oposta e a parte restante após a divisão aritmética quando o resto e o divisor são ambos de mesmo signo.
Módulo versus valor absoluto
Isto me pegou desprevenido, já que eu pensava que algo tão básico como o módulo era interpretado universalmente da mesma forma. Sou um fã da interpretação de Python (que presumo ser emprestada de C), embora veja a lógica por trás da implementação de Java.
Eu prefiro a interpretação de C (também usada em Python), onde % é de fato um operador de módulo. Boa discussão na página wikipedia e os links dela (incluindo um pouco sobre por que tomar em vez disso o sinal do dividendo pode levar a um bug bobo, a menos que se tenha cuidado;-).
A razão da diferença é que os projetistas de linguagem não parecem poder decidir se o restante após a divisão deve ter o sinal do dividendo ou do divisor. Alguns idiomas nem sequer especificam um ou outro, portanto, cabe ao implementador.
Há uma lista de idiomas, o operador, e quais assinar para esperar na página da Wikipedia da operação Modulo. É um bom lugar para começar, mas normalmente eu só faço alguns testes simples para ter certeza de que sei exatamente como % vai se comportar antes de usá-lo em qualquer idioma no qual eu não o testei antes.
Operador do módulo
\Isso significa que cada número é equivalente a um desses números modulo $n$. Quando usamos este conjunto particular de representantes de classe, eles simplesmente coincidem com a noção usual de resto.
O módulo pode se referir a um par de coisas diferentes, dependendo do contexto. Há módulo no sentido da aritmética modular (o número base em consideração), há módulo de número complexo (pense em valor absoluto) e há uma noção de módulo na teoria algébrica dos números.
Fórmula de diferença absoluta
Quando me refiro ao valor absoluto eu disse Modulus. As pessoas então me corrigem e dizem que essa é a operação onde você encontra o restante. Então eu fico confuso porque já vi pessoas dizerem modulo para a operação restante. Também se minha primeira afirmação estiver correta, por que temos duas palavras para o valor absoluto?
É um fato lamentável que a terminologia matemática tenha se desenvolvido de forma aleatória, e muitas vezes a mesma palavra terá significados completamente diferentes em diferentes áreas da matemática (às vezes até na mesma área, o que é pior!). O exemplo mais extremo, penso eu, é “normal”.
Também achei o nome um pouco confuso, mas seu uso é suficientemente distinto para que não fiquem confusos. Na programação, é óbvio que você vai errar se usar o “mod” para mudar para um valor positivo, pois a função aceitaria dois argumentos.