Modular C
C◼F257◼Z—23: symbols inserted from C◼snippet◼modulo.
+ Collaboration diagram for C◼F257◼Z—23: symbols inserted from C◼snippet◼modulo.:
typedef _Intern◼_I584Rsma◼C◼F257◼Z—23◼type₀ C◼F257◼𝔽—23
 
C◼F257◼𝔽—23 C◼F257◼generator—23 = C◼snippet◼modulo◼generator_default
 A generator of the multiplicative group. More...
 
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—bnotbnot (C◼F257◼𝔽—23 a)
 Map a into ℤn. More...
 
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—add (C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
 Operation in the ring ℤn. More...
 
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—sub (C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
 Operation in the ring ℤn. More...
 
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—prod (C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
 Operation in the ring ℤn. More...
 
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—div (C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
 Operation in the ring ℤn. More...
 
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—mod (C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
 Operation in the ring ℤn. More...
 
_Bool C◼F257◼𝔽—23◼_Operator—eq (C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
 Equality in the ring ℤn. More...
 
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—notnot (C◼F257◼𝔽—23 a)
 Test if non-zero in ℤn. More...
 
C◼F257◼𝔽—23 C◼F257◼order—23 (C◼F257◼𝔽—23 x)
 Compute the order of element . More...
 

Detailed Description

See also
C◼snippet◼modulo snippet: identifiers inserted directly to an importer for details
This import uses the following slot(s)
slotreplacement
C◼snippet◼modulo◼modC◼F257◼MOD—23
C◼snippet◼modulo◼contextC◼F257◼𝔽—23
C◼snippet◼modulo◼typeC◼F257◼𝔽—23
C◼snippet◼modulo◼orderC◼F257◼order—23
C◼snippet◼modulo◼generatorC◼F257◼generator—23
C◼snippet◼modulo◼generator_defaultuses default

Typedef Documentation

§ C◼F257◼𝔽—23

typedef _Intern◼_I584Rsma◼C◼F257◼Z—23◼type₀ C◼F257◼𝔽—23

Definition at line 12444 of file C-F257.c.

Function Documentation

§ C◼F257◼order—23()

C◼F257◼𝔽—23 C◼F257◼order—23 ( C◼F257◼𝔽—23  x)

Compute the order of element .

The order is the smallest number r such that $x^{r} \mod n$.

Definition at line 12523 of file C-F257.c.

References C◼F257◼𝔽—23◼_Operator—add(), C◼F257◼𝔽—23◼_Operator—eq(), C◼F257◼𝔽—23◼_Operator—notnot(), and C◼F257◼𝔽—23◼_Operator—prod().

12523  {
12524 #line 147 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12525  if (¬(C◼F257◼𝔽—23◼_Operator—notnot(x ))) return 0;
12526  C◼F257◼𝔽—23 y = x;
12527  for (C◼F257◼𝔽—23 i = 1; i; ((i )=(C◼F257◼𝔽—23◼_Operator—add(i , 1)))) {
12528 #line 150 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12529  if (C◼F257◼𝔽—23◼_Operator—eq(y , 1 )) return i;
12530  ((y )=(C◼F257◼𝔽—23◼_Operator—prod(y , x )));
12531  }
12532  // should not be reached
12533  return 0;
12534 }
_Intern◼_I584Rsma◼C◼F257◼Z—23◼type₀ C◼F257◼𝔽—23
Definition: C-F257.c:12444
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—add(C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
Operation in the ring ℤn.
Definition: C-F257.c:12473
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—prod(C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
Operation in the ring ℤn.
Definition: C-F257.c:12485
_Bool C◼F257◼𝔽—23◼_Operator—eq(C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
Equality in the ring ℤn.
Definition: C-F257.c:12502
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—notnot(C◼F257◼𝔽—23 a)
Test if non-zero in ℤn.
Definition: C-F257.c:12507
+ Here is the call graph for this function:

§ C◼F257◼𝔽—23◼_Operator—add()

C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—add ( C◼F257◼𝔽—23  a,
C◼F257◼𝔽—23  b 
)
inline

Operation in the ring ℤn.

Definition at line 12473 of file C-F257.c.

References C◼F257◼𝔽—23◼_Operator—bnotbnot().

Referenced by C◼F257◼order—23().

12473  {
12474 #line 107 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12475  C◼F257◼𝔽—23 ret = a + b;
12477 }
_Intern◼_I584Rsma◼C◼F257◼Z—23◼type₀ C◼F257◼𝔽—23
Definition: C-F257.c:12444
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—bnotbnot(C◼F257◼𝔽—23 a)
Map a into ℤn.
Definition: C-F257.c:12468
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

§ C◼F257◼𝔽—23◼_Operator—bnotbnot()

C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—bnotbnot ( C◼F257◼𝔽—23  a)
inline

Map a into ℤn.

Definition at line 12468 of file C-F257.c.

Referenced by C◼F257◼𝔽—23◼_Operator—add(), C◼F257◼𝔽—23◼_Operator—eq(), and C◼F257◼𝔽—23◼_Operator—prod().

12468  {
12469 #line 103 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12470  return a % _Intern◼_I584Rsma◼C◼F257◼Z—23◼mod₀;
12471 }
+ Here is the caller graph for this function:

§ C◼F257◼𝔽—23◼_Operator—div()

C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—div ( C◼F257◼𝔽—23  a,
C◼F257◼𝔽—23  b 
)
inline

Operation in the ring ℤn.

Definition at line 12491 of file C-F257.c.

Referenced by C◼F257◼𝔽—23◼_Operator—mod().

12491  {
12492 #line 122 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12493  C◼F257◼𝔽—23 ret = a * _Intern◼_I584Rsma◼C◼F257◼Z—23◼inverse(b);
12495 }
_Intern◼_I584Rsma◼C◼F257◼Z—23◼type₀ C◼F257◼𝔽—23
Definition: C-F257.c:12444
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—bnotbnot(C◼F257◼𝔽—23 a)
Map a into ℤn.
Definition: C-F257.c:12468
+ Here is the caller graph for this function:

§ C◼F257◼𝔽—23◼_Operator—eq()

_Bool C◼F257◼𝔽—23◼_Operator—eq ( C◼F257◼𝔽—23  a,
C◼F257◼𝔽—23  b 
)
inline

Equality in the ring ℤn.

Definition at line 12502 of file C-F257.c.

References C◼F257◼𝔽—23◼_Operator—bnotbnot().

Referenced by C◼F257◼order—23().

12502  {
12503 #line 131 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12505 }
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—bnotbnot(C◼F257◼𝔽—23 a)
Map a into ℤn.
Definition: C-F257.c:12468
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

§ C◼F257◼𝔽—23◼_Operator—mod()

C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—mod ( C◼F257◼𝔽—23  a,
C◼F257◼𝔽—23  b 
)
inline

Operation in the ring ℤn.

Definition at line 12497 of file C-F257.c.

References C◼F257◼𝔽—23◼_Operator—div(), C◼F257◼𝔽—23◼_Operator—prod(), and C◼F257◼𝔽—23◼_Operator—sub().

12497  {
12498 #line 127 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12500 }
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—prod(C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
Operation in the ring ℤn.
Definition: C-F257.c:12485
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—sub(C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
Operation in the ring ℤn.
Definition: C-F257.c:12479
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—div(C◼F257◼𝔽—23 a, C◼F257◼𝔽—23 b)
Operation in the ring ℤn.
Definition: C-F257.c:12491
+ Here is the call graph for this function:

§ C◼F257◼𝔽—23◼_Operator—notnot()

C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—notnot ( C◼F257◼𝔽—23  a)
inline

Test if non-zero in ℤn.

Definition at line 12507 of file C-F257.c.

Referenced by C◼F257◼order—23().

12507  {
12508 #line 135 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12509  return ‼C◼F257◼𝔽—23◼_Operator—bnotbnot(a);
12510 }
+ Here is the caller graph for this function:

§ C◼F257◼𝔽—23◼_Operator—prod()

C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—prod ( C◼F257◼𝔽—23  a,
C◼F257◼𝔽—23  b 
)
inline

Operation in the ring ℤn.

Definition at line 12485 of file C-F257.c.

References C◼F257◼𝔽—23◼_Operator—bnotbnot().

Referenced by C◼F257◼order—23(), and C◼F257◼𝔽—23◼_Operator—mod().

12485  {
12486 #line 117 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12487  C◼F257◼𝔽—23 ret = a * b;
12489 }
_Intern◼_I584Rsma◼C◼F257◼Z—23◼type₀ C◼F257◼𝔽—23
Definition: C-F257.c:12444
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—bnotbnot(C◼F257◼𝔽—23 a)
Map a into ℤn.
Definition: C-F257.c:12468
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

§ C◼F257◼𝔽—23◼_Operator—sub()

C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—sub ( C◼F257◼𝔽—23  a,
C◼F257◼𝔽—23  b 
)
inline

Operation in the ring ℤn.

Definition at line 12479 of file C-F257.c.

Referenced by C◼F257◼𝔽—23◼_Operator—mod().

12479  {
12480 #line 112 "/home/gustedt/build/cmod/C/C-snippet-modulo.X"
12481  C◼F257◼𝔽—23 ret = a + (_Intern◼_I584Rsma◼C◼F257◼Z—23◼mod₀ - b);
12483 }
_Intern◼_I584Rsma◼C◼F257◼Z—23◼type₀ C◼F257◼𝔽—23
Definition: C-F257.c:12444
C◼F257◼𝔽—23 C◼F257◼𝔽—23◼_Operator—bnotbnot(C◼F257◼𝔽—23 a)
Map a into ℤn.
Definition: C-F257.c:12468
+ Here is the caller graph for this function:

Variable Documentation

§ C◼F257◼generator—23

A generator of the multiplicative group.

Remarks
This will only be computed automatically at program startup, if ◼C◼snippet◼modulo◼max_find is set to a high enough value.

Definition at line 12543 of file C-F257.c.