#include "leastsquares.hh"
+#include "warn.hh"
void
Least_squares::OK() const
assert (input.size() > 1);
Real dx = 0.0;
for (int i=1; i < input.size(); i++)
- dx += abs (input[i-1].x() - input[i].x ());
+ dx += abs (input[i-1].x() - input[i].x ());
assert (dx);
}
void
Least_squares::minimise (Real &coef, Real &offset)
{
- OK();
Real sx = 0.0;
Real sy = 0.0;
Real sqx =0.0;
sxy += x*y;
}
int N = input.size();
-
- coef = (N * sxy - sx*sy)/(N*sqx - sqr (sx));
+ coef =0.0;
+ offset =0.;
+
+ Real den = (N*sqx - sqr (sx));
+ if (!N || !den)
+ programming_error ("Least_squares::minimise(): Nothing to minimise");
+ coef = (N * sxy - sx*sy)/den;
offset = (sy - coef * sx)/N;
-
}
else if (head_l_arr_.size ())
return sign (head_positions_interval().center ());
- assert (false);
+ programming_error ("Note column without heads and stem!");
return CENTER;
}
void
Rhythmic_column_engraver::acknowledge_element (Score_element_info i)
{
+ if (get_property ("weAreGraceContext",0).to_bool () !=
+ (i.elem_l_->get_elt_property (grace_scm_sym) != SCM_BOOL_F))
+ return ;
+
Item * item = dynamic_cast <Item *> (i.elem_l_);
if (Stem*s=dynamic_cast<Stem *> (item))
{