Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

generating powers of g, an irreducible polynomial in an extension feild

In an extension field, how do you to iteratively multiply an irreducible polynomial to obtain its powers, simplifying and printing the results in sagemath?

For example:

1) Within GF(59^2)['x'], the polynomial x^2 + 2x + 13 is irreducible.

2) Say we use the label 'g', we can use this irreducible polynomial to express g squared.

`g^2 = -2g - 13 
        = 57g + 46

3) Subsequent powers of g can be obtained by iteratively multiplying the previous expression by g.

for example:

 g^2 = 57g+46 
 g^3 = g(g^2) = g(57g+46) = 57g^2 + 46g = 57 (57g + 46) + 46g  (mod 59)
       = 50g + 26,

 g^4 = g(g^3) = g(50g + 26) = 50g^2 + 26g = 50(57g+46) + 26g = (50*57)g + (50 * 46) + 26 g (mod 59)
       = 44g + 58, 

 g^5 = g(g^4) = g(44g + 58) = 44g^2 + 58g = 44(57g+46) + 58g = (44*57)g + (44 * 46) + 58g = 30g + 18+ 58g
       =29g + 18 
 (...) 
 and so on, up to cycle, or g^59.

The question is:

What would the sagemath code look like to do the following a) initialize g squared, subsequently multiply by g, and simplify mod 59 to print the following output?

Sample output:

g^2 = 57*g + 46 
g^3 = 50*g + 26
g^4 = 46*g + 58
g^5 = 25*g + 51
(....)
g^59 = ....

Possible pseudocode:

#initialize the ring    
F = GF(59^2)['x']
#initialize the starting point to our g^2                            
g_current = F('57g + 46')
#loop over an appropriate range                                      
    for i in range (1,59):                                            
      #accumulate the current power, multiplying the previous by g, and then simplifying
       g_current = F.simplify(g * g_current)                 
      #print an appropriate line  summary
      print("g^" + str(i+2) + "=" + str(g_current))

Your help is appreciated.

generating powers of g, an irreducible polynomial in an extension feild

In an extension field, how do you to iteratively multiply an irreducible polynomial to obtain its powers, simplifying and printing the results in sagemath?

For example:

1) Within GF(59^2)['x'], the polynomial x^2 + 2x + 13 is irreducible.

2) Say we use the label 'g', we can use this irreducible polynomial to express g squared.

`g^2 = -2g - 13 
        = 57g + 46

3) Subsequent powers of g can be obtained by iteratively multiplying the previous expression by g.

for example:

 g^2 = 57g+46 
 g^3 = g(g^2) = g(57g+46) = 57g^2 + 46g = 57 (57g + 46) + 46g  (mod 59)
       = 50g + 26,

 g^4 = g(g^3) = g(50g + 26) = 50g^2 + 26g = 50(57g+46) + 26g = (50*57)g + (50 * 46) + 26 g (mod 59)
       = 44g + 58, 

 g^5 = g(g^4) = g(44g + 58) = 44g^2 + 58g = 44(57g+46) + 58g = (44*57)g + (44 * 46) + 58g = 30g + 18+ 58g
       =29g + 18 
 (...) 
 and so on, up to cycle, or g^59.

The question is:

What would the sagemath code look like to do the following a) initialize g squared, subsequently multiply by g, and simplify mod 59 to print the following output?

Sample output:

g^2 = 57*g + 46 
g^3 = 50*g + 26
g^4 = 46*g + 58
g^5 = 25*g + 51
(....)
g^59 = ....

Possible pseudocode:

#initialize the ring    
F = GF(59^2)['x']
#initialize the starting point to our g^2                            
g_current = F('57g + 46')
#loop over an appropriate range                                      
    for i in range (1,59):                                            
      #accumulate the current power, multiplying the previous by g, and then simplifying
       g_current = F.simplify(g * g_current)                 
      #print an appropriate line  summary
      print("g^" + str(i+2) + "=" + str(g_current))

Your help is appreciated.

generating powers of g, an irreducible polynomial in an extension feildfield

In an extension field, how do you to iteratively multiply an irreducible polynomial to obtain its powers, simplifying and printing the results in sagemath?

For example:

1) Within GF(59^2)['x'], the polynomial x^2 + 2x + 13 is irreducible.

2) Say we use the label 'g', we can use this irreducible polynomial to express g squared.

`g^2 = -2g - 13 
        = 57g + 46

3) Subsequent powers of g can be obtained by iteratively multiplying the previous expression by g.

for example:

 g^2 = 57g+46 
 g^3 = g(g^2) = g(57g+46) = 57g^2 + 46g = 57 (57g + 46) + 46g  (mod 59)
       = 50g + 26,

 g^4 = g(g^3) = g(50g + 26) = 50g^2 + 26g = 50(57g+46) + 26g = (50*57)g + (50 * 46) + 26 g (mod 59)
       = 44g + 58, 

 g^5 = g(g^4) = g(44g + 58) = 44g^2 + 58g = 44(57g+46) + 58g = (44*57)g + (44 * 46) + 58g = 30g + 18+ 58g
       =29g + 18 
 (...) 
 and so on, up to cycle, or g^59.

The question is:

What would the sagemath code look like to do the following a) initialize g squared, subsequently multiply by g, and simplify mod 59 to print the following output?

Sample output:

g^2 = 57*g + 46 
g^3 = 50*g + 26
g^4 = 46*g + 58
g^5 = 25*g + 51
(....)
g^59 = ....

Possible pseudocode:

#initialize the ring    
F = GF(59^2)['x']
#initialize the starting point to our g^2                            
g_current = F('57g + 46')
#loop over an appropriate range                                      
    for i in range (1,59): (1,57):                                            
      #accumulate the current power, multiplying the previous by g, and then simplifying
       g_current = F.simplify(g (g * g_current) g_current).simplify()                 
      #print an appropriate line  summary
      print("g^" + str(i+2) + "=" + str(g_current))

Your help is appreciated.