equations.c File Reference Detailed DescriptionImplementation of the functions operating on sets of Tequations.
Definition in file equations.c.
Function Documentation
Defines all the information associated with an equation.
Definition at line 284 of file equations.c. References AddTerm2LinearConstraint(), BILINEAL_MONOMIAL_EQUATION, BilinealMonomialEquation(), CIRCLE_EQUATION, CircleEquation(), CopyEquation(), DeriveEquation(), EMPTY_EQUATION, TequationInfo::EqType, TequationInfo::equation, Error(), GENERAL_EQUATION, GetEquationCmp(), GetEquationValue(), GetEquationVariables(), GetMonomial(), GetMonomialCt(), GetMonomialVariables(), GetNumMonomials(), GetVariableN(), TequationInfo::Hessian, InitLinearConstraint(), TequationInfo::Jacobian, TequationInfo::lc, LINEAR_EQUATION, LinearEquation(), TequationInfo::n, NEW, NewInterval(), PARABOLA_EQUATION, ParabolaEquation(), SADDLE_EQUATION, SaddleEquation(), SetLinearConstraintError(), SimplexExpandBounds(), SPHERE_EQUATION, SphereEquation(), and VariableSetSize(). Referenced by AddEquation2Simplex(), and AddEquationInt().
Returns the equation stored in a TequationInfo.
Definition at line 394 of file equations.c. References TequationInfo::equation. Referenced by AddEquation(), AddEquation2Simplex(), CacheScalarEQUInfo(), CropEquation(), DeriveEqualityEquations(), EvaluateEqualityEquations(), EvaluateInequalityEquations(), EvaluateSubSetEqualityEquations(), GaussianElimination(), GetEquation(), GetEquationTypeN(), GetScalarEquation(), HasEquation(), IsCoordEquation(), IsDummyEquation(), IsSystemEquation(), LinearizeBilinealMonomialEquation(), LinearizeCircleEquation(), LinearizeGeneralEquation(), LinearizeGeneralEquationInt(), LinearizeParabolaEquation(), LinearizeSaddleEquation(), LinearizeSphereEquation(), MergeEquations(), PrintEquations(), RemoveEquationsWithVar(), ReplaceVariableInEquations(), UsedVarInEquations(), and UsedVarInNonDummyEquations().
Creates a TequationInfo copying data from another TequationInfo.
Definition at line 399 of file equations.c. References CopyEquation(), CopyLinearConstraint(), EMPTY_EQUATION, TequationInfo::EqType, TequationInfo::equation, TequationInfo::Hessian, TequationInfo::Jacobian, TequationInfo::lc, LINEAR_EQUATION, TequationInfo::n, and NEW. Referenced by CopyEquations().
Defines a first order approximation to a given equation from the information we have of this equation.
Definition at line 458 of file equations.c. References AddTerm2LinearConstraint(), TequationInfo::equation, Error(), EvaluateEquationInt(), GetBoxIntervals(), GetBoxMaxSizeVarSet(), GetBoxNIntervals(), GetEquationValue(), GetEquationVariables(), GetVariableN(), TequationInfo::Hessian, INF, InitLinearConstraint(), IntervalAdd(), IntervalInvert(), IntervalOffset(), IntervalPow(), IntervalProduct(), IntervalScale(), TequationInfo::Jacobian, LowerLimit(), TequationInfo::n, NEW, NewInterval(), SetLinearConstraintError(), and ZERO. Referenced by CropEquation(), and LinearizeGeneralEquationInt().
Computes the linealization error for a given equation for each variable involved in the equation.
Definition at line 616 of file equations.c. References EMPTY_EQUATION, TequationInfo::EqType, TequationInfo::equation, Error(), EvaluateEquationInt(), GetEquationValue(), GetEquationVariables(), GetVariableN(), TequationInfo::Hessian, IntervalAdd(), IntervalOffset(), IntervalPow(), IntervalProduct(), IntervalScale(), IntervalSize(), LINEAR_EQUATION, TequationInfo::n, NEW, and NewInterval(). Referenced by UpdateSplitWeight().
Produces a linear relaxation for a saddle equations of the form . It consists of four planes each derived from a linealization of the saddle funcion at the corners of the x-y box. The same routine is used to linearize single monomial bilineal equations of the form .
Definition at line 1810 of file equations.c. References GEQ, GetBoxIntervals(), GetBoxNIntervals(), GetMonomial(), GetMonomialVariables(), GetOriginalEquation(), GetVariableN(), LEQ, LinearizeGeneralEquation(), LinearizeGeneralEquationInt(), LowerLimit(), NEW, TRUE, and UpperLimit(). Referenced by AddEquation2Simplex().
Produces a linear relaxation for a bilineal monomial equations of the form (an equation formed by a single bilineal monomial). This equation can be seen as a degenerate saddle but a particular treatment results beneficial.
Definition at line 1868 of file equations.c. References GEQ, GetBoxIntervals(), GetBoxNIntervals(), GetEquationValue(), GetMonomial(), GetMonomialVariables(), GetOriginalEquation(), GetVariableN(), LEQ, LinearizeGeneralEquation(), LinearizeGeneralEquationInt(), LowerLimit(), NEW, TRUE, and UpperLimit(). Referenced by AddEquation2Simplex().
Produces a linear relaxation for a parabola equation . It consists of two lines derived from a linear approximation of the parabola at the center of the x interval. Additionaly, we define linear constraints on the extremes of the range of x.
Definition at line 1973 of file equations.c. References EQU, GetBoxIntervals(), GetBoxNIntervals(), GetMonomial(), GetMonomialVariables(), GetOriginalEquation(), GetVariableN(), IntervalCenter(), LEQ, LinearizeGeneralEquationInt(), LowerLimit(), NEW, TRUE, and UpperLimit(). Referenced by AddEquation2Simplex().
Produces a linear relaxation for a circle equation . It consists of two lines derived from a linear approximation of the circle at the center of the x-y box. Additionaly, we define linear constraints for the corners of the x-y box that are out of the circle.
Definition at line 2019 of file equations.c. References GEQ, GetBoxIntervals(), GetBoxNIntervals(), GetEquationCmp(), GetEquationValue(), GetEquationVariables(), GetOriginalEquation(), GetVariableN(), IntervalCenter(), LEQ, LinearizeGeneralEquationInt(), LowerLimit(), NEW, ROUNDDOWN, ROUNDNEAR, TRUE, and UpperLimit(). Referenced by AddEquation2Simplex().
Produces a linear relaxation for a sphere equation . It consists of two lines derived from a linear approximation of the sphere at the center of the x-y-z box. Additionaly, we define linear constraints for the corners of the x-y-z box that are out of the sphere.
Definition at line 2119 of file equations.c. References GEQ, GetBoxIntervals(), GetBoxNIntervals(), GetEquationCmp(), GetEquationValue(), GetEquationVariables(), GetOriginalEquation(), GetVariableN(), IntervalCenter(), LEQ, LinearizeGeneralEquationInt(), LowerLimit(), NEW, ROUNDDOWN, ROUNDNEAR, TRUE, and UpperLimit(). Referenced by AddEquation2Simplex().
Produces a linear relaxation for a general equation. It consists of two lines derived from a linear approximation of the equation at the given point.
Definition at line 2229 of file equations.c. References DeleteLinearConstraint(), GetBoxIntervals(), GetBoxMaxSizeVarSet(), GetEquationVariables(), GetFirstOrderApproximationToEquation(), GetOriginalEquation(), INF, SimplexAddNewConstraint(), and TRUE. Referenced by LinearizeBilinealMonomialEquation(), LinearizeCircleEquation(), LinearizeGeneralEquation(), LinearizeParabolaEquation(), LinearizeSaddleEquation(), and LinearizeSphereEquation().
Produces a linear relaxation for a general equation at the central point of the sub-box defined by the variables involved in the equation using LinearizeGeneralEquationInt.
Definition at line 2253 of file equations.c. References GetBoxIntervals(), GetBoxNIntervals(), GetEquationCmp(), GetEquationVariables(), GetOriginalEquation(), GetVariableN(), IntervalCenter(), LinearizeGeneralEquationInt(), TequationInfo::n, and NEW. Referenced by AddEquation2Simplex(), LinearizeBilinealMonomialEquation(), and LinearizeSaddleEquation().
Deletes the equation information stored in the and frees the allocated memory space.
Definition at line 680 of file equations.c. References DeleteEquation(), DeleteLinearConstraint(), EMPTY_EQUATION, TequationInfo::EqType, TequationInfo::equation, TequationInfo::Hessian, TequationInfo::Jacobian, TequationInfo::lc, LINEAR_EQUATION, and TequationInfo::n. Referenced by AddEquation2Simplex(), and DeleteEquations().
This is the same as AddEquation but it does not take into accoun whether the added equation is empty or whether it is repeated. Moreover, it does not re-order equations in the set. This is used as a sub-function of AddEquation and also when deriving equation sets. In this case it is relevant to obtain an ordered set of equations with the correct size (the same as the input set of equations) even if they are repeated or empty.
Definition at line 1690 of file equations.c. References Tequations::c, COORD_EQ, Tequations::d, DUMMY_EQ, Tequations::e, Tequations::eqEQU, EQU, Tequations::equation, GetEquationCmp(), GetEquationType(), Tequations::m, MEM_DUP, Tequations::n, Tequations::neq, NEW, Tequations::nsEQU, Tequations::polynomial, PolynomialEquation(), Tequations::s, SetEquationInfo(), and SYSTEM_EQ. Referenced by AddEquation(), AddEquationNoSimp(), and DeriveEqualityEquations().
Initializes a set of equations.
Definition at line 720 of file equations.c. References Tequations::c, Tequations::d, Tequations::e, Tequations::eqEQU, Tequations::equation, INIT_NUM_EQUATIONS, Tequations::m, Tequations::mequation, Tequations::mm, Tequations::n, Tequations::neq, NEW, Tequations::nm, Tequations::nsEQU, Tequations::polynomial, Tequations::s, Tequations::scalar, and TRUE. Referenced by DeriveEqualityEquations(), DummifyCuikSystem(), GaussianElimination(), GenerateWorldEquations(), InitCuikSystem(), RemoveEquationsWithVar(), and ReplaceVariableInEquations().
Initializes a set of equations from another set.
Definition at line 755 of file equations.c. References Tequations::c, CopyEquationInfo(), CopyMEquation(), Tequations::d, Tequations::e, Tequations::eqEQU, Tequations::equation, Tequations::m, Tequations::mequation, Tequations::mm, Tequations::n, Tequations::neq, NEW, Tequations::nm, Tequations::nsEQU, Tequations::polynomial, Tequations::s, and Tequations::scalar. Referenced by CopyCuikSystem(), CopyJacobian(), CuikSystemMerge(), DummifyCuikSystem(), GaussianElimination(), GetCSEquations(), RemoveEquationsWithVar(), ReplaceVariableInEquations(), and SimplifyCuikSystem().
Adds a set of equations to another.
Definition at line 802 of file equations.c. References AddEquation(), AddMatrixEquation(), Tequations::eqEQU, Tequations::equation, GetOriginalEquation(), Tequations::m, Tequations::mequation, Tequations::mm, and Tequations::nsEQU. Referenced by CuikSystemMerge().
Checks if a variable is used in non-dummy equations of the set of equations.
Definition at line 822 of file equations.c. References DUMMY_EQ, Tequations::equation, FALSE, GetEquationType(), GetEquationVariables(), GetOriginalEquation(), Tequations::mequation, VarIncluded(), and VarIncludedinMEquation(). Referenced by CSRemoveUnusedVars().
Checks if a variable is used in the set of equations.
Definition at line 847 of file equations.c. References Tequations::equation, FALSE, GetEquationVariables(), GetOriginalEquation(), Tequations::mequation, VarIncluded(), and VarIncludedinMEquation(). Referenced by CSRemoveUnusedVars(), and SampleCuikSystemInBox().
Removes all equations that include a given variable. This is one of the steps to remove a non-used variable from a problem. Therefore, equations that do not include the given variable are also affected by this function: we have to shift all the variable indexes higher than the given one. Dummy equations using the variable are also removed. Hence the name of this function. The use of this function without using function RemoveVariable right immediately after it leaves the cuiksystem in a incoherent state.
Definition at line 869 of file equations.c. References AddEquation(), CopyEquations(), DeleteEquations(), Tequations::equation, Error(), FALSE, FixVariableInEquation(), GetEquationVariables(), GetOriginalEquation(), InitEquations(), Tequations::mequation, Tequations::n, Tequations::nm, ShiftVariablesInMEquation(), VarIncluded(), and VarIncludedinMEquation(). Referenced by CSRemoveUnusedVars().
Replaces a variable by linear combination of variables (including an offset). The use of this function without using function RemoveVariable right immediately after it leaves the cuiksystem in a incoherent state.
Definition at line 912 of file equations.c. References AddEquation(), AddMatrixEquation(), CopyEquations(), DeleteEquations(), Tequations::equation, Error(), FALSE, FixVarInMEquation(), GetLinearConstraintError(), GetLinearConstraintVariable(), GetNumTermsInLinearConstraint(), GetOriginalEquation(), InitEquations(), IntervalCenter(), IntervalSize(), Tequations::mequation, NO_UINT, Tequations::polynomial, ReplaceVariableInEquation(), ReplaceVarInMEquation(), Tequations::scalar, TRUE, and ZERO. Referenced by CSRemoveLCVars(), and CSRemoveVarsWithCtRange().
Operates linearly pairs of equations (scale one of the and then sum them) with the objective of getting a simpler equation (i.e., one with less monomials). The rationale is that equations with less monomials produce simpler problems and, in some cases, they can trigger simplifications that are not evident at first sight. The use of this function without using function RemoveVariable right immediately after it leaves the cuiksystem in a incoherent state.
Definition at line 993 of file equations.c. References AccumulateEquations(), AddEquation(), AddMatrixEquation(), CopyEquation(), CopyEquations(), DeleteEquation(), DeleteEquations(), DUMMY_EQ, EQU, Tequations::equation, FALSE, FindMonomial(), GetEquationCmp(), GetEquationNumVariables(), GetEquationType(), GetMonomial(), GetMonomialCt(), GetNumMonomials(), GetOriginalEquation(), InitEquations(), Tequations::mequation, NEW, Tequations::nm, NO_UINT, NScalarEquations(), PrintEquation(), and TRUE. Referenced by SimplifyCuikSystem().
Number of equations in the set.
Definition at line 1164 of file equations.c. References Tequations::neq. Referenced by DummifyCuikSystem(), GetCSNumEquations(), and UpdateCuikSystem().
Number of scalar equations in the set.
Definition at line 1169 of file equations.c. References Tequations::n. Referenced by CSRemoveLCVars(), and GaussianElimination().
Number of system equations in the set.
Definition at line 1174 of file equations.c. References Tequations::s.
Number of coordenalization equations in the set.
Definition at line 1179 of file equations.c. References Tequations::c.
Number of dummy equations in the set.
Definition at line 1184 of file equations.c. References Tequations::d.
Number of equality equations in the set.
Definition at line 1189 of file equations.c. References Tequations::e. Referenced by ErrorInCSEquations(), ErrorInSimpCSEquations(), ErrorInSolution(), InitJacobian(), and UpdateCuikSystem().
Number of inequality equations in the set.
Definition at line 1194 of file equations.c. References Tequations::e, and Tequations::neq. Referenced by ErrorInInequalities(), ErrorInSimpInequalitiesOnPoint(), InequalitiesHoldOnPoint(), and SimpInequalitiesHoldOnPoint().
Identify polynomial system of equations.
Definition at line 1199 of file equations.c. References Tequations::polynomial. Referenced by CSRemoveLCVars(), IsCSPolynomial(), and SimplifyCuikSystem().
Identifies scalar systems (systems with no matrix equations).
Definition at line 1204 of file equations.c. References Tequations::scalar. Referenced by CuikSystemMerge().
Identify system equations.
Definition at line 1209 of file equations.c. References Tequations::equation, Error(), GetEquationType(), GetOriginalEquation(), Tequations::neq, SYSTEM_EQ, and TRUE. Referenced by PrintEquations().
Identify coordenalization equations.
Definition at line 1220 of file equations.c. References COORD_EQ, Tequations::equation, Error(), GetEquationType(), GetOriginalEquation(), and Tequations::neq. Referenced by PrintEquations(), and RegenerateSolution().
Identify dummy equations.
Definition at line 1229 of file equations.c. References DUMMY_EQ, Tequations::equation, Error(), GetEquationType(), GetOriginalEquation(), and Tequations::neq. Referenced by PrintEquations(), and RegenerateSolution().
Gets the type of a particular equation.
Definition at line 1238 of file equations.c. References Tequations::equation, Error(), GetEquationType(), GetOriginalEquation(), Tequations::neq, NOTYPE_EQ, and SYSTEM_EQ.
Checks if a given equation is already in the set.
Definition at line 1254 of file equations.c. References CmpEquations(), Tequations::equation, FALSE, and GetOriginalEquation(). Referenced by AddEquation().
Gets a box (as an array of parameters is of size m) and uses the equation number ne to reduce the ranges of the variables involved in the equation as much as possible.
Definition at line 1269 of file equations.c. References BILINEAL_MONOMIAL_EQUATION, BoxSaddleClipping(), BoxSphereClipping(), CIRCLE_EQUATION, CopyBox(), CopyInterval(), CropLinearConstraint(), DeleteBox(), DeleteLinearConstraint(), EMPTY_BOX, TequationInfo::EqType, EQU, Tequations::equation, Error(), EvaluateEquationInt(), FALSE, GENERAL_EQUATION, GetBoxIntervals(), GetBoxNIntervals(), GetEquationBounds(), GetEquationCmp(), GetEquationValue(), GetEquationVariables(), GetFirstOrderApproximationToEquation(), GetLinearConstraintError(), GetMonomial(), GetMonomialCt(), GetMonomialVariables(), GetNumMonomials(), GetOriginalEquation(), GetVariableN(), GetVariableTypeN(), INF, Intersect(), IntervalCenter(), IntervalSize(), TequationInfo::lc, LINEAR_EQUATION, LowerLimit(), TequationInfo::n, Tequations::n, Tequations::neq, NEW, NewInterval(), NOT_REDUCED_BOX, PARABOLA_EQUATION, PolynomialEquation(), PrintEquation(), PrintInterval(), RectangleCircleClipping(), RectangleParabolaClipping(), REDUCED_BOX, SADDLE_EQUATION, SetLinearConstraintError(), SimplexExpandBounds(), SPHERE_EQUATION, TRUE, UpperLimit(), VariableSetSize(), and ZERO. Referenced by AddEquation2Simplex(), ReduceBoxEquationWise(), and RegenerateSolution().
Adds an equation to the set and computes its associated information. Empty equations (equations with no monomials) or repeated equations are not added to the set. Moreover, equations are sorted from simplest to more complex.
Definition at line 1723 of file equations.c. References AddEquationInt(), CmpEquations(), Tequations::equation, Error(), GetEquationCmp(), GetEquationType(), GetNumMonomials(), GetOriginalEquation(), HasEquation(), Tequations::n, NOCMP, NormalizeEquation(), and NOTYPE_EQ. Referenced by AddEquation2CS(), DummifyAndAddEquation(), GaussianElimination(), MergeEquations(), RemoveEquationsWithVar(), and ReplaceVariableInEquations().
Adds an equation to the set and computes its associated information. This is like AddEquation but all equations are considered (even the empty or repeated ones) and equations are not sorted. This must be used in equation sets where the order of the equations must be preserved. This happens for some equations sets defined in the Tworld.
Definition at line 1750 of file equations.c. References AddEquationInt(), Error(), GetEquationCmp(), GetEquationType(), NOCMP, and NOTYPE_EQ. Referenced by GenerateWorldEquations().
Adds a matrix equation to the set and computes its associated information.
Definition at line 1759 of file equations.c. References CopyMEquation(), Tequations::e, Tequations::eqEQU, FALSE, HasRotations(), MEM_DUP, Tequations::mequation, Tequations::mm, Tequations::neq, NEW, Tequations::nm, Tequations::nsEQU, NumberScalarEquations(), Tequations::polynomial, Tequations::s, and Tequations::scalar. Referenced by AddMatrixEquation2CS(), DeriveEqualityEquations(), GaussianElimination(), GenerateWorldEquations(), MergeEquations(), and ReplaceVariableInEquations().
Returns a pointer to the n-th scalar equation stored in the set.
Definition at line 1791 of file equations.c. References Tequations::equation, and GetOriginalEquation(). Referenced by CSRemoveLCVars().
Returns a pointer to the n-th equation stored in the set.
Definition at line 1799 of file equations.c. References Tequations::equation, Error(), GetOriginalEquation(), and Tequations::scalar. Referenced by DummifyCuikSystem(), GenerateWorldSingularityEquations(), GetCSEquation(), and GetJacobianEquation().
Adds linear constraints representing the selected equation (i.e., a linear relaxation of the equation) to a simplex tableau. Linear constraints are directly added to the simplex using the information cached in the TequationInfo structure. Non linear equations are linearized using the information stored in the Jacobian and Hessian fields in the corresponding TequationInfo too. Different equations are linearized in a different way
By using small lr2tm_q and lr2tm_s we generate linear relaxations that tightly bound the functions and this reduces the number of iterations to found the solution. The drawnback is that we we add more constraints to the simplex and this slows downs each iteration. Equations that define particular variables (cartesian or dummy ones) are only added to the simplex if the variable is used in any of the other constraints already in the simplex. Otherwise we will add useless constraints. This filter is implemented with the array of booleans usedVar. This array is updated as we add equations to the simplex and is checked to see if defined variables are used before adding the corresponding equation to the simplex. For this to be operative, equations are ordered so that system equations are added first to the simplex, then cartesian equations and, finally, dummyfications equations. There is no need to equations that involves almost constant variables to the simplex. Thus, before adding an EQU equation to the simplex, we evaluate the equations using interval arithmetics and if the result is almost constant(this occurs if the variables involved in the equation are have tiny ranges) we just check if the equation holds or not. If not, the system has no solution. The same applies to inequalities that already hold. An inequality (LEQ, GEQ equations) that trivially holds do not add any constrain to the simplex and, consequently we do not add it to the Tableau.
Definition at line 2287 of file equations.c. References ANY_TYPE_VAR, BILINEAL_MONOMIAL_EQUATION, CIRCLE_EQUATION, CleanInfEquation(), CropEquation(), DeleteEquation(), DeleteEquationInfo(), EMPTY_BOX, TequationInfo::EqType, EQU, Tequations::equation, Error(), EvaluateEquationInt(), FALSE, GENERAL_EQUATION, GEQ, GetBoxIntervals(), GetBoxMinSizeVarSet(), GetEquationCmp(), GetEquationValue(), GetEquationVariables(), GetOriginalEquation(), INF, IntervalOffset(), IntervalSize(), IsInside(), TequationInfo::lc, LEQ, LINEAR_EQUATION, LinearizeBilinealMonomialEquation(), LinearizeCircleEquation(), LinearizeGeneralEquation(), LinearizeParabolaEquation(), LinearizeSaddleEquation(), LinearizeSphereEquation(), LowerLimit(), NEW, PARABOLA_EQUATION, PrintEquation(), PrintInterval(), SADDLE_EQUATION, Tequations::scalar, SetEquationInfo(), SimplexAddNewConstraint(), SPHERE_EQUATION, TRUE, and UpperLimit(). Referenced by ReduceBox().
When the SPLIT_ERROR parameter is set to TRUE, we select the split variable for a box from the linearization error induced by the variables. This function updates the error induced by the variables in a given equation.
Definition at line 2532 of file equations.c. References TequationInfo::EqType, TequationInfo::equation, Tequations::equation, Error(), ErrorDueToVariable(), GetBoxIntervals(), GetBoxNIntervals(), GetEquationVariables(), GetVariableN(), IntervalCenter(), LINEAR_EQUATION, TequationInfo::n, NEW, and Tequations::scalar. Referenced by ComputeSplitDimInt().
Evaluates all equality equations in the set. This includes the equality scalar equations and all matrix equations.
Definition at line 2579 of file equations.c. References EQU, Tequations::equation, EvaluateMEquation(), EvaluateWholeEquation(), GetEquationCmp(), GetEquationType(), GetOriginalEquation(), Tequations::mequation, Tequations::n, Tequations::nm, and SYSTEM_EQ. Referenced by CuikNewtonInBox(), CuikNewtonSimp(), ErrorInCSEquations(), ErrorInSimpCSEquations(), ErrorInSolution(), EvaluateCSEquations(), EvaluateHessian(), EvaluateJacobian(), EvaluateSimpCSEquations(), GetLinkTransformsFromSolution(), and PrintWorldAxes().
Evaluates a subset of the equality equations in the set. This includes the equality scalar equations and some of the matrix equations.
Definition at line 2607 of file equations.c. References EQU, Tequations::equation, EvaluateMEquation(), EvaluateWholeEquation(), GetEquationCmp(), GetOriginalEquation(), MAX_EQ_MATRIX, Tequations::mequation, Tequations::n, and Tequations::nm. Referenced by EvaluateSubSetSimpCSEquations().
Collects information about scalar equality equations to accelerate the evaluation when the equation set is sparse. This happens quite often in the equation systems of the Jacobian. We collect the information with the aim of accelerating the evaluation of these equation systems, which is fundamental in atlas-based tools.
Definition at line 2643 of file equations.c. References EmptyEquation(), Tequations::eqEQU, EQU, Tequations::equation, GetEquationCmp(), GetOriginalEquation(), Tequations::n, NEW, and Tequations::nsEQU. Referenced by CopyJacobian(), EvaluateSubSetEqualitySparseEquations(), InitJacobian(), and SimplifyCuikSystem().
In sparse systems, many equations are empty. This function is a variant of EvaluateEqualityEquations specialy efficient for this kind of systems. IMPORTANT: This function will not work if CacheScalarEQUInfo has not been called before.
Definition at line 2675 of file equations.c. References Tequations::eqEQU, Error(), EvaluateMEquation(), EvaluateWholeEquation(), Tequations::mequation, Tequations::n, Tequations::nm, and Tequations::nsEQU. Referenced by CuikGradientInBox(), EvaluateJacobianInVector(), and EvaluateTransposedJacobianInVector().
In sparse systems, many equations are empty. This function is a variant of EvaluateSubSetEqualityEquations specialy efficient for this kind of systems.
Definition at line 2698 of file equations.c. References CacheScalarEQUInfo(), Tequations::eqEQU, EvaluateMEquation(), EvaluateWholeEquation(), MAX_EQ_MATRIX, Tequations::mequation, Tequations::n, Tequations::nm, and Tequations::nsEQU. Referenced by EvaluateJacobianSubSetInVector(), and EvaluateTransposedJacobianSubSetInVector().
This is a funcition with a very particular purpose. It evaluates a matrix equation M, and it returns M*v[i] for a set of 3D vectors, v[i]. See EvaluateJacobianXVectors for more details on why this is necessary. This function triggeres an error if the equation set includes scalar equations.
Definition at line 2736 of file equations.c. References Error(), EvaluateMEquationXVectors(), Tequations::mequation, Tequations::n, and Tequations::nm. Referenced by EvaluateJacobianXVectors().
Evaluates all inequalities and returns and array with the error in each of them. The error is 0 if the inequality hold.
Definition at line 2755 of file equations.c. References EQU, Tequations::equation, EvaluateEquation(), GEQ, GetEquationCmp(), GetEquationValue(), GetOriginalEquation(), and Tequations::n. Referenced by ErrorInInequalities(), ErrorInSimpInequalitiesOnPoint(), InequalitiesHoldOnPoint(), and SimpInequalitiesHoldOnPoint().
Derives an equation set with respect to a given variable. The derivative is only computed for equality equations.
Definition at line 2780 of file equations.c. References AddEquationInt(), AddMatrixEquation(), DeleteEquation(), DeleteMEquation(), DeriveEquation(), DeriveMEquation(), EQU, Tequations::equation, GetEquationCmp(), GetOriginalEquation(), InitEquations(), Tequations::mequation, Tequations::n, and Tequations::nm. Referenced by InitHessian(), and InitJacobian().
Writes a set of equations into a stream.
Definition at line 2806 of file equations.c. References Tequations::c, Tequations::d, Tequations::equation, GetOriginalEquation(), IsCoordEquation(), IsDummyEquation(), IsSystemEquation(), Tequations::mequation, Tequations::n, Tequations::nm, PrintEquation(), PrintMEquation(), and Tequations::s. Referenced by CSRemoveLCVars(), CSRemoveVarsWithCtRange(), PrintCuikSystem(), PrintCuikSystemWithSimplification(), PrintJacobian(), and SimplifyCuikSystem().
Deletes the information stored in the set of equations and frees the allocated memory space.
Definition at line 2862 of file equations.c. References DeleteEquationInfo(), DeleteMEquation(), Tequations::eqEQU, Tequations::equation, Tequations::mequation, Tequations::n, Tequations::nm, and Tequations::nsEQU. Referenced by DeleteCuikSystem(), DeleteHessian(), DeleteJacobian(), DeleteWorldCS(), DummifyCuikSystem(), GaussianElimination(), RemoveEquationsWithVar(), ReplaceVariableInEquations(), and UnUpdateCuikSystem(). |
Follow us!