polylib 5.22.8
vector.c File Reference
#include <polylib/polylib.h>
#include <stdio.h>
#include <stdlib.h>

Go to the source code of this file.

Classes

struct  cache_holder
 

Macros

#define MAX_CACHE_SIZE   20
 

Functions

void Factorial (int n, Value *fact)
 
void Binomial (int n, int p, Value *result)
 
void CNP (int a, int b, Value *result)
 
void Gcd (Value a, Value b, Value *result)
 
int First_Non_Zero (Value *p, unsigned length)
 
VectorVector_Alloc (unsigned length)
 
void Vector_Free (Vector *vector)
 
void Vector_Print (FILE *Dst, const char *Format, Vector *vector)
 
VectorVector_Read ()
 
void Vector_Set (Value *p, int n, unsigned length)
 
void Vector_Exchange (Value *p1, Value *p2, unsigned length)
 
void Vector_Copy (Value *p1, Value *p2, unsigned length)
 
void Vector_Add (Value *p1, Value *p2, Value *p3, unsigned length)
 
void Vector_Sub (Value *p1, Value *p2, Value *p3, unsigned length)
 
void Vector_Or (Value *p1, Value *p2, Value *p3, unsigned length)
 
void Vector_Scale (Value *p1, Value *p2, Value lambda, unsigned length)
 
void Vector_AntiScale (Value *p1, Value *p2, Value lambda, unsigned length)
 
void Vector_Oppose (Value *p1, Value *p2, unsigned len)
 
void Inner_Product (Value *p1, Value *p2, unsigned length, Value *ip)
 
void Vector_Max (Value *p, unsigned length, Value *max)
 
void Vector_Min (Value *p, unsigned length, Value *min)
 
void Vector_Combine (Value *p1, Value *p2, Value *p3, Value lambda, Value mu, unsigned length)
 
int Vector_Equal (Value *Vec1, Value *Vec2, unsigned n)
 
void Vector_Min_Not_Zero (Value *p, unsigned length, int *index, Value *min)
 
void Vector_Gcd (Value *p, unsigned length, Value *min)
 
void Vector_Map (Value *p1, Value *p2, Value *p3, unsigned length, Value *(*f)(Value, Value))
 
void Vector_Normalize (Value *p, unsigned length)
 
void Vector_Normalize_Positive (Value *p, int length, int pos)
 
void Vector_Reduce (Value *p, unsigned length, void(*f)(Value, Value *), Value *r)
 
void Vector_Sort (Value *vector, unsigned n)
 
int ConstraintSimplify (Value *old, Value *newp, int len, Value *v)
 
int Vector_IsZero (Value *v, unsigned length)
 
Value * value_alloc (int want, int *got)
 
void value_free (Value *p, int size)
 
void free_value_cache ()
 

Variables

cache_holder cache [MAX_CACHE_SIZE]
 Vincent's patch for thread safe value cache. More...
 
static int cache_size = 0
 

Macro Definition Documentation

◆ MAX_CACHE_SIZE

#define MAX_CACHE_SIZE   20

Definition at line 746 of file vector.c.

Function Documentation

◆ Binomial()

void Binomial ( int  n,
int  p,
Value *  result 
)

Definition at line 43 of file vector.c.

References Factorial(), n, value_clear, value_division, value_init, value_multiply, and value_set_si.

◆ CNP()

void CNP ( int  a,
int  b,
Value *  result 
)

Definition at line 72 of file vector.c.

References value_clear, value_division, value_init, value_multiply, and value_set_si.

◆ ConstraintSimplify()

int ConstraintSimplify ( Value *  old,
Value *  newp,
int  len,
Value *  v 
)

◆ Factorial()

void Factorial ( int  n,
Value *  fact 
)

Definition at line 25 of file vector.c.

References n, value_clear, value_init, value_multiply, and value_set_si.

Referenced by Binomial().

◆ First_Non_Zero()

int First_Non_Zero ( Value *  p,
unsigned  length 
)

◆ free_value_cache()

void free_value_cache ( void  )

Definition at line 853 of file vector.c.

References assert, cache, cache_size, MAX_CACHE_SIZE, cache_holder::size, and value_clear.

Referenced by polylib_close().

◆ Gcd()

void Gcd ( Value  a,
Value  b,
Value *  result 
)

Definition at line 99 of file vector.c.

References value_absolute, value_assign, value_clear, value_init, value_modulus, and value_notzero_p.

Referenced by Lcm3().

◆ Inner_Product()

void Inner_Product ( Value *  p1,
Value *  p2,
unsigned  length,
Value *  ip 
)

Definition at line 376 of file vector.c.

References value_addmul, value_multiply, and value_set_si.

Referenced by lower_upper_bounds(), and test_Constraints_fullDimensionize().

◆ value_alloc()

Value * value_alloc ( int  want,
int *  got 
)

◆ value_free()

void value_free ( Value *  p,
int  size 
)

