 ## Smalltalk/X Webserver

#### Documentation of class 'Integer::ModuloNumber':

Documentation
www.exept.de
Everywhere
for: # Class: ModuloNumber (private in Integer

This class is only visible from within Integer.

## Inheritance:

```   Object
|
+--Integer::ModuloNumber
```

Package:
stx:libbasic
Category:
Magnitude-Numbers
Owner:
Integer
Author:
Stefan Vogel

## Description:

```This is a helper class to perform fast computation of the modulus.
(with big numbers, this does make a difference)

WARNING: this does only work with numbers which have no common
divisor (which is true for cryptographic applications).
So, use this only if you know what you are doing ...

[instance variables:]
modulus       the modulus
reciprocal    reciprocal of the modulus
shift         shift count to cut off some bits

```

## Related information:

```    Integer
SmallInteger
LargeInsteger
```

## Class protocol:

instance creation modulus: anInteger

## Instance protocol:

accessing modulus
return the modulus modulus: n
set the modulus

arithmetic modulusOf: dividend
compute the aNumber modulo myself.
The shortcut works only, if dividend is < modulo * modulo
(When doing arithmethic modulo something).
Otherwise do it the long way

usage example(s):

 ``````fast (using moduloNumber with almost same-sized dividend and divisor): |m| m := self new modulus:123456789901398721398721931729371293712943794254034548369328469438562948623498659238469234659823469823658423659823658. Time millisecondsToRun:[ 100000 timesRepeat:[ m modulusOf:874928459437598375937451931729371293712943794254034548369328469438562948623498659238469234659823469823658423659823658. ] ]. 10730930127807326146398409623772237722337234475792709784029183368622308259008044569184592041059181058049458041058052 ``````

converting asInteger
return the modulus asModuloNumber

## Examples:

 `````` 17 asModuloNumber modulusOf:38 ``````
 `````` 38 \\ 17 ``````

ST/X 7.2.0.0; WebServer 1.670 at bd0aa1f87cdd.unknown:8081; Wed, 10 Aug 2022 11:59:09 GMT