/* a-wada/qsortlib/juli/revised-jp.c Jan. 22, 2006 */
/* from http://mse-uc01.eng.ohio-state.edu/cubictoo/Co/Src/VecMat/
sortersNotes/qsort_Wada/revised.c by Ju Li
*/
/* for "Fastest double array index sort subroutine contest" by Ju Li */
/* extern int c0, m0; XXX */
#define QSNAME jp
#define ARGS int N, double *P, int *ix
typedef int PTRTYP;
#define DFWRK STACK; int t
#define VALID N > 1
#define HSKP l = 0, r = N - 1; for (i = 0; i < N; i++) ix[i] = i
#define ESZ 1
#define ORDR(i, j) (P[ix[i]] <= P[ix[j]]) /* c0++, XXX */
#define SWAP(i, j) t = ix[i], ix[i] = ix[j], ix[j] = t /* , m0 += 2 XXX */
#define CLNUP
#define STACK PTRTYP s[STKSZ], *p = s
#define STKSZ sizeof (int) * 16
#define PUSH(x, y) *(p++) = x, *(p++) = y
#define EMPTY (s >= p)
#define POP(y, x) y = *(--p), x = *(--p)
#include "qsortbase-ccn.h"
QSORTBASE (QSNAME)
/* a-wada/qsortlib/juli/revised-jp.c end */
/* "Fastest double array index sort subroutine contest" by Ju Li
http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/match.c
http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/revised-glibc.c
http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/revised-merge.c
http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/revised-nr.c
http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/revised-jp.c
http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/random.c
http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/qsortbase-ccn.h
*/