Sindbad~EG File Manager
/* 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
*/
#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.
*/
/*________________________________________________________________*/
int addselectedeqn(term t, term arg, term *next, char *reason)
/* add selected eqn to equation ? */
{
return addtwoeqns(t,arg,next,reason);
}
/*________________________________________________________________*/
int subselectedeqn(term t, term arg, term *next, char *reason)
{ return subtwoeqns(t,arg,next,reason);
}
/*________________________________________________________________*/
int mulselectedeqn(term t, term arg, term *next, char *reason)
{ return muleqns(t,arg,next,reason);
}
/*________________________________________________________________*/
int divselectedeqn(term t, term arg, term *next, char *reason)
{ return diveqns(t,arg,next,reason);
}
/*________________________________________________________________*/
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);
}
/*________________________________________________________________*/
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);
}
/*________________________________________________________________*/
int swapselectedeqn(term t, term arg, term *next, char *reason)
{ return swapeqns(t,arg,next,reason);
}
/*________________________________________________________________*/
int solveselectedeqn(term t, term arg, term *next, char *reason)
{ return solveone(t,arg,next,reason);
}
/*________________________________________________________________*/
int addselectedrow(term t, term arg, term *next, char *reason)
{ return addrows(t,arg,next,reason);
}
/*________________________________________________________________*/
int subselectedrow(term t, term arg, term *next, char *reason)
{ return subrows(t,arg,next,reason);
}
/*________________________________________________________________*/
int mulselectedrow(term t, term arg, term *next, char *reason)
{ return mulrows(t,arg,next,reason);
}
/*________________________________________________________________*/
int divselectedrow(term t, term arg, term *next, char *reason)
{ return divrows(t,arg,next,reason);
}
/*________________________________________________________________*/
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);
}
/*________________________________________________________________*/
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);
}
/*________________________________________________________________*/
int swapselectedrow(term t, term arg, term *next, char *reason)
{ return swaprows(t,arg,next,reason);
}
/*________________________________________________________________*/
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