00001
00002
00003
00004
00005
00006
00007 #ifndef _vector_H_
00008 #define _vector_H_
00009 #if (defined(__STDC__) || defined(__cplusplus))
00010
00011 #if defined(__cplusplus)
00012 extern "C" {
00013 #endif
00014
00015 extern void Factorial(int n,Value *result);
00016 extern void Binomial(int n,int p,Value *result);
00017 extern void CNP(int a,int b,Value *result);
00018 extern void Gcd(Value a,Value b,Value *result);
00019 extern int First_Non_Zero(Value *p, unsigned length);
00020 extern Vector *Vector_Alloc(unsigned length);
00021 extern void Vector_Free(Vector *vector);
00022 extern void Vector_Print(FILE *Dst,char *Format,Vector *Vec);
00023 extern Vector *Vector_Read(void);
00024 extern void Vector_Set(Value *p,int n,unsigned length);
00025 extern void Vector_Exchange(Value *p1, Value *p2, unsigned length);
00026 extern void Vector_Copy(Value *p1, Value *p2, unsigned length);
00027 extern void Vector_Add(Value *p1,Value *p2,Value *p3,unsigned length);
00028 extern void Vector_Sub(Value *p1,Value *p2,Value *p3,unsigned length);
00029 extern void Vector_Or(Value *p1,Value *p2,Value *p3,unsigned length);
00030 extern void Vector_Scale(Value *p1, Value *p2, Value lambda, unsigned
00031 length);
00032 extern void Vector_AntiScale(Value *p1,Value *p2,Value lambda,
00033 unsigned length);
00034 extern void Inner_Product(Value *p1,Value *p2,unsigned length, Value *result);
00035 extern void Vector_Max(Value *p,unsigned length, Value *result);
00036 extern void Vector_Min(Value *p,unsigned length, Value *result);
00037 extern void Vector_Combine(Value *p1,Value *p2,Value *p3,Value
00038 lambda, Value mu, unsigned length);
00039 extern int Vector_Equal(Value *Vec1,Value *Vec2,unsigned n);
00040 extern void Vector_Min_Not_Zero(Value *p,unsigned length,int *index,Value
00041 *result);
00042 extern void Vector_Gcd(Value *p,unsigned length,Value *result);
00043 extern void Vector_Map(Value *p1,Value *p2,Value *p3,unsigned
00044 length, Value *(*f)());
00045 extern void Vector_Normalize(Value *p,unsigned length);
00046 extern void Vector_Normalize_Positive(Value *p,int length,
00047 int pos);
00048 extern void Vector_Reduce(Value *p,unsigned length,
00049 void(*f)(Value,Value *),Value *result);
00050 extern void Vector_Sort(Value *vector,unsigned n);
00051
00052 #if defined(__cplusplus)
00053 }
00054 #endif
00055
00056 #else
00057
00058 extern void Factorial();
00059 extern void Binomial();
00060 extern void CNP();
00061 extern void Gcd();
00062 extern int First_Non_Zero();
00063 extern Vector *Vector_Alloc();
00064 extern void Vector_Free();
00065 extern void Vector_Print();
00066 extern Vector *Vector_Read();
00067 extern void Vector_Set();
00068 extern void Vector_Exchange();
00069 extern void Vector_Copy();
00070 extern void Vector_Add();
00071 extern void Vector_Sub();
00072 extern void Vector_Or();
00073 extern void Vector_Scale(
00074 );
00075 extern void Vector_AntiScale(
00076 );
00077 extern void Inner_Product();
00078 extern void Vector_Max();
00079 extern void Vector_Min();
00080 extern void Vector_Combine(
00081 );
00082 extern int Vector_Equal();
00083 extern void Vector_Min_Not_Zero(
00084 );
00085 extern void Vector_Gcd();
00086 extern void Vector_Map(
00087 );
00088 extern void Vector_Normalize();
00089 extern void Vector_Normalize_Positive(
00090 );
00091 extern void Vector_Reduce(
00092 );
00093 extern void Vector_Sort();
00094
00095
00096 #endif
00097 #endif
00098
00099
00100
00101
00102
00103
00104
00105