Sindbad~EG File Manager

Current Path : /usr/home/beeson/Otter-Lambda/yyy/algebra/
Upload File :
Current File : /usr/home/beeson/Otter-Lambda/yyy/algebra/eqns2.c

/* M. Beeson, for MathXpert.
Operators to solve several linear equations using the
Term Selection Interface.
Original date 7.24.95
Last modified 1.22.98
*/

#define ALGEBRA_DLL
#include <string.h>
#include <assert.h>
#include "globals.h"
#include "ops.h"
#include "matrix.h"

/* The operators in this file need a selected equation (or row of
a matrix) and in addition an arg or args entered by the user.
The final term passed in 'arg' is created by wget_two_args in
execute.c; it will be a flattened AND term, containing the
index of the selected equation (starting from one) in the
0th arg, and the other one or two args required in the
next argument positions.
*/

/*________________________________________________________________*/
MEXPORT_ALGEBRA int addselectedeqn(term t, term arg, term *next, char *reason)
/* add selected eqn to equation ? */
{ return addtwoeqns(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int subselectedeqn(term t, term arg, term *next, char *reason)
{  return subtwoeqns(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int mulselectedeqn(term t, term arg, term *next, char *reason)
{ return muleqns(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int divselectedeqn(term t, term arg, term *next, char *reason)
{ return diveqns(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int addmulselectedeqn(term t, term arg, term *next, char *reason)
{ /* The args are in a different order than addmuleqns wants */
  arg = and3(ARG(1,arg),ARG(0,arg),ARG(2,arg));
  return addmuleqns(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int submulselectedeqn(term t, term arg, term *next, char *reason)
{ /* The args are in a different order than submuleqns wants */
  arg = and3(ARG(1,arg),ARG(0,arg),ARG(2,arg));
  return submuleqns(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int swapselectedeqn(term t, term arg, term *next, char *reason)
{ return swapeqns(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int solveselectedeqn(term t, term arg, term *next, char *reason)
{ return solveone(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int addselectedrow(term t, term arg, term *next, char *reason)
{ return addrows(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int subselectedrow(term t, term arg, term *next, char *reason)
{ return subrows(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int mulselectedrow(term t, term arg, term *next, char *reason)
{ return mulrows(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int divselectedrow(term t, term arg, term *next, char *reason)
{ return divrows(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int addmulselectedrow(term t, term arg, term *next, char *reason)
{ arg = and3(ARG(1,arg),ARG(0,arg),ARG(2,arg));
  return addmulrows(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int submulselectedrow(term t, term arg, term *next, char *reason)
{ arg = and3(ARG(1,arg),ARG(0,arg),ARG(2,arg));
  return submulrows(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int swapselectedrow(term t, term arg, term *next, char *reason)
{ return swaprows(t,arg,next,reason);
}
/*________________________________________________________________*/
MEXPORT_ALGEBRA int multbymatrixidentity(term t, term arg, term *next, char *reason)
/* A = IA for matrices A */
{ term iden;
  if(FUNCTOR(t) != MATRIX && FUNCTOR(t) != VECTOR)
     return 1;
  iden = make_identity(ARITY(t));
  HIGHLIGHT(iden);
  *next = product(iden,t);
  strcpy(reason,"A = IA");
  return 0;
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists