mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-09-21 08:07:14 +03:00
cb5305ab46
git-svn-id: https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder/trunk@1659 1f5c12ca-751b-0410-a591-d2e778427230
43 lines
991 B
C++
43 lines
991 B
C++
#include "Point.h"
|
|
#include<cmath>
|
|
#include <cassert>
|
|
using namespace std;
|
|
void Point::randomize(const vector<lambda>& min,const vector<lambda>& max){
|
|
for (int i=0; i<size(); i++)
|
|
operator[](i)= min[i] + (float)random()/RAND_MAX * (max[i]-min[i]);
|
|
}
|
|
|
|
void Point::normalize(){
|
|
lambda norm=0.0;
|
|
for (int i=0; i<size(); i++)
|
|
norm+= operator[](i)*operator[](i);
|
|
if(norm!=0.0){
|
|
norm=sqrt(norm);
|
|
for (int i=0; i<size(); i++)
|
|
operator[](i)/=norm;
|
|
}
|
|
}
|
|
|
|
double Point::operator*(FeatureStats& F)const{
|
|
double prod=0.0;
|
|
for (int i=0; i<size(); i++)
|
|
prod+= operator[](i)*F.get(i);
|
|
}
|
|
|
|
Point Point::operator+(const Point& p2)const{
|
|
assert(p2.size()==size());
|
|
Point Res(*this);
|
|
for(unsigned i=0;i<size();i++)
|
|
Res[i]+=p2[i];
|
|
Res.score=numeric_limits<statscore>::max();
|
|
return Res;
|
|
};
|
|
|
|
Point Point::operator*(float& l)const{
|
|
Point Res(*this);
|
|
for(unsigned i=0;i<size();i++)
|
|
Res[i]*=l;
|
|
Res.score=numeric_limits<statscore>::max();
|
|
return Res;
|
|
};
|