equations.h
Go to the documentation of this file.
1 #ifndef EQUATIONSH
2 #define EQUATIONSH
3 
4 #include "boolean.h"
5 #include "variables.h"
6 #include "equation.h"
7 #include "mequation.h"
8 #include "simplex.h"
9 #include "defines.h"
10 
11 #include <stdio.h>
12 
20 /************************************************************************************/
21 
22 /************************************************************************************/
23 
30 #define INIT_NUM_EQUATIONS 10
31 /************************************************************************************/
32 
46 typedef struct
47 {
50  unsigned int EqType;
56  unsigned int n;
69 
70 
81 typedef struct {
82  unsigned int neq;
84  unsigned int s;
85  unsigned int c;
86  unsigned int d;
87  unsigned int e;
89  boolean polynomial;
90  boolean scalar;
92  unsigned int m;
93  unsigned int n;
96  unsigned int mm;
97  unsigned int nm;
100  unsigned int nsEQU;
105 } Tequations;
106 
114 void InitEquations(Tequations *eqs);
115 
124 void CopyEquations(Tequations *eqs_dst,Tequations *eqs_src);
125 
134 void MergeEquations(Tequations *eqs1,Tequations *eqs);
135 
147 boolean UsedVarInNonDummyEquations(unsigned int nv,Tequations *eqs);
148 
159 boolean UsedVarInEquations(unsigned int nv,Tequations *eqs);
160 
161 
179 void RemoveEquationsWithVar(double epsilon,unsigned int nv,Tequations *eqs);
180 
181 
200 boolean ReplaceVariableInEquations(double epsilon,unsigned int nv,
201  TLinearConstraint *lc,Tequations *eqs);
202 
221 boolean GaussianElimination(Tequations *eqs);
222 
232 unsigned int NEquations(Tequations *eqs);
233 
243 unsigned int NSystemEquations(Tequations *eqs);
244 
254 unsigned int NCoordEquations(Tequations *eqs);
255 
265 unsigned int NDummyEquations(Tequations *eqs);
266 
276 unsigned int NEqualityEquations(Tequations *eqs);
277 
278 
288 unsigned int NInequalityEquations(Tequations *eqs);
289 
299 boolean PolynomialEquations(Tequations *eqs);
300 
308 boolean ScalarEquations(Tequations *eqs);
309 
320 boolean IsSystemEquation(unsigned int i,Tequations *eqs);
321 
332 boolean IsCoordEquation(unsigned int i,Tequations *eqs);
333 
344 boolean IsDummyEquation(unsigned int i,Tequations *eqs);
345 
357 unsigned int GetEquationTypeN(unsigned int i,Tequations *eqs);
358 
369 boolean HasEquation(Tequation *equation,Tequations *eqs);
370 
384 void AddEquation(Tequation *equation,Tequations *eqs);
385 
401 void AddEquationNoSimp(Tequation *equation,Tequations *eqs);
402 
403 
412 void AddMatrixEquation(TMequation *equation,Tequations *eqs);
413 
422 Tequation *GetEquation(unsigned int n,Tequations *eqs);
423 
455 unsigned int CropEquation(unsigned int ne,
456  unsigned int varType,
457  double epsilon,double rho,
458  Tbox *b,
459  Tvariables *vs,
460  Tequations *eqs);
461 
553 boolean AddEquation2Simplex(unsigned int ne,
554  double lr2tm_q,double lr2tm_s,
555  double epsilon,unsigned int safeSimplex,double rho,
556  Tbox *b,Tvariables *vs,
557  TSimplex *lp,Tequations *eqs);
558 
573 void UpdateSplitWeight(unsigned int ne,double *splitDim,
574  Tbox *b,Tequations *eqs);
575 
588 void EvaluateEqualityEquations(boolean systemOnly,double *v,double *r,Tequations *eqs);
589 
605 void EvaluateSubSetEqualityEquations(double *v,boolean *se,double *r,Tequations *eqs);
606 
618 void EvaluateEqualitySparseEquations(double *v,double *r,Tequations *eqs);
619 
636 void EvaluateSubSetEqualitySparseEquations(double *v,boolean *se,double *r,Tequations *eqs);
637 
659 void EvaluateEquationsXVectors(double *v,unsigned int ng,unsigned int *g,double *p,
660  double *r,Tequations *eqs);
661 
672 void EvaluateInequalityEquations(double *v,double *r,Tequations *eqs);
673 
684 void DeriveEqualityEquations(unsigned int v,Tequations *deqs,Tequations *eqs);
685 
699 void PrintEquations(FILE *f,char **varNames,Tequations *eqs);
700 
709 void DeleteEquations(Tequations *eqs);
710 
711 #endif
Definition of the boolean type.
unsigned int c
Definition: equations.h:85
void EvaluateEqualitySparseEquations(double *v, double *r, Tequations *eqs)
Evaluates the set of equality equations for sparse systems.
Definition: equations.c:2563
unsigned int e
Definition: equations.h:87
Set of variables of a cuiksystem.
Definition: variables.h:38
unsigned int GetEquationTypeN(unsigned int i, Tequations *eqs)
Gets the type of a particular equation.
Definition: equations.c:1144
void EvaluateEqualityEquations(boolean systemOnly, double *v, double *r, Tequations *eqs)
Evaluates all equality equations in the set.
Definition: equations.c:2477
Definition of the Tequation type and the associated functions.
TMequation ** mequation
Definition: equations.h:98
void MergeEquations(Tequations *eqs1, Tequations *eqs)
Copy constructor.
Definition: equations.c:815
void AddEquationNoSimp(Tequation *equation, Tequations *eqs)
Adds an equation to the set.
Definition: equations.c:1656
boolean HasEquation(Tequation *equation, Tequations *eqs)
Checks if a given equation is already in the set.
Definition: equations.c:1160
Definition of the Tvariables type and the associated functions.
A linear constraint with an associated error.
Tequation *** Hessian
Definition: equations.h:63
boolean IsSystemEquation(unsigned int i, Tequations *eqs)
Identify system equations.
Definition: equations.c:1115
TLinearConstraint * lc
Definition: equations.h:53
unsigned int mm
Definition: equations.h:96
Tequation * equation
Definition: equations.h:48
void AddMatrixEquation(TMequation *equation, Tequations *eqs)
Adds a matrix equation to the set.
Definition: equations.c:1665
unsigned int NSystemEquations(Tequations *eqs)
Number of system equations in the set.
Definition: equations.c:1080
unsigned int neq
Definition: equations.h:82
Tequation ** Jacobian
Definition: equations.h:58
unsigned int EqType
Definition: equations.h:50
unsigned int NCoordEquations(Tequations *eqs)
Number of coordenalization equations in the set.
Definition: equations.c:1085
unsigned int NInequalityEquations(Tequations *eqs)
Number of inequalities in the set.
Definition: equations.c:1100
unsigned int NEqualityEquations(Tequations *eqs)
Number of equalities in the set.
Definition: equations.c:1095
A simplex tableau structure.
Definition: simplex.h:73
Matrix equation.
Definition: mequation.h:38
boolean polynomial
Definition: equations.h:89
boolean AddEquation2Simplex(unsigned int ne, double lr2tm_q, double lr2tm_s, double epsilon, unsigned int safeSimplex, double rho, Tbox *b, Tvariables *vs, TSimplex *lp, Tequations *eqs)
Adds an equation to the simplex.
Definition: equations.c:2185
void PrintEquations(FILE *f, char **varNames, Tequations *eqs)
Prints a set of equations.
Definition: equations.c:2694
void UpdateSplitWeight(unsigned int ne, double *splitDim, Tbox *b, Tequations *eqs)
Computes the linearization error induced by the variables of a given equation.
Definition: equations.c:2430
Tequation * GetEquation(unsigned int n, Tequations *eqs)
Gets an equation from the set.
Definition: equations.c:1697
boolean UsedVarInEquations(unsigned int nv, Tequations *eqs)
Checks if a variable is used in the set of equations.
Definition: equations.c:860
boolean GaussianElimination(Tequations *eqs)
Perform Gaussian elimination on the set of equations.
Definition: equations.c:963
unsigned int CropEquation(unsigned int ne, unsigned int varType, double epsilon, double rho, Tbox *b, Tvariables *vs, Tequations *eqs)
Equation-wise crop.
Definition: equations.c:1175
Set of equations.
Definition: equations.h:81
void EvaluateSubSetEqualitySparseEquations(double *v, boolean *se, double *r, Tequations *eqs)
Evaluates a subset of the set of equality equations for sparse systems.
Definition: equations.c:2586
boolean UsedVarInNonDummyEquations(unsigned int nv, Tequations *eqs)
Checks if a variable is used in the set of equations.
Definition: equations.c:835
An equation.
Definition: equation.h:236
Information associated with each scalar equation in the equation set.
Definition: equations.h:46
Definitions of constants and macros used in several parts of the cuik library.
boolean ReplaceVariableInEquations(double epsilon, unsigned int nv, TLinearConstraint *lc, Tequations *eqs)
Replaces a variable with a linear expression.
Definition: equations.c:925
unsigned int n
Definition: equations.h:56
boolean PolynomialEquations(Tequations *eqs)
Identify polynomial system of equations.
Definition: equations.c:1105
void EvaluateEquationsXVectors(double *v, unsigned int ng, unsigned int *g, double *p, double *r, Tequations *eqs)
Evaluates the matrix equations multiplied by some given vectors.
Definition: equations.c:2624
unsigned int s
Definition: equations.h:84
boolean scalar
Definition: equations.h:90
A box.
Definition: box.h:83
void AddEquation(Tequation *equation, Tequations *eqs)
Adds an equation to the set.
Definition: equations.c:1629
Definition of the TSimplex type and the associated functions.
void EvaluateInequalityEquations(double *v, double *r, Tequations *eqs)
Error in inequalities.
Definition: equations.c:2643
boolean IsDummyEquation(unsigned int i, Tequations *eqs)
Identify dummy equations.
Definition: equations.c:1135
unsigned int n
Definition: equations.h:93
unsigned int nm
Definition: equations.h:97
void CopyEquations(Tequations *eqs_dst, Tequations *eqs_src)
Copy constructor.
Definition: equations.c:768
Definition of the matrix equation operations.
Tequation ** eqEQU
Definition: equations.h:104
unsigned int NEquations(Tequations *eqs)
Number of equations in the set.
Definition: equations.c:1075
unsigned int nsEQU
Definition: equations.h:100
TequationInfo ** equation
Definition: equations.h:94
unsigned int d
Definition: equations.h:86
unsigned int m
Definition: equations.h:92
boolean IsCoordEquation(unsigned int i, Tequations *eqs)
Identify coordenalization equations.
Definition: equations.c:1126
boolean ScalarEquations(Tequations *eqs)
Identifies scalar systems.
Definition: equations.c:1110
unsigned int NDummyEquations(Tequations *eqs)
Number of dummy equations in the set.
Definition: equations.c:1090
void InitEquations(Tequations *eqs)
Constructor.
Definition: equations.c:733
void EvaluateSubSetEqualityEquations(double *v, boolean *se, double *r, Tequations *eqs)
Evaluates a subset of the equality equations in the set.
Definition: equations.c:2505
void DeriveEqualityEquations(unsigned int v, Tequations *deqs, Tequations *eqs)
Derives an equation set.
Definition: equations.c:2668
void DeleteEquations(Tequations *eqs)
Destructor.
Definition: equations.c:2750
void RemoveEquationsWithVar(double epsilon, unsigned int nv, Tequations *eqs)
Removes all equations that include a given variable.
Definition: equations.c:882