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 
182 void RemoveEquationsWithVar(double epsilon,unsigned int nv,Tequations *eqs);
183 
184 
203 boolean ReplaceVariableInEquations(double epsilon,unsigned int nv,
204  TLinearConstraint *lc,Tequations *eqs);
205 
224 boolean GaussianElimination(Tequations *eqs);
225 
235 unsigned int NEquations(Tequations *eqs);
236 
246 unsigned int NScalarEquations(Tequations *eqs);
247 
257 unsigned int NSystemEquations(Tequations *eqs);
258 
268 unsigned int NCoordEquations(Tequations *eqs);
269 
279 unsigned int NDummyEquations(Tequations *eqs);
280 
290 unsigned int NEqualityEquations(Tequations *eqs);
291 
292 
302 unsigned int NInequalityEquations(Tequations *eqs);
303 
313 boolean PolynomialEquations(Tequations *eqs);
314 
322 boolean ScalarEquations(Tequations *eqs);
323 
334 boolean IsSystemEquation(unsigned int i,Tequations *eqs);
335 
346 boolean IsCoordEquation(unsigned int i,Tequations *eqs);
347 
358 boolean IsDummyEquation(unsigned int i,Tequations *eqs);
359 
371 unsigned int GetEquationTypeN(unsigned int i,Tequations *eqs);
372 
383 boolean HasEquation(Tequation *equation,Tequations *eqs);
384 
398 void AddEquation(Tequation *equation,Tequations *eqs);
399 
415 void AddEquationNoSimp(Tequation *equation,Tequations *eqs);
416 
417 
426 void AddMatrixEquation(TMequation *equation,Tequations *eqs);
427 
436 Tequation *GetEquation(unsigned int n,Tequations *eqs);
437 
446 Tequation *GetScalarEquation(unsigned int n,Tequations *eqs);
447 
479 unsigned int CropEquation(unsigned int ne,
480  unsigned int varType,
481  double epsilon,double rho,
482  Tbox *b,
483  Tvariables *vs,
484  Tequations *eqs);
485 
577 boolean AddEquation2Simplex(unsigned int ne,
578  double lr2tm_q,double lr2tm_s,
579  double epsilon,unsigned int safeSimplex,double rho,
580  Tbox *b,Tvariables *vs,
581  TSimplex *lp,Tequations *eqs);
582 
597 void UpdateSplitWeight(unsigned int ne,double *splitDim,
598  Tbox *b,Tequations *eqs);
599 
612 void EvaluateEqualityEquations(boolean systemOnly,double *v,double *r,Tequations *eqs);
613 
629 void EvaluateSubSetEqualityEquations(double *v,boolean *se,double *r,Tequations *eqs);
630 
642 void CacheScalarEQUInfo(Tequations *eqs);
643 
658 void EvaluateEqualitySparseEquations(double *v,double *r,Tequations *eqs);
659 
676 void EvaluateSubSetEqualitySparseEquations(double *v,boolean *se,double *r,Tequations *eqs);
677 
699 void EvaluateEquationsXVectors(double *v,unsigned int ng,unsigned int *g,double *p,
700  double *r,Tequations *eqs);
701 
712 void EvaluateInequalityEquations(double *v,double *r,Tequations *eqs);
713 
724 void DeriveEqualityEquations(unsigned int v,Tequations *deqs,Tequations *eqs);
725 
739 void PrintEquations(FILE *f,char **varNames,Tequations *eqs);
740 
749 void DeleteEquations(Tequations *eqs);
750 
751 #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:2675
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:1238
void EvaluateEqualityEquations(boolean systemOnly, double *v, double *r, Tequations *eqs)
Evaluates all equality equations in the set.
Definition: equations.c:2579
Definition of the Tequation type and the associated functions.
void CacheScalarEQUInfo(Tequations *eqs)
Collects information about scalar equality equations.
Definition: equations.c:2643
TMequation ** mequation
Definition: equations.h:98
void MergeEquations(Tequations *eqs1, Tequations *eqs)
Copy constructor.
Definition: equations.c:802
void AddEquationNoSimp(Tequation *equation, Tequations *eqs)
Adds an equation to the set.
Definition: equations.c:1750
boolean HasEquation(Tequation *equation, Tequations *eqs)
Checks if a given equation is already in the set.
Definition: equations.c:1254
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:1209
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:1759
unsigned int NSystemEquations(Tequations *eqs)
Number of system equations in the set.
Definition: equations.c:1174
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:1179
unsigned int NInequalityEquations(Tequations *eqs)
Number of inequalities in the set.
Definition: equations.c:1194
unsigned int NEqualityEquations(Tequations *eqs)
Number of equalities in the set.
Definition: equations.c:1189
A simplex tableau structure.
Definition: simplex.h:73
Matrix equation.
Definition: mequation.h:42
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:2287
void PrintEquations(FILE *f, char **varNames, Tequations *eqs)
Prints a set of equations.
Definition: equations.c:2806
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:2532
Tequation * GetEquation(unsigned int n, Tequations *eqs)
Gets an equation from the set.
Definition: equations.c:1799
boolean UsedVarInEquations(unsigned int nv, Tequations *eqs)
Checks if a variable is used in the set of equations.
Definition: equations.c:847
unsigned int NScalarEquations(Tequations *eqs)
Number of scalar equations in the set.
Definition: equations.c:1169
boolean GaussianElimination(Tequations *eqs)
Perform Gaussian elimination on the set of equations.
Definition: equations.c:993
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:1269
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:2698
boolean UsedVarInNonDummyEquations(unsigned int nv, Tequations *eqs)
Checks if a variable is used in the set of equations.
Definition: equations.c:822
An equation.
Definition: equation.h:237
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:912
unsigned int n
Definition: equations.h:56
boolean PolynomialEquations(Tequations *eqs)
Identify polynomial system of equations.
Definition: equations.c:1199
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:2736
Tequation * GetScalarEquation(unsigned int n, Tequations *eqs)
Gets a scalar equation from the set.
Definition: equations.c:1791
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:1723
Definition of the TSimplex type and the associated functions.
void EvaluateInequalityEquations(double *v, double *r, Tequations *eqs)
Error in inequalities.
Definition: equations.c:2755
boolean IsDummyEquation(unsigned int i, Tequations *eqs)
Identify dummy equations.
Definition: equations.c:1229
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:755
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:1164
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:1220
boolean ScalarEquations(Tequations *eqs)
Identifies scalar systems.
Definition: equations.c:1204
unsigned int NDummyEquations(Tequations *eqs)
Number of dummy equations in the set.
Definition: equations.c:1184
void InitEquations(Tequations *eqs)
Constructor.
Definition: equations.c:720
void EvaluateSubSetEqualityEquations(double *v, boolean *se, double *r, Tequations *eqs)
Evaluates a subset of the equality equations in the set.
Definition: equations.c:2607
void DeriveEqualityEquations(unsigned int v, Tequations *deqs, Tequations *eqs)
Derives an equation set.
Definition: equations.c:2780
void DeleteEquations(Tequations *eqs)
Destructor.
Definition: equations.c:2862
void RemoveEquationsWithVar(double epsilon, unsigned int nv, Tequations *eqs)
Removes all equations that include a given variable.
Definition: equations.c:869