| magic.product {magic} | R Documentation |
Gives a magic square that is a product of two magic squares.
magic.product(a, b, mat=NULL) magic.product.fast(a, b)
a |
First magic square; if a is an integer, use magic(a). |
b |
as above |
mat |
Matrix, of same size as a, of integers treated as
modulo 8. Default value of NULL equivalent to passing
a*0. Each number from 0-7 corresponds to one of the 8
squares which have the same Fr'{e}nicle's standard form. Then
subsquares of the product square (ie tiles of the same size as
b) are rotated and transposed appropriately according to
their corresponding entry in mat. This is a lot easier to
see than to describe (see examples section). |
Function magic.product.fast() does not take a mat
argument, and is equivalent to magic.product() with mat
taking the default value of NULL. The improvement in speed is
doubtful unless order(a)>>order(b), in which
case there appears to be a substantial saving.
Robin K. S. Hankin
William H. Benson and Oswald Jacoby. New recreations with magic squares, Dover 1976 (and that paper in JRM)
magic.product(magic(3),magic(4)) magic.product(3,4) mat <- matrix(0,3,3) a <- magic.product(3,4,mat=mat) mat[1,1] <- 1 b <- magic.product(3,4,mat=mat) a==b