18 #ifndef __MATHVECTOR_H__
19 #define __MATHVECTOR_H__
21 #include "StringBasics.h"
54 Vector(
const char * text,
int d)
69 void Dimension(
int d);
70 void Dimension(
int d,
double value);
74 Dimension(d > dim ? d : dim);
76 void GrowTo(
int d,
double value)
78 Dimension(d > dim ? d : dim, value);
86 void SetLabel(
const char * text)
97 void SetMultiple(
double k,
Vector & v);
101 void Multiply(
double k);
103 double InnerProduct(
Vector & v);
104 void Copy(
const Vector & v);
106 void AddMultiple(
double k,
Vector & v);
107 void Subtract(
Vector & v);
111 double & operator [](
int n)
116 double operator [](
int n)
const
122 double operator [](
double fraction)
124 return data[(int)(dim * fraction)];
126 double & operator [](
double fraction)
const
128 return data[(int)(dim * fraction)];
132 bool operator == (
const Vector & v)
const;
133 bool operator != (
const Vector & v)
const
135 return !(*
this == v);
138 void Swap(
int i,
int j)
140 double swap = data[i];
146 Vector & operator *= (
double rhs)
151 Vector & operator += (
double rhs)
156 Vector & operator -= (
double rhs)
158 return *
this += -rhs;
160 Vector & operator /= (
double rhs)
162 return *
this *= 1/rhs;
176 void DeleteDimension(
int n);
181 void Insert(
int n,
double value);
184 void AveVar(
double & ave,
double & var)
const;
185 double Average()
const;
187 double StandardDeviation()
const;
189 double Average(
double returnIfNull);
190 double Var(
double returnIfNull);
191 double StandardDeviation(
double returnIfNull);
195 double SumSquares()
const;
196 double Product()
const;
203 int CountIfGreater(
double treshold)
const;
204 int CountIfGreaterOrEqual(
double treshold)
const;
207 void Stack(
const Vector & v);
209 void Print(
int maxDim = -1)
211 Print(stdout, maxDim);
213 void Print(FILE * output,
int maxDim = -1);
218 void Sort(
Vector & freeRider);
219 int BinarySearch(
double value);
220 int FastFind(
double value)
222 return BinarySearch(value);
226 void RemoveDuplicates();
237 return data[dim - 1];
247 void Push(
double value);
260 void InsertInSortedList(
int item);
270 int SafeCount()
const;
271 double SafeMin()
const;
272 double SafeMax()
const;
275 static int CompareDouble(
const double * a,
const double * b);
298 virtual double Evaluate(
Vector & v);
302 virtual void Derivative(
Vector & point,
Vector & d,
double delta = 1.0);