C/C++ codeint[][] MagicMatrix ( int n )
{
//Odd order.
if ( mod ( n, 2 ) )
[ mj, mi ] = MakeMeshGridSquareMatrix ( n ); // mj : mesh along row,
// while mi : mesh along column
// both mj and mi are square matrix
// matrix operation
A = mod ( mi + mj - ( n + 3 ) / 2.0, n );
B = mod ( mi + 2 * mj - 2, n );
M = n * A + B + 1;
// Doubly even order.
elif ( !mod ( n, 4 ) )
[ mj, mi ] = MakeMeshGridSquareMatrix ( n );
K = ( floor ( mod ( mi, 4 ) / 2.0 ) == floor ( mod ( mj, 4 ) / 2.0 ); // K is a logic matrix
// each element judge by
// mj and mi
M = MakeSquareMatrix ( n ); // to make array which from 1 to n * n as a n * n square
M [ K ] = n * n + 1 - M [ K ]; // modify matrix M each element from matrix K
// Sin