Articulo de referencia

Módulo

En informática y matemáticas , la operación módulo devuelve el resto o el resto con signo de una división , después de dividir un número entre otro; este último se denomina módu...

En informática y matemáticas , la operación módulo devuelve el resto o el resto con signo de una división , después de dividir un número entre otro; este último se denomina módulo de la operación.

Dados dos números positivos a y n , a módulo n (a menudo abreviado como a mod n ) es el resto de la división euclidiana de a entre n , donde a es el dividendo y n es el divisor . [ 1 ]

Por ejemplo, la expresión "5 mod 2" da como resultado 1, porque 5 dividido entre 2 tiene un cociente de 2 y un resto de 1, mientras que "9 mod 3" daría como resultado 0, porque 9 dividido entre 3 tiene un cociente de 3 y un resto de 0.

Aunque normalmente se realiza con a y n como números enteros , muchos sistemas informáticos ahora permiten otros tipos de operandos numéricos. El rango de valores para una operación de módulo entero de n es de 0 a n − 1. a mod 1 siempre es 0, suponiendo que a es un número entero.

Cuando exactamente uno de a o n es negativo, la definición básica se rompe y los lenguajes de programación difieren en la forma en que se definen estos valores.

Variantes de la definición

En matemáticas , el resultado de la operación módulo es una clase de equivalencia , y cualquier miembro de la clase puede ser elegido como representante ; sin embargo, el representante habitual es el residuo positivo más pequeño , el entero no negativo más pequeño que pertenece a esa clase (es decir, el resto de la división euclidiana ). [ 2 ] No obstante, son posibles otras convenciones. Las computadoras y calculadoras tienen diversas formas de almacenar y representar números; por lo tanto, su definición de la operación módulo depende del lenguaje de programación o del hardware subyacente .

En casi todos los sistemas informáticos, el cociente q y el resto r de a dividido pornorte0{\displaystyle n\neq 0}cumplir las siguientes condiciones:

