/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */
/* indices APL2 V1.0.0 *************************************************
* Called by findb and disclosh to increment a set of indices pointed to*
* by ip. If rank is 2, and dimensions pointed to by jp are 2 3, and *ip*
* is 1 3 at entry, at exit *ip will be 2 1, assuming org is 1. *
***********************************************************************/
#include "includes.h"
void indices(ip,jp,j,rank,org)
int *ip; /* Index array, initialized to org-1. */
int *jp; /* Dimension array. */
int *j; /* Current dimension, origin 0. Should */
/* be initialized to 1 before the first */
/* call to indices. */
int rank; /* Number of dimensions. */
int org; /* Index origin to use. */
{
(*j)--;
while(*j < rank) { /* loop to set indices */
while(++(*(ip + *j)) == *(jp + *j) + org)
*(ip + (*j)--) = org - 1; /* re-initialize */
(*j)++;
}
}