3 #ifndef CH_MATRIX_CLASSES__MATOP_HXX 4 #define CH_MATRIX_CLASSES__MATOP_HXX 19 #if defined(WITH_BLAS) || defined(BLAS_GENMULT) 26 #include "CBconfig.hxx" 77 inline void mat_xea( Integer len, Val *x,
const Val a)
79 const Val*
const xend=x+len;
91 inline void mat_xea( Integer len, Val *x,
const Integer incx,
94 const Val*
const xend=x+len*incx;
105 inline void mat_xey( Integer len,
double *x,
const double* y)
107 cblas_dcopy(len,y,1,x,1);
117 inline void mat_xey( Integer len, Val *x,
const Val* y)
119 const Val*
const xend=x+len;
132 inline void mat_xey( Integer len,
double *x,
const Integer incx,
133 const double* y,
const Integer incy)
135 cblas_dcopy(len,y,incy,x,incx);
147 inline void mat_xey( Integer len, Val *x,
const Integer incx,
148 const Val *y,
const Integer incy)
150 const Val*
const xend=x+len*incx;
151 for(;x!=xend;x+=incx,y+=incy)
161 inline void mat_xmey( Integer len,
double *x,
164 cblas_daxpy(len,-1.,y,1,x,1);
174 inline void mat_xmey( Integer len, Val *x,
const Val *y)
176 const Val*
const xend=x+len;
189 inline void mat_xmey( Integer len,
double *x,
const Integer incx,
190 const double *y,
const Integer incy)
192 cblas_daxpy(len,-1.,y,incy,x,incx);
204 inline void mat_xmey( Integer len, Val *x,
const Integer incx,
205 const Val *y,
const Integer incy)
207 const Val*
const xend=x+len*incx;
208 for(;x!=xend;x+=incx,y+=incy)
217 inline void mat_xemx( Integer len,
double *x)
219 cblas_dscal(len,-1.,x,1);
230 const Val*
const xend=x+len;
241 inline void mat_xemx( Integer len,
double *x,
const Integer incx)
243 cblas_dscal(len,-1.,x,incx);
253 inline void mat_xemx( Integer len, Val *x,
const Integer incx)
255 const Val*
const xend=x+len*incx;
256 for(;x!=xend;x+=incx)
266 inline void mat_xemy( Integer len,
double *x,
const double *y)
268 cblas_dcopy(len,y,1,x,1);
269 cblas_dscal(len,-1.,x,1);
279 inline void mat_xemy( Integer len, Val *x,
const Val *y)
281 const Val*
const xend=x+len;
294 inline void mat_xemy( Integer len,
double *x,
const Integer incx,
295 const double *y,
const Integer incy)
297 cblas_dcopy(len,y,incy,x,incx);
298 cblas_dscal(len,-1.,x,incx);
310 inline void mat_xemy( Integer len, Val *x,
const Integer incx,
311 const Val *y,
const Integer incy)
313 const Val*
const xend=x+len*incx;
314 for(;x!=xend;x+=incx,y+=incy)
325 inline void mat_xeya( Integer len,
double *x,
326 const double *y,
double a)
328 cblas_dcopy(len,y,1,x,1);
329 cblas_dscal(len,a,x,1);
341 const Val *y,
const Val a)
355 const Val*
const xend=x+len;
369 inline void mat_xeya( Integer len,
double *x,
const Integer incx,
370 const double *y,
const Integer incy,
double a)
372 cblas_dcopy(len,y,incy,x,incx);
373 cblas_dscal(len,a,x,incx);
386 inline void mat_xeya( Integer len, Val *x,
const Integer incx,
387 const Val *y,
const Integer incy,
const Val a)
401 const Val*
const xend=x+len*incx;
402 for(;x!=xend;x+=incx,y+=incy)
412 inline void mat_xpey( Integer len,
double *x,
415 cblas_daxpy(len,1.,y,1,x,1);
425 inline void mat_xpey( Integer len, Val *x,
const Val *y)
427 const Val*
const xend=x+len;
440 inline void mat_xpey( Integer len,
double *x,
const Integer incx,
441 const double *y,
const Integer incy)
443 cblas_daxpy(len,1.,y,incy,x,incx);
455 inline void mat_xpey( Integer len, Val *x,
const Integer incx,
456 const Val *y,
const Integer incy)
458 const Val*
const xend=x+len*incx;
459 for(;x!=xend;x+=incx,y+=incy)
472 const Val*
const xend=x+len;
485 const Val*
const xend=x+len;
498 inline void mat_xhadey( Integer len, Val *x,
const Integer incx,
499 const Val *y,
const Integer incy)
501 const Val*
const xend=x+len*incx;
502 for(;x!=xend;x+=incx,y+=incy)
515 const Val *y,
const Integer incy)
517 const Val*
const xend=x+len*incx;
518 for(;x!=xend;x+=incx,y+=incy)
529 inline void mat_xpeya( Integer len, Real *x,
530 const Real *y,
const Real a)
532 cblas_daxpy(len,a,y,1,x,1);
544 const Val *y,
const Val a)
556 const Val*
const xend=x+len;
570 inline void mat_xpeya( Integer len, Real *x,
const Integer incx,
571 const Real *y,
const Integer incy,
const Real a)
573 cblas_daxpy(len,a,y,incy,x,incx);
586 inline void mat_xpeya( Integer len, Val *x,
const Integer incx,
587 const Val *y,
const Integer incy,
const Val a)
599 const Val*
const xend=x+len*incx;
600 for(;x!=xend;x+=incx,y+=incy)
613 const Real *y,
const Real a,
const Real b)
615 cblas_dscal(len,b,x,1);
616 cblas_daxpy(len,a,y,1,x,1);
629 const Val *y,
const Val a,
const Val b)
631 const Val*
const xend=x+len;
634 (*x)=b*(*x)+a*(*y++);
652 inline void mat_xbpeya( Integer len, Real *x,
const Integer incx,
653 const Real *y,
const Integer incy,
const Real a,
const Real b)
655 cblas_dscal(len,b,x,incx);
656 cblas_daxpy(len,a,y,incy,x,incx);
670 inline void mat_xbpeya( Integer len, Val *x,
const Integer incx,
671 const Val *y,
const Integer incy,
const Val a,
const Val b)
673 const Val*
const xend=x+len*incx;
675 for(;x!=xend;x+=incx,y+=incy)
679 for(;x!=xend;x+=incx,y+=incy)
690 inline void mat_xpea( Integer len, Val *x,
const Val a)
694 const Val*
const xend=x+len;
706 inline void mat_xpea( Integer len, Val *x,
const Integer incx,
711 const Val*
const xend=x+len*incx;
712 for(;x!=xend;x+=incx)
722 inline void mat_xmultea( Integer len,
double *x,
double a)
724 cblas_dscal(len,a,x,1);
738 const Val*
const xend=x+len;
750 inline void mat_xmultea( Integer len,
double *x,
const Integer incx,
double a)
752 cblas_dscal(len,a,x,incx);
768 const Val*
const xend=x+len*incx;
769 for(;x!=xend;x+=incx)
779 inline void mat_xdivea( Integer len,
double *x,
double a)
781 cblas_dscal(len,1./a,x,1);
795 const Val*
const xend=x+len;
807 inline void mat_xdivea( Integer len,
double *x,
const Integer incx,
double a)
809 cblas_dscal(len,1./a,x,incx);
820 inline void mat_xdivea( Integer len, Val *x,
const Integer incx,
825 const Val*
const xend=x+len*incx;
826 for(;x!=xend;x+=incx)
838 const Val*
const xend=x+len;
850 inline void mat_xmodea( Integer len, Val *x,
const Integer incx,
853 const Val*
const xend=x+len*incx;
854 for(;x!=xend;x+=incx)
865 inline void mat_xeypz( Integer len, Real *x,
869 cblas_dcopy(len,y,1,x,1);
870 cblas_daxpy(len,1.,z,1,x,1);
882 const Val *y,
const Val *z)
884 const Val*
const xend=x+len;
886 (*x++)=(*y++)+(*z++);
899 inline void mat_xeypz( Integer len, Real *x,
const Integer incx,
900 const Real *y,
const Integer incy,
901 const Real *z,
const Integer incz)
903 cblas_dcopy(len,y,incy,x,incx);
904 cblas_daxpy(len,1.,z,incz,x,incx);
918 inline void mat_xeypz( Integer len, Val *x,
const Integer incx,
919 const Val *y,
const Integer incy,
920 const Val *z,
const Integer incz)
922 const Val*
const xend=x+len*incx;
923 for(;x!=xend;x+=incx,y+=incy,z+=incz)
934 inline void mat_xeymz( Integer len, Real *x,
938 cblas_dcopy(len,y,1,x,1);
939 cblas_daxpy(len,-1.,z,1,x,1);
951 const Val *y,
const Val *z)
953 const Val*
const xend=x+len;
955 (*x++)=(*y++)-(*z++);
968 inline void mat_xeymz( Integer len, Real *x,
const Integer incx,
969 const Real *y,
const Integer incy,
970 const Real *z,
const Integer incz)
972 cblas_dcopy(len,y,incy,x,incx);
973 cblas_daxpy(len,-1.,z,incz,x,incx);
987 inline void mat_xeymz( Integer len, Val *x,
const Integer incx,
988 const Val *y,
const Integer incy,
989 const Val *z,
const Integer incz)
991 const Val*
const xend=x+len*incx;
992 for(;x!=xend;x+=incx,y+=incy,z+=incz)
1007 const Real *z,
const Real a,
const Real b)
1009 cblas_dcopy(len,y,1,x,1);
1010 cblas_dscal(len,a,x,1);
1011 cblas_daxpy(len,b,z,1,x,1);
1025 const Val *y,
const Val *z,
const Val a,
const Val b)
1027 const Val*
const xend=x+len;
1029 (*x++)=a*(*y++)+b*(*z++);
1044 inline void mat_xeyapzb( Integer len, Real *x,
const Integer incx,
1045 const Real *y,
const Integer incy,
1046 const Real *z,
const Integer incz,
const Real a,
const Real b)
1048 cblas_dcopy(len,y,incy,x,incx);
1049 cblas_dscal(len,a,x,incx);
1050 cblas_daxpy(len,b,z,incz,x,incx);
1067 const Val *y,
const Integer incy,
1068 const Val *z,
const Integer incz,
const Val a,
const Val b)
1070 const Val*
const xend=x+len*incx;
1071 for(;x!=xend;x+=incx,y+=incy,z+=incz)
1082 inline double mat_ip( Integer len,
const double *x,
const double *y)
1084 return cblas_ddot(len,x,1,y,1);
1096 inline Val
mat_ip( Integer len,
const Val *x,
const Val *y,
const Val* d=0)
1099 const Val*
const xend=x+len;
1105 sum+=(*x++)*(*y++)*(*d++);
1120 inline double mat_ip( Integer len,
const double *x,
const Integer incx,
1121 const double *y,
const Integer incy)
1123 return cblas_ddot(len,x,incx,y,incy);
1138 inline Val
mat_ip( Integer len,
const Val *x,
const Integer incx,
1139 const Val *y,
const Integer incy,
const Val* d=0,
const Integer incd=1)
1142 const Val*
const xend=x+len*incx;
1144 for(;x!=xend;x+=incx,y+=incy)
1147 for(;x!=xend;x+=incx,y+=incy,d+=incd)
1148 sum+=(*x)*(*y)*(*d);
1166 inline Val
mat_ip_dense_sparse(
const Integer lenx,
const Val *x, Integer leny,
const Val *yval,
const Integer* yind,
const Val* d=0)
1169 const Integer*
const yend=yind+leny;
1171 while((yind!=yend)&&(*yind<lenx))
1172 sum+=(*(x+*yind++))*(*yval++);
1174 while((yind!=yend)&&(*yind<lenx)){
1175 sum+=(*(x+*yind))*(*yval++)*(*(d+*yind));
1198 inline Val
mat_ip_sparse_sparse(
const Integer lenx,
const Val *xval,
const Integer* xind,
const Integer leny,
const Val *yval,
const Integer* yind,
const Val* d)
1200 if ((lenx<=0)||(leny<=0))
1203 const Integer*
const xend=xind+lenx;
1204 const Integer*
const yend=yind+leny;
1208 sum+=(*xval++)*(*yval++);
1214 while ((yind!=yend)&&(*yind<*xind)){
1220 while ((xind!=xend)&&(*xind<*yind)){
1224 }
while(xind!=xend);
1229 sum+=(*xval++)*(*yval++)*(*(d+*xind));
1235 while ((yind!=yend)&&(*yind<*xind)){
1241 while ((xind!=xend)&&(*xind<*yind)){
1245 }
while(xind!=xend);
1320 inline double mat_ip( Integer len,
const double *x)
1322 return cblas_ddot(len,x,1,x,1);
1332 inline Val
mat_ip( Integer len,
const Val *x)
1335 const Val*
const xend=x+len;
1351 inline double mat_ip( Integer len,
const double *x,
const Integer incx)
1353 return cblas_ddot(len,x,incx,x,incx);
1364 inline Val
mat_ip( Integer len,
const Val *x,
const Integer incx)
1367 const Val*
const xend=x+len*incx;
1368 for(;x!=xend;x+=incx) {
1386 const Val*
const xend=x+len;
1399 inline Val
mat_sum( Integer len,
const Val *x,
const Integer incx)
1402 const Val*
const xend=x+len*incx;
1403 for(;x!=xend;x+=incx)
1415 inline bool mat_equal( Integer len,
const Val *x,
const Val *y)
1417 const Val*
const xend=x+len;
1433 inline void mat_swap( Integer len,
double *x,
double *y)
1435 cblas_dswap(len,x,1,y,1);
1447 const Val*
const xend=x+len;
1449 {Val h=*x;(*x++)=*y;(*y++)=h;}
1460 inline void mat_swap( Integer len,
double *x,
const Integer incx,
double *y,
const Integer incy)
1462 cblas_dswap(len,x,incx,y,incy);
1474 inline void mat_swap( Integer len, Val *x,
const Integer incx,
1475 Val *y,
const Integer incy)
1477 const Val*
const xend=x+len*incx;
1478 for(;x!=xend;x+=incx,y+=incy)
1479 {Val h=*x;(*x)=*y;(*y)=h;}
1618 code(c),message(mes),mtype(mt){}
1668 #if (CONICBUNDLE_DEBUG>=1) 1679 template<
class Mat1,
class Mat2>
1680 inline void chk_add(
const Mat1& A,
const Mat2& B)
1684 if ((A.rowdim()!=B.rowdim())||(A.coldim()!=B.coldim()))
1686 "dimensions do not match in additive expression",
1691 template<
class Mat1,
class Mat2>
1692 inline void chk_mult(
const Mat1& A,
const Mat2& B,
int atrans=0,
int btrans=0)
1697 ((atrans==0)&&(btrans==0)&&(A.coldim()!=B.rowdim()))
1699 ((atrans==1)&&(btrans==0)&&(A.rowdim()!=B.rowdim()))
1701 ((atrans==0)&&(btrans==1)&&(A.coldim()!=B.coldim()))
1703 ((atrans==1)&&(btrans==1)&&(A.rowdim()!=B.coldim()))
1706 "dimensions do not match in multiplicative expression",
1711 template<
class Mat1,
class Mat2>
1712 inline void chk_rowseq(
const Mat1& A,
const Mat2& B)
1717 if (A.rowdim()!=B.rowdim())
1719 "number of rows do not agree",
1724 template<
class Mat1,
class Mat2>
1725 inline void chk_colseq(
const Mat1& A,
const Mat2& B)
1729 if (A.coldim()!=B.coldim())
1731 "number of columns do not agree",
1736 inline void chk_range(Integer r,Integer c,Integer ubr,Integer ubc)
1739 ((ubr>=0)&&(r>=ubr))||
1740 ((ubc>=0)&&(c>=ubc)))
1741 MEmessage(
MErange(r,ubr,c,ubc,
"index out of range or negative dimension"));
1754 inline void chk_set_init(Mat &A,
bool val){A.set_init(val);}
1762 #define chk_add(x,y) 1764 template<
class Mat1,
class Mat2>
1766 inline void chk_mult(
const Mat1&,
const Mat2&,
int =0,
int =0){}
1768 #define chk_rowseq(x,y) 1769 #define chk_colseq(x,y) 1771 #define chk_range(i,j,ubi,ubj) 1773 #define chk_set_init(x,y) 1775 #define chk_single_range(i,ub) #define chk_single_range(i, ub)
CONICBUNDLE_DEBUG being undefined, the template function is removed. Otherwise it would whether index...
Definition: matop.hxx:1776
#define chk_set_init(x, y)
CONICBUNDLE_DEBUG being undefined, the template function is removed. Otherwise it would allow to set ...
Definition: matop.hxx:1774
int Integer
all integer numbers in calculations and indexing are of this type
Definition: matop.hxx:40
"less"-routine for sorting indices of value arrays by std::sort
Definition: matop.hxx:1488
void mat_xmey(Integer len, Val *x, const Val *y)
Set x[i]=-y[i] for len elements of the arrays x and y.
Definition: matop.hxx:174
void mat_xemy(Integer len, Val *x, const Val *y)
Set x[i]=-y[i] for len elements of the arrays x and y.
Definition: matop.hxx:279
void mat_xmultea(Integer len, Val *x, const Val a)
Set x[i]*=a for len elements of the array x.
Definition: matop.hxx:734
MEmem(Integer s, const char *mes=0, Mtype mt=MTmatrix)
constructor
Definition: matop.hxx:1642
error arises in a message of CH_Matrix_Classes::Indexmatrix
Definition: matop.hxx:1587
std::ostream * materrout
if not zero, this is the output stream for runtime error messages, by default it is set to &std::cout...
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
error arises in a global function
Definition: matop.hxx:1586
void mat_xemx(Integer len, Val *x)
Set x[i]=-x[i] for an array of length len.
Definition: matop.hxx:228
mat_greater_index(const Val *values)
constructor initializing _values
Definition: matop.hxx:1511
void chk_mult(const Mat1 &, const Mat2 &, int=0, int=0)
CONICBUNDLE_DEBUG being undefined, the template function is removed. Otherwise it would check...
Definition: matop.hxx:1766
MEcode code
see MEcode for allowed error types
Definition: matop.hxx:1612
std::default_random_engine mat_std_randgen
optional fast alternative random number generator from std
void mat_xea(Integer len, Val *x, const Val a)
Set x[i]=a for len elements of the array x.
Definition: matop.hxx:77
Integer nr
number of rows
Definition: matop.hxx:1625
Mtype
serves for specifying the source (matrix class or function) of the error
Definition: matop.hxx:1585
Header declaring and (inline) implementing the random number generator CH_Tools::GB_rand.
Integer nr1
number of rows of object 1
Definition: matop.hxx:1650
Integer r
row index
Definition: matop.hxx:1626
Integer nc
number of columsn
Definition: matop.hxx:1627
void mat_xeya(Integer len, Val *x, const Val *y, const Val a)
Set x[i]=a*y[i] for len elements of the arrays x and y.
Definition: matop.hxx:340
const Real eps_Real
machine epsilon for type Real
Definition: matop.hxx:59
mat_less_index(const Val *values)
constructor initializing _values
Definition: matop.hxx:1490
Integer nr2
number of rows of object 2
Definition: matop.hxx:1652
void mat_xeypz(Integer len, Val *x, const Val *y, const Val *z)
Set x[i]=y[i]+z[i] for len elements of the arrays x, y and z.
Definition: matop.hxx:881
void mat_xeymz(Integer len, Val *x, const Val *y, const Val *z)
Set x[i]=y[i]-z[i] for len elements of the arrays x, y and z.
Definition: matop.hxx:950
void mat_xpey(Integer len, Val *x, const Val *y)
Set x[i]+=y[i] for len elements of the arrays x and y.
Definition: matop.hxx:425
void mat_xhadey(Integer len, Val *x, const Val *y)
Set x[i]*=y[i] for len elements of the arrays x and y.
Definition: matop.hxx:470
error arises in a message of CH_Matrix_Classes::Matrix
Definition: matop.hxx:1588
const Val * _values
const pointer to values
Definition: matop.hxx:1522
error due to numerical reasons (e.g. division by zero)
Definition: matop.hxx:1604
const Val * _values
const pointer to values
Definition: matop.hxx:1501
Integer nc1
number of columns of object 1
Definition: matop.hxx:1651
MErange(Integer inr, Integer ir, Integer inc, Integer ic, const char *mes=0, Mtype mt=MTmatrix)
constructor
Definition: matop.hxx:1631
const Integer min_Integer
minimal attainable value by an Integer
Definition: matop.hxx:46
error due to insufficient memory
Definition: matop.hxx:1602
Such an object is generated and passed to MEmessage(), whenever an error occurs. It holds some output...
Definition: matop.hxx:1609
int MEmessage(const MatrixError &)
displays an error message and terminates via abort() or returns 1 in case of warnings.
const char * message
the error mussage pointer must point to existing object and does not get freed
Definition: matop.hxx:1613
void mat_swap(Integer len, Val *x, Val *y)
swap values x[i] and y[i] for len elements of the arrays x and y.
Definition: matop.hxx:1445
error arises in a message of CH_Matrix_Classes::Sparsemat
Definition: matop.hxx:1590
error due to range check
Definition: matop.hxx:1601
Integer nc2
number of columns of object 2
Definition: matop.hxx:1653
Mtype mtype
see Mtype for allowed error source types
Definition: matop.hxx:1614
error arises in a message of CH_Matrix_Classes::Sparsesym
Definition: matop.hxx:1591
bool mat_equal(Integer len, const Val *x, const Val *y)
returns true if the elements of the arrays x and y are exactly equal.
Definition: matop.hxx:1415
MatrixError(MEcode c=ME_unspec, const char *mes=0, Mtype mt=MTmatrix)
there is only this one constructor and no other messages
Definition: matop.hxx:1617
error due to inconsistent dimesions
Definition: matop.hxx:1603
MEcode
serves for specifying the error type.
Definition: matop.hxx:1599
Such an object is generated and passed to MEmessage() whenever a memory allocation fails...
Definition: matop.hxx:1636
Matrix Classes and Linear Algebra. See Matrix Classes (namespace CH_Matrix_Classes) for a quick intro...
Definition: PSCOracle.hxx:20
const Real min_Real
minimal attainable value by a Real
Definition: matop.hxx:56
std::mt19937 mat_mt_randgen
optional high quality alternative random number generator from std
#define chk_add(x, y)
CONICBUNDLE_DEBUG being undefined, the template function is removed. Otherwise it would check...
Definition: matop.hxx:1763
void mat_xey(Integer len, Val *x, const Val *y)
Copy an array of length len to destination x from source y.
Definition: matop.hxx:117
Val mat_ip_sparse_sparse(const Integer lenx, const Val *xval, const Integer *xind, const Integer leny, const Val *yval, const Integer *yind, const Val *d)
return sum(xval[i]*yval[j] for i,j with xind[i]==yind[j]) summing over elements of the sparse array r...
Definition: matop.hxx:1198
void mat_xinvhadey(Integer len, Val *x, const Val *y)
Set x[i]/=y[i] for len elements of the arrays x and y, no zero checking!
Definition: matop.hxx:483
void mat_xmodea(Integer len, Val *x, const Val a)
Set x[i]%=a for len elements of the array x.
Definition: matop.hxx:836
std::mt19937_64 mat_mt64_randgen
optional high quality alternative random number generator from std
const Real max_Real
maximal attainable value by a Real
Definition: matop.hxx:53
Val mat_ip(Integer len, const Val *x, const Val *y, const Val *d=0)
return sum(x[i]*y[i]) summing over len elements of the arrays x and y.
Definition: matop.hxx:1096
void mat_xpeya(Integer len, Val *x, const Val *y, const Val a)
Set x[i]+=a*y[i] for len elements of the arrays x and y.
Definition: matop.hxx:543
Such an object is generated and passed to MEmessage() whenever matrix dimensions do not agree for a d...
Definition: matop.hxx:1647
unspecified error type, not in the list below
Definition: matop.hxx:1600
Val mat_ip_dense_sparse(const Integer lenx, const Val *x, Integer leny, const Val *yval, const Integer *yind, const Val *d=0)
return sum(x[yind[j]]*yval[j]) summing over elements of the dense array x and a sparse array represen...
Definition: matop.hxx:1166
void mat_xbpeya(Integer len, Val *x, const Val *y, const Val a, const Val b)
Set x[i]=a*y[i]+b*x[i] for len elements of the arrays x and y.
Definition: matop.hxx:628
CH_Tools::GB_rand mat_randgen
common random number generator for use when a random matrix is generated.
#define chk_range(i, j, ubi, ubj)
CONICBUNDLE_DEBUG being undefined, the template function is removed. Otherwise it would check...
Definition: matop.hxx:1772
Integer c
column index
Definition: matop.hxx:1628
#define chk_colseq(x, y)
CONICBUNDLE_DEBUG being undefined, the template function is removed. Otherwise it would check...
Definition: matop.hxx:1770
error arises in a message of CH_Matrix_Classes::Symmatrix
Definition: matop.hxx:1589
bool operator()(Integer i, Integer j) const
returns (values[i] > _values[j])
Definition: matop.hxx:1516
Integer sum(const Indexmatrix &A)
returns the sum over all elements of A, i.e., (1 1 ... 1)*A*(1 1 ... 1)^T
MEdim(Integer r1, Integer c1, Integer r2, Integer c2, const char *mes=0, Mtype mt=MTmatrix)
constructor
Definition: matop.hxx:1656
#define chk_init(x)
CONICBUNDLE_DEBUG being undefined, the template function is removed. Otherwise it would check...
Definition: matop.hxx:1761
Such an object is generated and passed to MEmessage() whenever some index is out of range...
Definition: matop.hxx:1622
bool operator()(Integer i, Integer j) const
returns (values[i] < _values[j])
Definition: matop.hxx:1495
void mat_xeyapzb(Integer len, Val *x, const Val *y, const Val *z, const Val a, const Val b)
Set x[i]=a*y[i]+b*z[i] for len elements of the arrays x, y and z.
Definition: matop.hxx:1024
void mat_xpea(Integer len, Val *x, const Val a)
Set x[i]+=a for len elements of the array x.
Definition: matop.hxx:690
#define chk_rowseq(x, y)
CONICBUNDLE_DEBUG being undefined, the template function is removed. Otherwise it would check...
Definition: matop.hxx:1768
no error, but a possible source of difficulties
Definition: matop.hxx:1605
Integer size
memory size requested
Definition: matop.hxx:1639
void mat_xdivea(Integer len, Val *x, const Val a)
Set x[i]/=a for len elements of the array x.
Definition: matop.hxx:791
const Integer max_Integer
maximal attainable value by an Integer
Definition: matop.hxx:43
Val mat_sum(Integer len, const Val *x)
returns sum(x[i]) over len elements of the array x.
Definition: matop.hxx:1383
"greater"-routine for sorting indices of value arrays by std::sort
Definition: matop.hxx:1509