Esto aún deja una ambigüedad de signo si el resto no es cero: se presentan dos posibles opciones para el resto, una negativa y otra positiva; esa elección determina cuál de los dos cocientes consecutivos debe usarse para satisfacer la ecuación (1). En teoría de números , siempre se elige el resto positivo, pero en computación, los lenguajes de programación eligen dependiendo del lenguaje y los signos de a o n . [ a ] ​​Standard Pascal y ALGOL 68 , por ejemplo, dan un resto positivo (o 0) incluso para divisores negativos, y algunos lenguajes de programación, como C90, lo dejan a la implementación cuando n o a son negativos (ver la tabla en §  En lenguajes de programación para más detalles). Algunos sistemas dejan a módulo 0 sin definir, aunque otros lo definen como a .

  •  Cociente ( q ) y resto ( r ) en función del dividendo ( a ), utilizando la división truncada. 

    Muchas implementaciones utilizan la división truncada , para la cual el cociente se define por q=truncamiento(anorte){\displaystyle q=\operatorname {trunc} \left({\frac {a}{n}}\right)} dóndetruncamiento{\displaystyle \operatorname {trunc} }es la función de parte integral ( redondeo hacia cero ), es decir, la truncación a cero dígitos significativos. Por lo tanto, según la ecuación ( 1 ), el resto tiene el mismo signo que el dividendo a, por lo que puede tomar 2| n | − 1 valores: r=anortetruncamiento(anorte){\displaystyle r=an\operatorname {trunc} \left({\frac {a}{n}}\right)}

  • Cociente y resto mediante división redondeada hacia abajo

    Donald Knuth [ 3 ] promueve la división por pisos , para la cual el cociente se define por q=anorte{\displaystyle q=\left\lfloor {\frac {a}{n}}\right\rfloor } dónde{\displaystyle \lfloor \,\rfloor }es la función piso ( redondeo hacia abajo ). Por lo tanto, según la ecuación ( 1 ), el resto tiene el mismo signo que el divisor n : r=anorteanorte{\displaystyle r=an\left\lfloor {\frac {a}{n}}\right\rfloor }

  • Cociente y resto mediante división euclidiana

    Raymond T. Boute [ 4 ] promueve la división euclidiana , para la cual el resto no negativor{0,1,2...}{\displaystyle r\in \{0,1,2...\}}se define por r:=anorteq sdoh that 0r<|norte|.{\displaystyle r:=a-nq\ \mathrm {tal\ que} \ {\color {red}{0\leq r}}<|n|.}(Énfasis añadido.) Bajo esta definición, podemos decir lo siguiente acerca del cocienteq{\displaystyle q}: q=arnorteZ=sgn(norte)ar|norte|=sgn(norte)(a|norte|r|norte|)=sgn(norte)a|norte|{\displaystyle {\begin{aligned}q&={\frac {ar}{n}}\in \mathbb {Z} \\&={\text{sgn}}(n)\cdot {\frac {ar}{|n|}}\\&={\text{sgn}}(n)\cdot \left({\frac {a}{|n|}}-{\frac {r}{|n|}}\right)\\&={\text{sgn}}(n)\cdot \left\lfloor {\frac {a}{\left|n\right|}}\right\rfloor \end{aligned}}} donde sgn es la función signo ,{\displaystyle \lfloor \,\rfloor }es la función piso ( redondeo hacia abajo ), ya|norte|Q{\displaystyle {\frac {a}{|n|}}\in \mathbb {Q} },r|norte|Q{\displaystyle {\frac {r}{|n|}}\in \mathbb {Q} }son números racionales .

    De forma equivalente, se puede definir el cocienteqZ{\displaystyle q\in \mathbb {Z} }como sigue: q:=sgn(norte)a|norte|={anortesi norte>0anortesi norte<0{\displaystyle q:=\operatorname {sgn}(n)\left\lfloor {\frac {a}{\left|n\right|}}\right\rfloor ={\begin{cases}\left\lfloor {\frac {a}{n}}\right\rfloor &{\text{si }}n>0\\\left\lceil {\frac {a}{n}}\right\rceil &{\text{si }}n<0\\\end{cases}}} dónde{\displaystyle \lceil \,\rceil }es la función techo ( redondeo hacia arriba ). Por lo tanto, según la ecuación ( 1 ), el restor{\displaystyle r}es no negativo : r=anorteq=a|norte|a|norte|{\displaystyle r=a-nq=a-|n|\left\lfloor {\frac {a}{\left|n\right|}}\right\rfloor }

  • Cociente y resto mediante división redondeada

    Common Lisp e IEEE 754 utilizan la división redondeada , para la cual el cociente se define por q=redondo(anorte){\displaystyle q=\operatorname {round} \left({\frac {a}{n}}\right)} donde round es la función round ( redondeo de la mitad al número par más cercano ). Por lo tanto, según la ecuación ( 1 ), el resto cae entrenorte2{\displaystyle -{\frac {n}{2}}}ynorte2{\displaystyle {\frac {n}{2}}}y su signo depende de qué lado del cero caiga para estar dentro de estos límites: r=anorteredondo(anorte){\displaystyle r=an\operatorname {round} \left({\frac {a}{n}}\right)}

  • Cociente y resto mediante división del techo

    Common Lisp también utiliza la división de techo , para la cual el cociente se define por q=anorte{\displaystyle q=\left\lceil {\frac {a}{n}}\right\rceil } donde ⌈⌉ es la función techo ( redondeo hacia arriba ). Por lo tanto, según la ecuación ( 1 ), el resto tiene el signo opuesto al del divisor : r=anorteanorte{\displaystyle r=an\left\lceil {\frac {a}{n}}\right\rceil }

Si tanto el dividendo como el divisor son positivos, coinciden las definiciones truncada, redondeada y euclidiana. Si el dividendo es positivo y el divisor negativo, coinciden las definiciones truncada y euclidiana. Si el dividendo es negativo y el divisor positivo, coinciden las definiciones redondeada y euclidiana. Si tanto el dividendo como el divisor son negativos, coinciden las definiciones truncada y redondeada.

Sin embargo, la división truncada satisface la identidad.(a)/b=(a/b)=a/(b){\displaystyle ({-a})/b={-(a/b)}=a/({-b})}. [ 5 ] [ 6 ]

Notación

Algunas calculadoras tienen un botón de función mod() , y muchos lenguajes de programación tienen una función similar, expresada como mod( a , n ) , por ejemplo. Algunos también admiten expresiones que usan "%", "mod" o "Mod" como operador de módulo o resto , como o .a % na mod n

Para entornos que carecen de una función similar, se puede utilizar cualquiera de las tres definiciones anteriores.

errores comunes

Cuando el resultado de una operación de módulo tiene el signo del dividendo (definición truncada), puede dar lugar a errores sorprendentes.

Por ejemplo, para comprobar si un número entero es impar , uno podría inclinarse a comprobar si el resto de la división de 2 es igual a 1:

bool is_odd ( int n ) { return n % 2 == 1 ; }

Pero en un lenguaje donde el módulo tiene el signo del dividendo, eso es incorrecto, porque cuando n (el dividendo) es negativo e impar, n mod 2 devuelve −1, y la función devuelve falso.

Una alternativa correcta es comprobar que el resto no sea 0 (porque el resto 0 es el mismo independientemente de los signos):

bool is_odd ( int n ) { return n % 2 != 0 ; }

O con la aritmética binaria:

bool is_odd ( int n ) { return n & 1 ; }

Problemas de rendimiento

Las operaciones de módulo pueden implementarse de forma que se calcule una división con resto en cada caso. Para casos especiales, en algunos sistemas, existen alternativas más rápidas. Por ejemplo, el módulo de potencias de 2 puede expresarse alternativamente como una operación AND bit a bit (suponiendo que x es un entero positivo o utilizando una definición sin truncamiento):

x % 2n == x & (2n - 1)

Ejemplos:

x % 2 == x & 1
x % 4 == x & 3
x % 8 == x & 7

En dispositivos y software que implementan operaciones bit a bit de manera más eficiente que el módulo, estas formas alternativas pueden resultar en cálculos más rápidos. [ 7 ]

Las optimizaciones del compilador pueden reconocer expresiones de la forma donde es una potencia de dos e implementarlas automáticamente como , lo que permite al programador escribir código más claro sin comprometer el rendimiento. Esta sencilla optimización no es posible para lenguajes en los que el resultado de la operación módulo tiene el signo del dividendo (incluido C ), a menos que el dividendo sea de tipo entero sin signo . Esto se debe a que, si el dividendo es negativo, el módulo será negativo, mientras que siempre será positivo. Para estos lenguajes, se debe usar la equivalencia , expresada mediante operaciones OR, NOT y AND a nivel de bits.expression % constantconstantexpression & (constant-1)expression & (constant-1)x % 2n == x < 0 ? x | ~(2n - 1) : x & (2n - 1)

También existen optimizaciones para operaciones generales de módulo constante calculando primero la división mediante la optimización del divisor constante .

Propiedades (identidades)

Algunas operaciones de módulo pueden factorizarse o expandirse de forma similar a otras operaciones matemáticas. Esto puede resultar útil en pruebas criptográficas , como el intercambio de claves Diffie-Hellman . Las propiedades que implican multiplicación, división y exponenciación generalmente requieren que a y n sean números enteros.

  • Identidad:
  • Inverso:
  • Distributivo:
    • ( a + b ) mod n = [( a mod n ) + ( b mod n )] mod n .
    • ab mod n = [( a mod n )( b mod n )] mod n .
  • División (definición): a / b mod n = [( a mod n )( b −1 mod n )] mod n , cuando el lado derecho está definido (es decir, cuando b y n son coprimos ) y no está definido en caso contrario.
  • Multiplicación inversa: [( ab mod n )( b −1 mod n )] mod n = a mod n .

En lenguajes de programación

Además, muchos sistemas informáticos ofrecen una divmodfuncionalidad que produce el cociente y el resto simultáneamente. Algunos ejemplos son las instrucciones de la arquitectura x86 , la función del lenguaje de programación C y la función de Python .DIVIDIVdiv()divmod()

Generalizaciones

Módulo con desplazamiento

A veces, es útil que el resultado de un módulo n no se encuentre entre 0 y n − 1 , sino entre algún número d y d + n − 1. En ese caso, d se denomina desplazamiento y d = 1 es particularmente común.

No parece haber una notación estándar para esta operación, así que usemos tentativamente a mod d n . Tenemos entonces la siguiente definición: [ 122 ] x = a mod d n solo en caso de que dxd + n − 1 y x mod n = a mod n . Claramente, la operación de módulo usual corresponde a un desplazamiento cero: a mod n = a mod 0 n .

La operación de módulo con desplazamiento está relacionada con la función piso de la siguiente manera: amoddnorte=anorteadnorte.{\displaystyle a\operatorname {mod} _{d}n=a-n\left\lfloor {\frac {a-d}{n}}\right\rfloor .}

Para ver esto, dejaincógnita=anorteadnorte{\textstyle x=a-n\left\lfloor {\frac {a-d}{n}}\right\rfloor }Primero demostramos que x mod n = a mod n . En general, es cierto que ( a + bn ) mod n = a mod n para todos los enteros b ; por lo tanto, esto también es cierto en el caso particular en queb=adnorte{\textstyle b=-\!\left\lfloor {\frac {a-d}{n}}\right\rfloor }; pero eso significa queincógnitamodnorte=(anorteadnorte)modnorte=amodnorte{\textstyle x{\bmod {n}}=\left(a-n\left\lfloor {\frac {a-d}{n}}\right\rfloor \right)\!{\bmod {n}}=a{\bmod {n}}}, que es lo que queríamos demostrar. Queda por demostrar que dxd + n − 1 . Sean k y r los enteros tales que ad = kn + r con 0 ≤ rn − 1 (véase la división euclidiana ). Entoncesadnorte=k{\textstyle \left\lfloor {\frac {a-d}{n}}\right\rfloor =k}, de este modoincógnita=anorteadnorte=anortek=d+r{\textstyle x=a-n\left\lfloor {\frac {a-d}{n}}\right\rfloor =a-nk=d+r}. Ahora toma 0 ≤ rn − 1 y suma d a ambos lados, obteniendo dd + rd + n − 1 . Pero hemos visto que x = d + r , así que hemos terminado.

El módulo con desplazamiento a mod d n se implementa en Mathematica como Mod[a, n, d]. [ 122 ]

Implementación de otras definiciones de módulo mediante truncamiento

A pesar de la elegancia matemática de la división redondeada de Knuth y la división euclidiana, en los lenguajes de programación es mucho más común encontrar un módulo basado en una división truncada. Leijen proporciona los siguientes algoritmos para calcular ambas divisiones a partir de una división entera truncada:

/* Modificador de div euclidiano y redondeado, al estilo de ldiv() de C */ typedef struct { /* Esta estructura forma parte de stdlib.h de C, pero se reproduce aquí para mayor claridad */ long int quot ; long int rem ; } ldiv_t ;/* División euclidiana */ inline ldiv_t ldivE ( long numer , long denom ) { /* Los lenguajes C99 y C++11 definen ambas como truncadoras. */ long q = numer / denom ; long r = numer % denom ; if ( r < 0 ) { if ( denom > 0 ) { q = q - 1 ; r = r + denom ; } else { q = q + 1 ; r = r - denom ; } } return ( ldiv_t ){. quot = q , . rem = r }; }/* División redondeada */ inline ldiv_t ldivF ( long numer , long denom ) { long q = numer / denom ; long r = numer % denom ; if (( r > 0 && denom < 0 ) || ( r < 0 && denom > 0 )) { q = q - 1 ; r = r + denom ; } return ( ldiv_t ){. quot = q , . rem = r }; }

En ambos casos, el resto se puede calcular independientemente del cociente, pero no al revés. Aquí se combinan las operaciones para ahorrar espacio en pantalla, ya que las ramas lógicas son las mismas.

Véase también

Notas

  1. Matemáticamente, estas dos opciones son solo dos del número infinito de opciones disponibles para la desigualdad que satisface un resto .
  2. El informe revisado utiliza negrita para distinguir entre palabras clave e identificadores, pero permite otros formatos, incluyendo mayúsculas (por ejemploMOD).
  3. 1 2 El orden de los argumentos se invierte, es decir,α|ωse calculaωmodα{\displaystyle \omega {\bmod {\alpha }}}, el resto al dividir ωpor α.
  4. C99 y C++11 definen el comportamiento de%ser truncado. [ 14 ] Los estándares anteriores dejan el comportamiento definido por la implementación. [ 15 ]
  5. El divisor debe ser positivo; de lo contrario, no está definido.
  6. Como lo discute Boute, las definiciones de ISO Pascal dedivymodno obedecen la identidad de división de D = d · ( D / d ) + D  % d , y por lo tanto están fundamentalmente rotas.
  7. Perl suele utilizar el operador módulo aritmético, que es independiente de la máquina. Para ejemplos y excepciones, consulte la documentación de Perl sobre operadores multiplicativos. [ 97 ]
  8. Elexprcomando se define independientemente de los comandos en el::tcl::mathopespacio de nombres. [ 116 ]
  9. Elexprcomando se define en términos de comandos en el::tcl::mathfuncespacio de nombres. [ 119 ]

Referencias

  1. Weisstein, Eric W. "Congruencia" . Wolfram MathWorld . Consultado el 27 de agosto de 2020 .
  2. Caldwell, Chris. "residuo" . Glosario Prime . Consultado el 27 de agosto de 2020 .
  3. Knuth, Donald. E. (1972). El arte de la programación informática . Addison-Wesley.
  4. Boute, Raymond T. (abril de 1992). "La definición euclidiana de las funciones div y mod" . ACM Transactions on Programming Languages ​​and Systems . 14 (2). ACM Press (Nueva York, NY, EE. UU.): 127–144 . doi : 10.1145/128861.128862 . hdl : 1854/LU-314490 . S2CID 8321674 . 
  5. Peterson, Doctor (5 de julio de 2001). "Función módulo y números negativos" . Foro de matemáticas - Pregúntale al Dr. Matemáticas . Archivado del original el 22 de octubre de 2019. Consultado el 22 de octubre de 2019 .
  6. "Ada 83 LRM, Sec 4.5: Operadores y evaluación de expresiones" . archive.adaic.com . Consultado el 3 de marzo de 2025 .
  7. Horvath, Adam (5 de julio de 2012). "División y operación de módulo más rápidas: la potencia de dos" .
  8. "Documentación de palabras clave ABAP" . help.sap.com . 2024. Consultado el 18 de enero de 2026 .
  9. "Operadores - Referencia de la API de Adobe ActionScript® 3 (AS3)" . help.adobe.com . Consultado el 19 de enero de 2026 .
  10. 1 2 ISO/IEC 8652:2012 - Tecnología de la información — Lenguajes de programación — Ada . ISO , IEC . 2012. sec. 4.5.5 Operadores de multiplicación.
  11. Informe revisado sobre el lenguaje algorítmico Algol 68. IFIP WG2.1 . 1973. sec. 10.2.3.3.n.
  12. "awk" . pubs.opengroup.org . Consultado el 19 de enero de 2026 .
  13. "bc" . pubs.opengroup.org . Consultado el 23 de mayo de 2026 .
  14. "Especificación C99 (ISO/IEC 9899:TC2)" (PDF) . 6 de mayo de 2005. Sección 6.5.5 Operadores multiplicativos . Consultado el 16 de agosto de 2018 .
  15. ISO/IEC 14882:2003: Lenguajes de programación – C++ . Organización Internacional de Normalización (ISO), Comisión Electrotécnica Internacional (IEC). 2003. sec. 5.6.4. El operador binario % produce el resto de la división de la primera expresión entre la segunda. ... Si ambos operandos son no negativos, el resto es no negativo; de lo contrario, el signo del resto depende de la implementación. 
  16. ISO/IEC 9899:1990: Lenguajes de programación – C . ISO , IEC . 1990. sec. 7.5.6.4. La función fmod devuelve el valor x - i * y , para algún entero i tal que, si y no es cero, el resultado tiene el mismo signo que x y una magnitud menor que la magnitud de y .
  17. ISO/IEC 9899:1999: Lenguajes de programación — C . ISO , IEC . 1999. sec. 7.12.10.2. Las funciones calculan el resto requerido por IEC 60559.remainderx REM y
  18. "Expresiones - Especificación del lenguaje C#" . learn.microsoft.com . Consultado el 19 de enero de 2026 .
  19. 1 2 dotnet-bot. "Math.IEEERemainder(Double, Double) Method (System)" . Microsoft Learn . Consultado el 4 de octubre de 2022 .
  20. "clojure.core - Documentación de la API de Clojure v1.10.3" . clojure.github.io . Consultado el 16 de marzo de 2022 .
  21. "clojure.core - Documentación de la API de Clojure v1.10.3" . clojure.github.io . Consultado el 16 de marzo de 2022 .
  22. 1 2 ISO/IEC JTC 1/SC 22/WG 4 (enero de 2023). ISO/IEC 1989:2023 – Lenguaje de programación COBOL . ISO .
  23. Operadores de CoffeeScript
  24. ISO/IEC JTC 1/SC 22 (febrero de 2012). ISO/IEC 23271:2012 — Tecnología de la información — Infraestructura de lenguaje común (CLI) . ISO . §§ III.3.55–56.
  25. 1 2 "CLHS: Función MOD, REM" . www.lispworks.com . Consultado el 20 de enero de 2026 .
  26. "mod() - CSS: Hojas de estilo en cascada | MDN" . developer.mozilla.org . 22-06-2024 . Consultado el 23-10-2024 .
  27. "rem() - CSS: Hojas de estilo en cascada | MDN" . developer.mozilla.org . 15-10-2024 . Consultado el 23-10-2024 .
  28. "Expresiones - Lenguaje de programación D" . dlang.org . Consultado el 1 de junio de 2021 .
  29. "operator % method - num class - dart:core library - Dart API" . api.dart.dev . Consultado el 1 de junio de 2021 . 
  30. "método de resto - clase num - biblioteca dart:core - API de Dart" . api.dart.dev . Consultado el 1 de junio de 2021 .
  31. "dc, una calculadora de precisión arbitraria" . www.gnu.org . Archivado del original el 10 de diciembre de 2025. Consultado el 23 de mayo de 2026 .
  32. "Núcleo — Elixir v1.11.3" . hexdocs.pm . Consultado el 28-01-2021 .
  33. "Integer — Elixir v1.11.3" . hexdocs.pm . Consultado el 28-01-2021 .
  34. "Conceptos básicos - núcleo 1.0.5" . package.elm-lang.org . Consultado el 16 de marzo de 2022 .
  35. "Conceptos básicos - núcleo 1.0.5" . package.elm-lang.org . Consultado el 16 de marzo de 2022 .
  36. "Erlang -- matemáticas" . erlang.org . Consultado el 1 de junio de 2021 .
  37. "OpenEuphoria: Euphoria v4.0" . openeuphoria.org . Consultado el 20 de enero de 2026 .
  38. "OpenEuphoria: Euphoria v4.0" . openeuphoria.org . Consultado el 20 de enero de 2026 .
  39. "18. La biblioteca F# FSharp.Core.dll - Especificación del lenguaje F#" . fsharp.github.io . Consultado el 19 de enero de 2026 .
  40. "mod ( xy -- z ) - Documentación del factor" . docs.factorcode.org . Consultado el 21/01/2026 .
  41. "rem ( xy -- z ) - Documentación del factor" . docs.factorcode.org . Consultado el 21/01/2026 .
  42. "Manipulación y propiedades de valores numéricos — Lenguaje de programación Fortran" . fortran-lang.org . Consultado el 22 de mayo de 2026 .
  43. "Manipulación y propiedades de valores numéricos — Lenguaje de programación Fortran" . fortran-lang.org . Consultado el 22 de mayo de 2026 .
  44. ANSI (28 de enero de 1987). Lenguajes de programación — BASIC completo . Nueva York: Instituto Nacional Estadounidense de Estándares. § 5.4.4. X módulo Y, es decir, XY*INT(X/Y).
  45. ANSI (28 de enero de 1987). Lenguajes de programación — BASIC completo . Nueva York: Instituto Nacional Estadounidense de Estándares. § 5.4.4. La función de resto, es decir, XY*IP(X/Y).
  46. "Especificación del lenguaje GLSL, versión 4.50.7" (PDF) . Sección 5.9 Expresiones. Si ambos operandos son no negativos, el resto también lo es. Los resultados son indefinidos si uno o ambos operandos son negativos.
  47. "Especificación del lenguaje GLSL, versión 4.50.7" (PDF) . Sección 8.3 Funciones comunes.
  48. "int" . Documentación de Godot Engine . Consultado el 19 de enero de 2026 .
  49. "@GlobalScope" . Documentación de Godot Engine . Consultado el 19 de enero de 2026 .
  50. "@GlobalScope" . Documentación de Godot Engine . Consultado el 19 de enero de 2026 .
  51. "@GlobalScope" . Documentación de Godot Engine . Consultado el 19 de enero de 2026 .
  52. "Especificación del lenguaje de programación Go - El lenguaje de programación Go" . go.dev . Consultado el 28 de febrero de 2022 .
  53. "paquete matemático - matemáticas - pkg.go.dev" . pkg.go.dev . Consultado el 28-02-2022 .
  54. "paquete grande - matemáticas/grande - pkg.go.dev" . pkg.go.dev . Recuperado el 28-02-2022 .
  55. "paquete grande - matemáticas/grande - pkg.go.dev" . pkg.go.dev . Recuperado el 12-04-2024 .
  56. 1 2 "6 Tipos y Clases Predefinidas" . www.haskell.org . Consultado el 22 de mayo de 2022 .
  57. "Operadores binarios" . Haxe - El kit de herramientas multiplataforma . Consultado el 20 de enero de 2026 .
  58. " Operadores" . Microsoft . 30 de junio de 2021. Consultado el 19 de julio de 2021. El operador % se define únicamente en los casos en que ambos lados son positivos o ambos lados son negativos. A diferencia de C, también opera con tipos de datos de punto flotante, así como con enteros. 
  59. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 24 de mayo de 2026 .
  60. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  61. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  62. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  63. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  64. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  65. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  66. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  67. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  68. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  69. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  70. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  71. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  72. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  73. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  74. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  75. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  76. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  77. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  78. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  79. "Java Platform, Standard Edition Java API Reference" . docs.oracle.com . Consultado el 25 de mayo de 2026 .
  80. "Matemáticas · El lenguaje Julia" . docs.julialang.org . Consultado el 20 de noviembre de 2021 .
  81. "Matemáticas · El lenguaje Julia" . docs.julialang.org . Consultado el 20 de noviembre de 2021 .
  82. "rem - Lenguaje de programación Kotlin" . Kotlin . Consultado el 5 de mayo de 2021 .
  83. "mod - Lenguaje de programación Kotlin" . Kotlin . Consultado el 5 de mayo de 2021 .
  84. "Funciones matemáticas" . help.libreoffice.org . Consultado el 21/01/2026 .
  85. "Mod: Obtener el resto en la división—Documentación de Wolfram" . reference.wolfram.com . Consultado el 25 de mayo de 2026 .
  86. "mod - Resto de la división (operación módulo) - MATLAB" . www.mathworks.com . Archivado del original el 15/01/2026 . Consultado el 21/01/2026 .
  87. "rem - Resto de la división - MATLAB" . www.mathworks.com . Archivado del original el 1 de enero de 2026. Consultado el 21 de enero de 2026 .
  88. "comando fmod" . help.autodesk.com . Consultado el 14 de junio de 2026 .
  89. "Función MOD - Soporte de Microsoft" . support.microsoft.com . Consultado el 21/01/2026 .
  90. O'Neill, Joseph T. ; et al. (1976). Estándar del lenguaje MUMPS . Gaithersburg, MD: Departamento de Comercio de EE. UU., Instituto Nacional de Estándares y Tecnología. sec. 3.3.1 Operadores binarios aritméticos. doi : 10.6028/NBS.HB.118 . 
  91. "Capítulo 3: El lenguaje NASM" . NASM - El ensamblador de red versión 2.15.05 .
  92. "sistema" . nim-lang.org . Consultado el 15 de junio de 2026 .
  93. "std/math" . nim-lang.org . Consultado el 15 de junio de 2026 .
  94. "std/math" . nim-lang.org . Consultado el 15 de junio de 2026 .
  95. "Biblioteca OCaml : Stdlib" . ocaml.org . Consultado el 19 de febrero de 2022 . 
  96. "Biblioteca OCaml : Stdlib" . ocaml.org . Consultado el 19 de febrero de 2022 . 
  97. Documentación de Perl
  98. "POSIX - Interfaz Perl para IEEE Std 1003.1 - Perldoc Browser" . perldoc.perl.org . Consultado el 22 de mayo de 2026 .
  99. "PHP: Operadores aritméticos - Manual" . www.php.net . Consultado el 20 de noviembre de 2021 .
  100. "PHP: fmod - Manual" . www.php.net . Consultado el 20 de noviembre de 2021 .
  101. "Anillo euclidiano" .
  102. "6. Expresiones" . Documentación de Python . Consultado el 21/01/2026 .
  103. "math — Funciones matemáticas" . Documentación de Python . Consultado el 21/01/2026 .
  104. "math — Funciones matemáticas" . Documentación de Python . Consultado el 21/01/2026 .
  105. QuantumWriter. "Expresiones" . docs.microsoft.com . Consultado el 11 de julio de 2018 .
  106. "R: Operadores aritméticos" . search.r-project.org . Consultado el 24 de diciembre de 2022 .
  107. "Expresiones de operadores - La referencia de Rust" . doc.rust-lang.org . Consultado el 21/01/2026 .
  108. "F32 - Óxido" .
  109. 1 2 r6rs.org
  110. "Lenguaje de comandos de shell" . pubs.opengroup.org . Consultado el 5 de febrero de 2021 .
  111. 1 2 ANSI INCITS 319-1998 (R2002): Tecnología de la información - Lenguajes de programación - Smalltalk . Instituto Nacional Estadounidense de Estándares (ANSI). 1998.
  112. "Documentación de Solidity" . docs.soliditylang.org . Consultado el 17 de octubre de 2024 .
  113. "Documentación para desarrolladores de Apple" . developer.apple.com . Consultado el 20 de noviembre de 2021 .
  114. "Documentación para desarrolladores de Apple" . developer.apple.com . Consultado el 20 de noviembre de 2021 .
  115. "Documentación para desarrolladores de Apple" . developer.apple.com . Consultado el 20 de noviembre de 2021 .
  116. "Página del manual de mathop - Comandos de operadores matemáticos de Tcl" . www.tcl-lang.org . Consultado el 22 de mayo de 2026 .
  117. "Página del manual de expr - Comandos integrados de Tcl" . www.tcl-lang.org . Consultado el 22 de mayo de 2026 .
  118. "Página del manual de mathop - Comandos de operadores matemáticos de Tcl" . www.tcl-lang.org . Consultado el 22 de mayo de 2026 .
  119. "Página del manual de mathfunc - Funciones matemáticas de Tcl" . www.tcl-lang.org . Consultado el 22 de mayo de 2026 .
  120. 1 2 Rossberg, Andreas, ed. (19 de abril de 2022). "Especificación principal de WebAssembly: versión 2.0" . Consorcio World Wide Web . § 4.3.2 Operaciones con enteros.
  121. "Documentación de Zig" . Lenguaje de programación Zig . Consultado el 18 de diciembre de 2022 .
  122. 1 2 "Mod" . Centro de documentación de lenguajes y sistemas de Wolfram . Investigación de Wolfram . 2020. Recuperado el 8 de abril de 2020 .
  • Modulorama , animación de una representación cíclica de las tablas de multiplicar (explicación en francés)