next up previous
Next: SLA_PERTEL - Perturbed Orbital Elements
Up: SUBPROGRAM SPECIFICATIONS
Previous: SLA_PDQ2H - H.A. for a Given P.A.

SLA_PERMUT - Next Permutation   

ACTION:
Generate the next permutation of a specified number of items.
CALL:
CALL sla_PERMUT (N, ISTATE, IORDER, J)

GIVEN:

N I number of items: there will be N! permutations
ISTATE I(N) state, ISTATE(1)=-1 to initialize

RETURNED:

ISTATE I(N) state, updated ready for next time
IORDER I(N) next permutation of numbers 1,2,...,N
J I status:
-1 = illegal N (zero or less is illegal)
0 = OK
+1 = no more permutations available

NOTES:
1.
This routine returns, in the IORDER array, the integers 1 to N inclusive, in an order that depends on the current contents of the ISTATE array. Before calling the routine for the first time, the caller must set the first element of the ISTATE array to -1 (any negative number will do) to cause the ISTATE array to be fully initialized.
2.
The first permutation to be generated is:
IORDER(1)=N, IORDER(2)=N-1, ..., IORDER(N)=1
This is also the permutation returned for the ``finished'' (J=1) case. The final permutation to be generated is:
IORDER(1)=1, IORDER(2)=2, ..., IORDER(N)=N
3.
If the ``finished'' (J=1) status is ignored, the routine continues to deliver permutations, the pattern repeating every N! calls.


next up previous
Next: SLA_PERTEL - Perturbed Orbital Elements
Up: SUBPROGRAM SPECIFICATIONS
Previous: SLA_PDQ2H - H.A. for a Given P.A.

SLALIB --- Positional Astronomy Library
Starlink User Note 67
P. T. Wallace
12 October 1999
E-mail:ptw@star.rl.ac.uk