00001 #include<scil/global.h>
00002 #include<scil/row_constraint.h>
00003 #include<scil/variable.h>
00004 #include<scil/row.h>
00005
00006 using namespace SCIL;
00007
00008 row_constraint::row_constraint(row& r, cons_sense s) : NZV(r.size()), NZC(r.size())
00009 {
00010 row_entry t;
00011 int i=0;
00012 forall(t, r) {
00013 NZV[i]=t.Var;
00014 NZC[i]=t.Coeff;
00015 i++;
00016 }
00017 set_sense(s);
00018 set_rhs(rhs());
00019 }
00020
00021
00022 double row_constraint::rhs()
00023 {
00024 if(NZV[0]==nil) return -NZC[0];
00025 return 0;
00026 }
00027
00028
00029 double row_constraint::coeff(var_obj* v)
00030 {
00031 int i=NZV.binary_search(var(v));
00032 if (i!=-1) return NZC[i];
00033 return 0;
00034 }
00035
00036 void row_constraint::non_zero_entries(row& r)
00037 {
00038 for(int i=0; i<=NZC.high(); i++) {
00039 if(NZV[i]!=nil) r+=row_entry(NZV[i],NZC[i]);
00040 }
00041 }
00042
00043 row_constraint::~row_constraint() {
00044 };
00045