ediv_ is same as ediv except returns 0 for 0/0 division, needed for dealing with constraints

release/4.3a0
Frank Dellaert 2009-12-31 10:29:25 +00:00
parent 3fbc857a9e
commit f7d5b517a4
2 changed files with 20 additions and 0 deletions

View File

@ -174,6 +174,18 @@ namespace gtsam {
return c;
}
/* ************************************************************************* */
Vector ediv_(const Vector &a, const Vector &b) {
size_t n = a.size();
assert (b.size()==n);
Vector c(n);
for( size_t i = 0; i < n; i++ ) {
double ai = a(i), bi = b(i);
c(i) = (bi==0.0 && ai==0.0) ? 0.0 : a(i)/b(i);
}
return c;
}
/* ************************************************************************* */
double sum(const Vector &a) {
double result = 0.0;

View File

@ -141,6 +141,14 @@ Vector emul(const Vector &a, const Vector &b);
*/
Vector ediv(const Vector &a, const Vector &b);
/**
* elementwise division, but 0/0 = 0, not inf
* @param a first vector
* @param b second vector
* @return vector [a(i)/b(i)]
*/
Vector ediv_(const Vector &a, const Vector &b);
/**
* sum vector elements
* @param a vector