Main Page | Class List | File List | Class Members | File Members

homogenization.c File Reference

#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <polylib/polylib.h>
#include <polylib/homogenization.h>

Go to the source code of this file.

Functions

evaluedehomogenize_periodic (enode *en)
 homogenization.c copyright 2004-2005 Bavo Nootaert

evaluedehomogenize_polynomial (enode *en)
 dehomogenize a polynomial.

Polyhedronhomogenize (Polyhedron *P, unsigned MAXRAYS)
void dehomogenize_evalue (evalue *ep, int nb_param)
 dehomogenize an evalue.

void dehomogenize_enode (enode *p, int nb_param)
 dehomogenize all evalues in an enode.

Polyhedrondehomogenize_polyhedron (Polyhedron *p, int maxRays)
 dehomogenize a polyhedron.

void dehomogenize_enumeration (Enumeration *en, int nb_params, int maxRays)
 dehomogenize an enumeration.


Function Documentation

void dehomogenize_enode enode p,
int  nb_param
 

dehomogenize all evalues in an enode.

This function is mutually recursive with dehomogenize_evalue.

Definition at line 60 of file homogenization.c.

References dehomogenize_evalue(), enode, evalue, and p.

Referenced by dehomogenize_evalue().

void dehomogenize_enumeration Enumeration en,
int  nb_params,
int  maxRays
 

dehomogenize an enumeration.

Replaces each validity domain and Ehrhart polynomial in the Enumeration en with the dehomogenized form.

Definition at line 155 of file homogenization.c.

References dehomogenize_evalue(), dehomogenize_polyhedron(), Enumeration, _enumeration::EP, maxRays, _enumeration::next, Polyhedron, Polyhedron_Free(), and _enumeration::ValidityDomain.

Referenced by main().

void dehomogenize_evalue evalue ep,
int  nb_param
 

dehomogenize an evalue.

The last parameter (nb_param) is replaced by 1. This function is mutually recursive with dehomogenize_enode.

cannot dehomogenize rationals *

we need to replace the last parameter *

Not the last parameter. Recurse *

Definition at line 31 of file homogenization.c.

References _evalue::d, dehomogenize_enode(), dehomogenize_periodic(), dehomogenize_polynomial(), evalue, free_evalue_refs(), periodic, and value_zero_p.

Referenced by dehomogenize_enode(), dehomogenize_enumeration(), and Polyhedron_Enumerate().

evalue * dehomogenize_periodic enode en  )  [static]
 

homogenization.c copyright 2004-2005 Bavo Nootaert

Definition at line 70 of file homogenization.c.

References _enode::arr, assert, _evalue::d, enode, evalue, periodic, _enode::size, _enode::type, value_assign, value_init, and value_notzero_p.

Referenced by dehomogenize_evalue().

Polyhedron* dehomogenize_polyhedron Polyhedron p,
int  maxRays
 

dehomogenize a polyhedron.

Assume the polyhedron p is homogenous. Returns a new polyhedron.

Definition at line 138 of file homogenization.c.

References Constraints2Polyhedron(), Matrix, Matrix_Alloc(), Matrix_Free(), maxRays, matrix::NbColumns, matrix::NbRows, p, matrix::p, Polyhedron, Polyhedron2Constraints(), and Vector_Copy().

Referenced by dehomogenize_enumeration().

evalue * dehomogenize_polynomial enode en  )  [static]
 

dehomogenize a polynomial.

Assume the enode contains a polynomial in one variable, the homogenous parameter. Returns an new evalue, representing a rational.

enumerate over all coefficients (which are either periodic or rational, but not polynomial) *

add ev (fraction) to num/den *

simplify num/den *

create new evalue representing num/den*

cleanup *

Definition at line 85 of file homogenization.c.

References _enode::arr, assert, _evalue::d, enode, evalue, Gcd(), polynomial, _enode::size, _enode::type, value_addto, value_assign, value_clear, value_division, value_init, value_multiply, value_set_si, and value_zero_p.

Referenced by dehomogenize_evalue().

Polyhedron* homogenize Polyhedron P,
unsigned  MAXRAYS
 

Definition at line 14 of file homogenization.c.

References AddANullColumn(), polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, Matrix, Matrix_Free(), MAXRAYS, matrix::NbColumns, polyhedron::NbConstraints, matrix::NbRows, matrix::p, matrix::p_Init, polyhedron::p_Init, and Polyhedron.

Referenced by Polyhedron_Enumerate().


Generated on Mon Apr 23 19:23:54 2007 for polylib by doxygen 1.3.5