Metropoli BBS
VIEWER: transpos.c MODE: TEXT (ASCII)
/*Copyright (C) 1992, 1994 by Thomas Glen Smith.  All Rights Reserved.*/
/* transpos APL2 V1.0.0 ************************************************
* Interchanges elements of an APL variable along two or more           *
* coordinates.  The simplest case is a matrix, in which the rows       *
* and columns can be interchanged, e.g. ABC becomes ADG.               *
*                                       DEF         BEH                *
*                                       GHI         CFI                *
***********************************************************************/
#define INCLUDES APLCB
#include "includes.h"
Aplcb transpos(left,rite)
Aplcb left,rite;
{
	Errinit; Errstop; Temp; Transpot; Vectin;
     extern int indxorg;
	int indxsave,tempsave;
     Aplcb out;

	if (errinit())
		return(errstop(0,left,rite,NULL));
/*	indxsave = indxorg; *//* save current index origin */
/*	indxorg = 1; *//* all work is relative 1 */
	if (0 == rite->aplrank)
		rite = temp(vectin(rite)); /* vectors only */
	if (tempsave = rite->aplflags & APLTEMP)
		rite->aplflags -= APLTEMP; /* temporarily permanent */
	out = transpot(left,rite);
	rite->aplflags += tempsave;
/*	indxorg = indxsave; *//* restore indxorg */
	return(errstop(0,NULL,rite,out));
}
[ RETURN TO DIRECTORY ]