Xmipp  v3.23.11-Nereus
Vector.h
Go to the documentation of this file.
1 /*
2 
3 CONDOR 1.06 - COnstrained, Non-linear, Direct, parallel Optimization
4  using trust Region method for high-computing load,
5  noisy functions
6 Copyright (C) 2004 Frank Vanden Berghen
7 
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation version 2
11 of the License.
12 
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17 
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 
22 If you want to include this tools in any commercial product,
23 you can contact the author at fvandenb@iridia.ulb.ac.be
24 
25 */
26 
27 #ifndef _INCLUDE_VECTOR_H
28 #define _INCLUDE_VECTOR_H
29 
30 //#include <stdlib.h> // for the declaration of NULL
31 #include <cstdio> // for the declaration of FILE*
32 #include <iosfwd>
33 #include "VectorInt.h"
34 
35 class Matrix;
36 
37 class Vector
38 {
39  public:
40  // only use the following method at your own risks!
41  void prepareExtend(int new_extention);
42  void alloc(int n, int ext);
43  typedef struct VectorDataTag
44  {
45  int n,extention;
46  int ref_count;
47  double *p = nullptr;
49  } VectorData;
50  VectorData *d = nullptr;
51 
52 // creation & management of Vector:
53  Vector(int _n=0);
54  Vector(int _n, int _ext);
55  Vector(int _n, double *dd, char externalData=0);
56  Vector(char *filename);
57  Vector(char *line, int guess_on_size);
59 
60  char *getFromLine(char *line);
61  void extend();
62  void setSize(int _n);
63  void exactshape();
64  void print();
65  void save(char *filename, char ascii);
66  void save(FILE *f, char ascii);
67  void appendToMatrixFile(char *saveFileName, char **names=NULL);
68  void setExternalData(int _n, double *dd);
69 
70 // allow shallow copy:
71  Vector clone();
72  void copyFrom(Vector r, int _n=0);
73  Vector( const Vector& P );
74  Vector& operator=( const Vector& P );
75  void destroyCurrentBuffer();
76  ~Vector();
77 
78 // accessor method
79  inline unsigned sz() {return d->n;};
80 // inline double &operator [](int i) { return d->p[i]; };
81  inline int operator==( const Vector Q) { return d==Q.d; };
82  int equals( const Vector Q );
83  operator double*() const { if (d) return d->p; else return NULL; };
84  //double &operator[]( unsigned i) {return p[i];};
85  void setPart(int i, Vector v, int n=0, int ii=0);
86 
87 // simple math tools:
88  double euclidianNorm();
89  double L1Norm();
90  double LnftyNorm();
91  double euclidianDistance(Vector v);
92  double L1Distance(Vector v);
93  double LnftyDistance(Vector v);
94 
95  double square();
96  void multiply(double a);
97  void multiply(Vector R, double a);
98  void zero(int _i=0, int _n=0);
99  void set(double dd);
100  void shift(int s);
101  double scalarProduct(Vector v);
102  void oneByOneMutiply(Vector r);
103  void oneByOneInvert();
104  double mmin();
105  double mmax();
106  bool isNull();
107  Vector operator-( Vector v);
108  Vector operator+( Vector v);
111  void addInPlace(double a, Vector v); // this+=a*v
112  void addInPlace(double a, int i, Matrix m); // this+=a * M(i,:)
113  void transposeAndMultiply(Vector vR, Matrix M); // result in vR
115  void permutIn(Vector vR, VectorInt viP);
116  void permutOut(Vector vR, VectorInt viP);
117 
118 // default return Vector in case of problem in a function
120 
121 };
122 
123 #endif
124 
void permutIn(Vector vR, VectorInt viP)
Definition: Vector.cpp:501
int operator==(const Vector Q)
Definition: Vector.h:81
void appendToMatrixFile(char *saveFileName, char **names=NULL)
Definition: Vector.cpp:612
double LnftyNorm()
Definition: Vector.cpp:264
Definition: Vector.h:37
void save(char *filename, char ascii)
Definition: Vector.cpp:441
int equals(const Vector Q)
Definition: Vector.cpp:135
double LnftyDistance(Vector v)
Definition: Vector.cpp:256
double euclidianNorm()
Definition: Vector.cpp:222
void prepareExtend(int new_extention)
Definition: Vector.cpp:99
Vector operator-=(Vector v)
Definition: Vector.cpp:400
void print()
Definition: Vector.cpp:161
double euclidianDistance(Vector v)
Definition: Vector.cpp:244
void oneByOneMutiply(Vector r)
Definition: Vector.cpp:376
Vector clone()
Definition: Vector.cpp:207
#define i
void setSize(int _n)
Definition: Vector.cpp:112
void setExternalData(int _n, double *dd)
Definition: Vector.cpp:80
char * getFromLine(char *line)
Definition: Vector.cpp:575
double mmin()
Definition: Vector.cpp:340
unsigned sz()
Definition: Vector.h:79
doublereal * b
double L1Norm()
Definition: Vector.cpp:227
Vector(int _n=0)
Definition: Vector.cpp:49
void shift(int s)
Definition: Vector.cpp:490
double * f
void zero(int _i=0, int _n=0)
Definition: Vector.cpp:93
Vector operator+=(Vector v)
Definition: Vector.cpp:408
Vector operator+(Vector v)
Definition: Vector.cpp:390
~Vector()
Definition: Vector.cpp:172
void alloc(int n, int ext)
Definition: Vector.cpp:36
double square()
Definition: Vector.cpp:236
void exactshape()
Definition: Vector.cpp:125
Definition: Matrix.h:38
void oneByOneInvert()
Definition: Vector.cpp:383
void transposeAndMultiply(Vector vR, Matrix M)
Definition: Vector.cpp:297
Vector operator-(Vector v)
Definition: Vector.cpp:366
VectorData * d
Definition: Vector.h:50
void multiply(double a)
Definition: Vector.cpp:281
double L1Distance(Vector v)
Definition: Vector.cpp:272
bool isNull()
Definition: Vector.cpp:358
int m
void addInPlace(double a, Vector v)
Definition: Vector.cpp:416
void diagonalizeAndMultiply(Matrix M)
Definition: Vector.cpp:316
double mmax()
Definition: Vector.cpp:349
double scalarProduct(Vector v)
Definition: Vector.cpp:332
void setPart(int i, Vector v, int n=0, int ii=0)
Definition: Vector.cpp:475
void permutOut(Vector vR, VectorInt viP)
Definition: Vector.cpp:516
struct Vector::VectorDataTag VectorData
void destroyCurrentBuffer()
Definition: Vector.cpp:177
static Vector emptyVector
Definition: Vector.h:119
void extend()
Definition: Vector.cpp:119
Vector & operator=(const Vector &P)
Definition: Vector.cpp:195
void copyFrom(Vector r, int _n=0)
Definition: Vector.cpp:215
int * n
doublereal * a