Definition at line 827 of file vector.c.

References assert, cache, cache_size, MAX_CACHE_SIZE, cache_holder::p, cache_holder::size, and value_clear.

Referenced by Matrix_Free(), and Polyhedron_Free().

◆ Vector_Add()

void Vector_Add ( Value *  p1,
Value *  p2,
Value *  p3,
unsigned  length 
)

Definition at line 273 of file vector.c.

References value_addto.

◆ Vector_Alloc()

◆ Vector_AntiScale()

void Vector_AntiScale ( Value *  p1,
Value *  p2,
Value  lambda,
unsigned  length 
)

◆ Vector_Combine()

void Vector_Combine ( Value *  p1,
Value *  p2,
Value *  p3,
Value  lambda,
Value  mu,
unsigned  length 
)

◆ Vector_Copy()

◆ Vector_Equal()

int Vector_Equal ( Value *  Vec1,
Value *  Vec2,
unsigned  n 
)

Definition at line 443 of file vector.c.

References n, and value_ne.

Referenced by Remove_Redundants().

◆ Vector_Exchange()

void Vector_Exchange ( Value *  p1,
Value *  p2,
unsigned  length 
)

Definition at line 243 of file vector.c.

References value_swap.

Referenced by Chernikova(), Gauss4(), GaussSimplify(), hermite(), RaySort(), Remove_Redundants(), and SortConstraints().

◆ Vector_Free()

◆ Vector_Gcd()

◆ Vector_IsZero()

int Vector_IsZero ( Value *  v,
unsigned  length 
)

Definition at line 724 of file vector.c.

References value_notzero_p, value_set_si, and value_zero_p.

Referenced by eliminable_vars(), and int_ker().

◆ Vector_Map()

void Vector_Map ( Value *  p1,
Value *  p2,
Value *  p3,
unsigned  length,
Value *(*)(Value, Value)  f 
)

Definition at line 533 of file vector.c.

References value_assign.

◆ Vector_Max()

void Vector_Max ( Value *  p,
unsigned  length,
Value *  max 
)

Definition at line 390 of file vector.c.

References max, value_assign, and value_maximum.

◆ Vector_Min()

void Vector_Min ( Value *  p,
unsigned  length,
Value *  min 
)

Definition at line 407 of file vector.c.

References min, value_assign, and value_minimum.

◆ Vector_Min_Not_Zero()

void Vector_Min_Not_Zero ( Value *  p,
unsigned  length,
int *  index,
Value *  min 
)

◆ Vector_Normalize()

void Vector_Normalize ( Value *  p,
unsigned  length 
)

◆ Vector_Normalize_Positive()

void Vector_Normalize_Positive ( Value *  p,
int  length,
int  pos 
)

◆ Vector_Oppose()

void Vector_Oppose ( Value *  p1,
Value *  p2,
unsigned  len 
)

Definition at line 366 of file vector.c.

References value_oppose.

Referenced by Gauss4().

◆ Vector_Or()

void Vector_Or ( Value *  p1,
Value *  p2,
Value *  p3,
unsigned  length 
)

Definition at line 315 of file vector.c.

References value_orto.

◆ Vector_Print()

void Vector_Print ( FILE *  Dst,
const char *  Format,
Vector vector 
)

Definition at line 177 of file vector.c.

References Vector::p, P_VALUE_FMT, Vector::Size, and value_print.

Referenced by main().

◆ Vector_Read()

Vector * Vector_Read ( void  )

Definition at line 197 of file vector.c.

References errormsg1(), Vector::p, s, value_read, and Vector_Alloc().

◆ Vector_Reduce()

void Vector_Reduce ( Value *  p,
unsigned  length,
void(*)(Value, Value *)  f,
Value *  r 
)

Definition at line 591 of file vector.c.

References value_assign.

◆ Vector_Scale()

void Vector_Scale ( Value *  p1,
Value *  p2,
Value  lambda,
unsigned  length 
)

Definition at line 336 of file vector.c.

References value_multiply.

Referenced by Param_Polyhedron_Scale_Integer(), and Remove_Redundants().

◆ Vector_Set()

◆ Vector_Sort()

void Vector_Sort ( Value *  vector,
unsigned  n 
)

Definition at line 608 of file vector.c.

References n, value_assign, value_clear, value_init, and value_lt.

◆ Vector_Sub()

void Vector_Sub ( Value *  p1,
Value *  p2,
Value *  p3,
unsigned  length 
)

Definition at line 294 of file vector.c.

References value_subtract.

Variable Documentation

◆ cache

Vincent's patch for thread safe value cache.

each thread has it's own cache and size.
02/2012

Definition at line 777 of file vector.c.

Referenced by free_value_cache(), value_alloc(), and value_free().

◆ cache_size

int cache_size = 0
static

Definition at line 778 of file vector.c.

Referenced by free_value_cache(), value_alloc(), and value_free().