Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00011 #include <fvar.hpp>
00012 #ifdef __TURBOC__
00013 #pragma hdrstop
00014 #endif
00015
00016 #include <string.h>
00017 int save_identifier_string(const char*);
00018 void verify_identifier_string(const char*);
00019
00020
00021
00022 long int reset_gs_stack(void);
00023 void reset_gs_stack(long int);
00024
00025 #ifndef OPT_LIB
00026 #define CHK_ID_STRING
00027 #endif
00028
00034 dvar_vector_position::dvar_vector_position(const dvar_vector& v)
00035 {
00036 min=v.indexmin();
00037 max=v.indexmax();
00038 va=v.get_va();
00039 }
00040
00046 dvector_position::dvector_position(const dvector& vv)
00047 {
00048 min=vv.indexmin();
00049 max=vv.indexmax();
00050 v=vv.get_v();
00051 }
00055 dvar_vector_position::dvar_vector_position(const dvar_vector_position& dvp)
00056 {
00057 min=dvp.min;
00058 max=dvp.max;
00059 va=dvp.va;
00060 }
00064 dvector_position::dvector_position(const dvector_position& dvp)
00065 {
00066 min=dvp.min;
00067 max=dvp.max;
00068 v=dvp.v;
00069 }
00073 dvar_vector_position::dvar_vector_position(void)
00074 {
00075 min=0;
00076 max=-1;
00077 va=0;
00078 }
00082 dvector_position::dvector_position(void)
00083 {
00084 min=0;
00085 max=-1;
00086 v=0;
00087 }
00088
00093 ivector_position::ivector_position(const ivector& iv)
00094 {
00095 min=iv.indexmin();
00096 max=iv.indexmax();
00097 v=iv.get_v();
00098 }
00102 ivector_position::ivector_position(const ivector_position& dvp)
00103 {
00104 min=dvp.min;
00105 max=dvp.max;
00106 v=dvp.v;
00107 }
00111 ivector_position::ivector_position(void)
00112 {
00113 min=0;
00114 max=-1;
00115 v=0;
00116 }
00121 double& dvar_vector_position::operator()(const int& i)
00122 {
00123 if (i<min||i>max)
00124 {
00125 cerr << "Error -- Index out of bounds in\n"
00126 "double_and_int& dvar_vector_position::operator()(const int& i)"
00127 << endl;
00128 ad_exit(1);
00129 }
00130 return va[i].x;
00131 }
00132
00137 dvar_vector_position dvar_matrix_position::operator () (int i)
00138 {
00139 if (i<row_min||i>row_max)
00140 {
00141 cerr << "Index out of range in\n"
00142 " dvar_vector_position dvar_matrix_position::operator () (int i)"
00143 << endl;
00144 }
00145 dvar_vector_position tmp;
00146 tmp.min=lb(i);
00147 tmp.max=ub(i);
00148 tmp.va=(double_and_int *) ptr(i);
00149 return tmp;
00150 }
00151
00156 dvector_position dmatrix_position::operator () (int i)
00157 {
00158 if (i<row_min||i>row_max)
00159 {
00160 cerr << "Index out of range in\n"
00161 " dvector_position dmatrix_position::operator () (int i)"
00162 << endl;
00163 }
00164 dvector_position tmp;
00165 tmp.min=lb(i);
00166 tmp.max=ub(i);
00167 tmp.v=(double *) ptr(i);
00168 return tmp;
00169 }
00170
00175 dvar_matrix_position::dvar_matrix_position(const dvar_matrix& m,int x)
00176 : lb(m.rowmin(),m.rowmax()), ub(m.rowmin(),m.rowmax()),
00177 ptr(m.rowmin(),m.rowmax())
00178
00179 {
00180 row_min=m.rowmin();
00181 row_max=m.rowmax();
00182 for (int i=row_min;i<=row_max;i++)
00183 {
00184 if (allocated(m(i)))
00185 {
00186 lb(i)=m(i).indexmin();
00187 ub(i)=m(i).indexmax();
00188 ptr(i)=m(i).get_va();
00189 }
00190 else
00191 {
00192 lb(i)=0;
00193 ub(i)=-1;
00194 ptr(i)=0;
00195 }
00196 }
00197 }
00198
00203 dmatrix_position::dmatrix_position(const dmatrix& m)
00204 : lb(m.rowmin(),m.rowmax()), ub(m.rowmin(),m.rowmax()),
00205 ptr(m.rowmin(),m.rowmax())
00206 {
00207 row_min=m.rowmin();
00208 row_max=m.rowmax();
00209 for (int i=row_min;i<=row_max;i++)
00210 {
00211 lb(i)=m(i).indexmin();
00212 ub(i)=m(i).indexmax();
00213 ptr(i)=m(i).get_v();
00214 }
00215 }
00216
00221 dvar_matrix_position::dvar_matrix_position(int min,int max)
00222 : lb(min,max), ub(min,max), ptr(min,max)
00223 {
00224 row_min=min;
00225 row_max=max;
00226 for (int i=row_min;i<=row_max;i++)
00227 {
00228 lb(i)=0;
00229 ub(i)=-1;
00230 ptr(i)=0;
00231 }
00232 }
00233
00238 dmatrix_position::dmatrix_position(int min,int max)
00239 : lb(min,max), ub(min,max), ptr(min,max)
00240 {
00241 row_min=min;
00242 row_max=max;
00243 for (int i=row_min;i<=row_max;i++)
00244 {
00245 lb(i)=0;
00246 ub(i)=-1;
00247 ptr(i)=0;
00248 }
00249 }
00250
00255 dvar_matrix_position::dvar_matrix_position(const dvar_matrix_position& p)
00256 : lb(p.row_min,p.row_max), ub(p.row_min,p.row_max),
00257 ptr(p.row_min,p.row_max)
00258 {
00259 row_min=p.row_min;
00260 row_max=p.row_max;
00261 lb=p.lb;
00262 ub=p.ub;
00263 ptr=p.ptr;
00264
00265 }
00269 dmatrix_position::dmatrix_position(const dmatrix_position& p)
00270 : lb(p.row_min,p.row_max), ub(p.row_min,p.row_max),
00271 ptr(p.row_min,p.row_max)
00272 {
00273 row_min=p.row_min;
00274 row_max=p.row_max;
00275 lb=p.lb;
00276 ub=p.ub;
00277 ptr=p.ptr;
00278 }
00287 int save_identifier_string(const char* str)
00288 {
00289 #if defined(CHK_ID_STRING)
00290
00291 size_t length=strlen(str);
00292 gradient_structure::get_fp()->fwrite(str,length);
00293 #endif
00294 return 0;
00295 }