Institut de Robòtica i Informàtica Industrial
KRD Group

The CuikSuite Project

equations.h

Go to the documentation of this file.
00001 #ifndef EQUATIONSH
00002 #define EQUATIONSH
00003 
00004 #include "boolean.h"
00005 #include "variables.h"
00006 #include "equation.h"
00007 #include "simplex.h"
00008 
00009 #include <stdio.h>
00010 
00018 /************************************************************************************/
00025 #define INIT_NUM_EQUATIONS 10
00026 /************************************************************************************/
00027 
00039 typedef struct
00040 {
00041   Tequation *equation; 
00043   unsigned int EqType; 
00046   TLinearConstraint *lc; 
00049   unsigned int n;  
00051   Tequation **Jacobian; 
00056   double **Hessian;   
00061 } TequationInfo;
00062 
00063 
00077 typedef struct {
00078   unsigned int max;
00079   unsigned int n; 
00080   unsigned int s; 
00081   unsigned int c; 
00082   unsigned int d; 
00083   unsigned int e; 
00084   TequationInfo **equation; 
00085 } Tequations;
00086 
00094 void InitEquations(Tequations *eqs);
00095 
00104 void CopyEquations(Tequations *eqs_dst,Tequations *eqs_src);
00105 
00117 boolean UsedVarInNonDummyEquations(unsigned int nv,Tequations *eqs);
00118 
00129 boolean UsedVarInEquations(unsigned int nv,Tequations *eqs);
00130 
00131 
00149 void RemoveEquationsWithVar(double epsilon,unsigned int nv,Tequations *eqs);
00150 
00151 
00170 boolean ReplaceVariableInEquations(double epsilon,unsigned int nv,
00171                                    TLinearConstraint *lc,Tequations *eqs);
00172 
00191 boolean GaussianElimination(Tequations *eqs);
00192 
00202 unsigned int NEquations(Tequations *eqs);
00203 
00213 unsigned int NSystemEquations(Tequations *eqs);
00214 
00224 unsigned int NCoordEquations(Tequations *eqs);
00225 
00235 unsigned int NDummyEquations(Tequations *eqs);
00236 
00246 unsigned int NEqualityEquations(Tequations *eqs);
00247 
00258 boolean IsSystemEquation(unsigned int i,Tequations *eqs);
00259 
00270 boolean IsCoordEquation(unsigned int i,Tequations *eqs);
00271 
00282 boolean IsDummyEquation(unsigned int i,Tequations *eqs);
00283 
00295 unsigned int GetEquationTypeN(unsigned int i,Tequations *eqs);
00296 
00307 boolean HasEquation(Tequation *equation,Tequations *eqs);
00308 
00319 void AddEquation(Tequation *equation,Tequations *eqs);
00320 
00329 Tequation *GetEquation(unsigned int n,Tequations *eqs);
00330 
00341 TequationInfo *GetEquationInfo(unsigned int n,Tequations *eqs);
00342 
00368 unsigned int CropEquation(unsigned int ne,
00369                           double epsilon,double rho,
00370                           Tbox *b,
00371                           Tequations *eqs);
00372 
00462 boolean AddEquation2Simplex(unsigned int ne,
00463                             double lr2tm_q,double lr2tm_s,
00464                             double epsilon,double rho,
00465                             Tbox *b,Tvariables *vs,
00466                             TSimplex *lp,Tequations *eqs);
00467 
00482 void UpdateSplitWeight(unsigned int ne,double *splitDim,
00483                        Tbox *b,Tequations *eqs);
00484 
00498 void PrintEquations(FILE *f,char **varNames,Tequations *eqs);
00499 
00508 void DeleteEquations(Tequations *eqs);
00509 
00510 #endif