The following are some Maple commands that are used in the examples. Some, such as phi
, are built into Maple. Others, such as addell
, are in the Maple notebook available at
bit.ly/2TzKFec
If you want to suppress the output, use a colon instead.
The argument of a function is enclosed in round parentheses. Vectors are enclosed in square brackets. Entering matrix(m,n,[a,b,c,...,z])
gives the matrix with first row a,b, ...
and last row ...z
. To multiply two matrices and type evalm(A&*B)
.
If you want to refer to the previous output, use %. The next-to-last output is %%, etc. Note that % refers to the most recent output, not to the last displayed line. If you will be referring to an output frequently, it might be better to name it. For example, g:=phi(12345)
defines g
to be the value of Note that when you are assigning a value to a variable in this way, you should use a colon before the equality sign. Leaving out the colon is a common cause of hard-to-find errors.
Exponentiation is written as However, we will need to use modular exponentiation with very large exponents. In that case, use
For modular exponentiation, you might need to use a between & and
. Use the right arrow to escape from the exponent.
Some of the following commands require certain Maple packages to be loaded via the commands
with(numtheory), with(linalg), with(plots), with(combinat)
These are loaded when the math.mws notebook is loaded. However, if you want to use a command such as nextprime
without loading the notebook, first type with(numtheory):
to load the package (once for the whole session). Then you can use functions such as nextprime
, isprime
, etc. If you type with(numtheory)
without the colon, you’ll get a list of the functions in the package, too.
The following are some of the commands used in the examples. We list them here for easy reference. To see how to use them, look at the examples. We have used txt
to refer to a string of letters. Such strings should be enclosed in quotes ("string"
).
addell([x,y], [u,v], b, c, n)
finds the sum of the points and on the elliptic curve The integer should be odd.
affinecrypt(txt,m,n)
is the affine encryption of txt
using
allshifts(txt)
gives all 26 shifts of txt
.
chrem([a,b,...], [m,n,...])
gives a solution to the simultaneous congruences
choose(txt,m,n)
lists the characters in txt
in positions that are congruent to
coinc(txt,n)
is the number of matches between txt
and txt
displaced by
corr(v)
is the dot product of the vector with the 26 shifts of the alphabet frequency vector.
phi(n)
computes (don’t try very large values of ).
igcdex(m,n,’x’,’y’)
computes the gcd of and along with a solution of To get x
and y
, type x;y
on this or a subsequent command line.
ifactor(n)
factors
frequency(txt)
lists the number of occurrences of each letter a
through z
in txt
.
gcd(m,n)
is the gcd of and
inverse(M)
finds the inverse of the matrix
lfsr(c,k,n)
gives the sequence of bits produced by the recurrence that has coefficients given by the vector The initial values of the bits are given by the vector
lfsrlength(v,n)
tests the vector of bits to see if it is generated by a recurrence of length at most
lfsrsolve(v,n)
computes the coefficients of a recurrence, given a guess for the length of the recurrence that generates the binary vector
max(v)
is the largest element of the list
a mod n
is the value of
multell([x,y], m, b, c, n)
computes times the point on the elliptic curve
multsell([x,y], m, b, c, n)
lists the first multiples of the point on the elliptic curve
nextprime(x)
gives the next prime
num2text(n)
changes a number to letters. The successive pairs of digits must each be at most 26 space is 00, is 01, is 26.
primroot(p)
finds a primitive root for the prime
shift(txt,n)
shifts txt
by
text2num(txt)
changes txt
to numbers, with space=00, a=01, ..., z=25
.
vigenere(txt,v)
gives the Vigenère encryption of txt
using the vector as the key.
vigvec(txt,m,n)
gives the frequencies of the letters a
through z
in positions congruent to
13.58.121.131