| name & dimensionality | kind | in/out | description | 
|---|
|  |  |  |  | 
| nside | I4B | IN | the HEALPix  parameter. | 
| template | I4B/ I8B | IN | identification number of the
                   template pixel (the numbering
                   scheme of the pixel templates is the same for both routines). | 
| list(0:nrep-1) OPTIONAL | I4B/ I8B | OUT | pointer containing the ordered list of NESTED/RING scheme
                   identification numbers (in {0,  })
  of all pixels having the same shape as the template provided. The routines
                   will allocate the list array if it is not allocated
                   upon calling. | 
| reflexion(0:nrep-1) OPTIONAL | I4B | OUT | pointer containing the transformation(s) (in
                   {0, 3}) to
                   apply to each of the returned pixels to match exactly in
                   shape and position its respective template. 0: rotation around the polar axis only,
                   1: rotation + East-West swap (ie, reflexion around meridian),
                   2: rotation + North-South swap (ie, reflexion around
                   Equator), 3: rotation + East-West and North-South swaps. The routines
                   will allocate the list array if it is not allocated
                   upon calling. | 
| nrep OPTIONAL | I4B/ I8B | OUT | number of pixels having the same template (either 8, 16, 4  or
  8  ). | 
use 
healpix_modules 
integer, parameter :: IXB = I4B  ! for nside <= 8192
!integer, parameter :: IXB = I8B  ! for any valid nside
integer(I4B):: nside
integer(IXB):: template, nrep
integer(I4B), dimension(:), pointer :: listref
integer(IXB), dimension(:), pointer :: listpix
allocate(listref(0:0)) ! only the lower bound matters
allocate(listpix(0:0)) ! only the lower bound matters
nside = 256
template = 1234
call same_shape_pixels_ring(nside, template, list=listpix, reflexion=listref, nrep=nrep) 
print*,nrep
print*,listpix(0:nrep-1)
print*,listref(0:nrep-1)