*** empty log message ***
This commit is contained in:
		
							parent
							
								
									073f9c09d1
								
							
						
					
					
						commit
						3a243630de
					
				
							
								
								
									
										10
									
								
								la_traits.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								la_traits.h
									
									
									
									
									
								
							@ -127,6 +127,7 @@ static inline void put(int fd, const complex<C> &x, bool dimensions=0, bool tran
 | 
				
			|||||||
static void multiget(unsigned int n,int fd, complex<C> *x, bool dimensions=0){if((ssize_t)(n*sizeof(complex<C>))!=read(fd,x,n*sizeof(complex<C>))) laerror("read error");}
 | 
					static void multiget(unsigned int n,int fd, complex<C> *x, bool dimensions=0){if((ssize_t)(n*sizeof(complex<C>))!=read(fd,x,n*sizeof(complex<C>))) laerror("read error");}
 | 
				
			||||||
static void multiput(unsigned int n, int fd, const complex<C> *x, bool dimensions=0) {if((ssize_t)(n*sizeof(complex<C>))!=write(fd,x,n*sizeof(complex<C>))) laerror("write error");}
 | 
					static void multiput(unsigned int n, int fd, const complex<C> *x, bool dimensions=0) {if((ssize_t)(n*sizeof(complex<C>))!=write(fd,x,n*sizeof(complex<C>))) laerror("write error");}
 | 
				
			||||||
static void copy(complex<C> *dest, complex<C> *src, unsigned int n) {memcpy(dest,src,n*sizeof(complex<C>));}
 | 
					static void copy(complex<C> *dest, complex<C> *src, unsigned int n) {memcpy(dest,src,n*sizeof(complex<C>));}
 | 
				
			||||||
 | 
					static void clear(complex<C> *dest, unsigned int n) {memset(dest,0,n*sizeof(complex<C>));}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//non-complex scalars
 | 
					//non-complex scalars
 | 
				
			||||||
@ -145,6 +146,7 @@ static inline void get(int fd, C &x, bool dimensions=0, bool transp=0) {if(sizeo
 | 
				
			|||||||
static void multiput(unsigned int n,int fd, const C *x, bool dimensions=0){if((ssize_t)(n*sizeof(C))!=write(fd,x,n*sizeof(C))) laerror("write error");}
 | 
					static void multiput(unsigned int n,int fd, const C *x, bool dimensions=0){if((ssize_t)(n*sizeof(C))!=write(fd,x,n*sizeof(C))) laerror("write error");}
 | 
				
			||||||
static void multiget(unsigned int n, int fd, C *x, bool dimensions=0) {if((ssize_t)(n*sizeof(C))!=read(fd,x,n*sizeof(C))) laerror("read error");}
 | 
					static void multiget(unsigned int n, int fd, C *x, bool dimensions=0) {if((ssize_t)(n*sizeof(C))!=read(fd,x,n*sizeof(C))) laerror("read error");}
 | 
				
			||||||
static void copy(C *dest, C *src, unsigned int n) {memcpy(dest,src,n*sizeof(C));}
 | 
					static void copy(C *dest, C *src, unsigned int n) {memcpy(dest,src,n*sizeof(C));}
 | 
				
			||||||
 | 
					static void clear(C *dest, unsigned int n) {memset(dest,0,n*sizeof(C));}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -169,6 +171,7 @@ static void get(int fd, C &x, bool dimensions=1, bool transp=0) {x.get(fd,dimens
 | 
				
			|||||||
static void multiput(unsigned int n,int fd, const C *x, bool dimensions=1) {for(unsigned int i=0; i<n; ++i) x[i].put(fd,dimensions);} \
 | 
					static void multiput(unsigned int n,int fd, const C *x, bool dimensions=1) {for(unsigned int i=0; i<n; ++i) x[i].put(fd,dimensions);} \
 | 
				
			||||||
static void multiget(unsigned int n,int fd, C *x, bool dimensions=1) {for(unsigned int i=0; i<n; ++i) x[i].get(fd,dimensions);} \
 | 
					static void multiget(unsigned int n,int fd, C *x, bool dimensions=1) {for(unsigned int i=0; i<n; ++i) x[i].get(fd,dimensions);} \
 | 
				
			||||||
static void copy(C *dest, C *src, unsigned int n) {for(unsigned int i=0; i<n; ++i) dest[i]=src[i];} \
 | 
					static void copy(C *dest, C *src, unsigned int n) {for(unsigned int i=0; i<n; ++i) dest[i]=src[i];} \
 | 
				
			||||||
 | 
					static void clear(C *dest, unsigned int n) {for(unsigned int i=0; i<n; ++i) dest[i]=C(0);}\
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -192,9 +195,10 @@ static inline normtype norm (const NRSMat<C> &x) {return x.norm();}
 | 
				
			|||||||
static inline void axpy (NRSMat<C>&s, const NRSMat<C> &x, const C c) {s.axpy(c,x);} 
 | 
					static inline void axpy (NRSMat<C>&s, const NRSMat<C> &x, const C c) {s.axpy(c,x);} 
 | 
				
			||||||
static void put(int fd, const C &x, bool dimensions=1, bool transp=0) {x.put(fd,dimensions);} 
 | 
					static void put(int fd, const C &x, bool dimensions=1, bool transp=0) {x.put(fd,dimensions);} 
 | 
				
			||||||
static void get(int fd, C &x, bool dimensions=1, bool transp=0) {x.get(fd,dimensions);} 
 | 
					static void get(int fd, C &x, bool dimensions=1, bool transp=0) {x.get(fd,dimensions);} 
 | 
				
			||||||
static void multiput(unsigned int n,int fd, const C *x, bool dimensions=1) {for(unsigned int i=0; i<n; ++i) x[i].put(fd,dimensions);} \
 | 
					static void multiput(unsigned int n,int fd, const C *x, bool dimensions=1) {for(unsigned int i=0; i<n; ++i) x[i].put(fd,dimensions);} 
 | 
				
			||||||
static void multiget(unsigned int n,int fd, C *x, bool dimensions=1) {for(unsigned int i=0; i<n; ++i) x[i].get(fd,dimensions);} \
 | 
					static void multiget(unsigned int n,int fd, C *x, bool dimensions=1) {for(unsigned int i=0; i<n; ++i) x[i].get(fd,dimensions);} 
 | 
				
			||||||
static void copy(C *dest, C *src, unsigned int n) {for(unsigned int i=0; i<n; ++i) dest[i]=src[i];} \
 | 
					static void copy(C *dest, C *src, unsigned int n) {for(unsigned int i=0; i<n; ++i) dest[i]=src[i];} 
 | 
				
			||||||
 | 
					static void clear(C *dest, unsigned int n) {for(unsigned int i=0; i<n; ++i) dest[i]=C(0);}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								laerror.cc
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								laerror.cc
									
									
									
									
									
								
							@ -3,6 +3,11 @@
 | 
				
			|||||||
#include "laerror.h"
 | 
					#include "laerror.h"
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include <errno.h>
 | 
					#include <errno.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef USE_TRACEBACK
 | 
				
			||||||
 | 
					#include "traceback.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void laerror(const char *s1)
 | 
					void laerror(const char *s1)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  std::cerr << "LA:ERROR - ";
 | 
					  std::cerr << "LA:ERROR - ";
 | 
				
			||||||
@ -13,8 +18,13 @@ void laerror(const char *s1)
 | 
				
			|||||||
    std::cout << s1  << "\n";
 | 
					    std::cout << s1  << "\n";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if(errno) perror("system error");
 | 
					  if(errno) perror("system error");
 | 
				
			||||||
  throw LAerror(s1);
 | 
					
 | 
				
			||||||
 | 
					#ifdef USE_TRACEBACK
 | 
				
			||||||
 | 
					  traceback(1);
 | 
				
			||||||
  exit(1);
 | 
					  exit(1);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  throw LAerror(s1); //traceback possible via sigtraceback, but BFD library might fail for -O3 code on some machines and source lines would not be available
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//stub for f77 blas called from strassen routine
 | 
					//stub for f77 blas called from strassen routine
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								mat.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								mat.h
									
									
									
									
									
								
							@ -38,6 +38,7 @@ public:
 | 
				
			|||||||
	const bool operator==(const NRMat &rhs) const {return !(*this != rhs);};
 | 
						const bool operator==(const NRMat &rhs) const {return !(*this != rhs);};
 | 
				
			||||||
	inline int getcount() const {return count?*count:0;}
 | 
						inline int getcount() const {return count?*count:0;}
 | 
				
			||||||
	NRMat & operator=(const NRMat &rhs);  //assignment
 | 
						NRMat & operator=(const NRMat &rhs);  //assignment
 | 
				
			||||||
 | 
					        void clear() {LA_traits<T>::clear((*this)[0],nn*mm);}; //zero out
 | 
				
			||||||
	NRMat & operator=(const T &a);    //assign a to diagonal
 | 
						NRMat & operator=(const T &a);    //assign a to diagonal
 | 
				
			||||||
	NRMat & operator|=(const NRMat &rhs); //assignment to a new copy
 | 
						NRMat & operator|=(const NRMat &rhs); //assignment to a new copy
 | 
				
			||||||
	NRMat & operator+=(const T &a);   //add diagonal
 | 
						NRMat & operator+=(const T &a);   //add diagonal
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								smat.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								smat.h
									
									
									
									
									
								
							@ -23,6 +23,7 @@ public:
 | 
				
			|||||||
	explicit NRSMat(const NRVec<T> &rhs, const int n); //construct matrix from vector
 | 
						explicit NRSMat(const NRVec<T> &rhs, const int n); //construct matrix from vector
 | 
				
			||||||
	NRSMat & operator|=(const NRSMat &rhs);	//assignment to a new copy
 | 
						NRSMat & operator|=(const NRSMat &rhs);	//assignment to a new copy
 | 
				
			||||||
	NRSMat & operator=(const NRSMat &rhs);	//assignment
 | 
						NRSMat & operator=(const NRSMat &rhs);	//assignment
 | 
				
			||||||
 | 
						void clear() {LA_traits<T>::clear(v,NN2);}; //zero out
 | 
				
			||||||
	NRSMat & operator=(const T &a);		//assign a to diagonal
 | 
						NRSMat & operator=(const T &a);		//assign a to diagonal
 | 
				
			||||||
        const bool operator!=(const NRSMat &rhs) const {if(nn!=rhs.nn) return 1; return LA_traits<T>::gencmp(v,rhs.v,NN2);} //memcmp for scalars else elementwise
 | 
					        const bool operator!=(const NRSMat &rhs) const {if(nn!=rhs.nn) return 1; return LA_traits<T>::gencmp(v,rhs.v,NN2);} //memcmp for scalars else elementwise
 | 
				
			||||||
        const bool operator==(const NRSMat &rhs) const {return !(*this != rhs);};
 | 
					        const bool operator==(const NRSMat &rhs) const {return !(*this != rhs);};
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										13
									
								
								test.cc
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								test.cc
									
									
									
									
									
								
							@ -2,10 +2,21 @@
 | 
				
			|||||||
#include "qsort.h"
 | 
					#include "qsort.h"
 | 
				
			||||||
#include "la.h"
 | 
					#include "la.h"
 | 
				
			||||||
#include "fourindex.h"
 | 
					#include "fourindex.h"
 | 
				
			||||||
 | 
					#include "laerror.h"
 | 
				
			||||||
 | 
					#include "traceback.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void test2(char *msg)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					laerror(msg);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(void)
 | 
					int main(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					sigtraceback(SIGSEGV,1);
 | 
				
			||||||
 | 
					sigtraceback(SIGABRT,1);
 | 
				
			||||||
 | 
					sigtraceback(SIGBUS,1);
 | 
				
			||||||
 | 
					sigtraceback(SIGFPE,1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bitvector v(100);
 | 
					bitvector v(100);
 | 
				
			||||||
v.fill();
 | 
					v.fill();
 | 
				
			||||||
bitvector x(50); x=v;
 | 
					bitvector x(50); x=v;
 | 
				
			||||||
@ -37,6 +48,8 @@ cout<<t;
 | 
				
			|||||||
NRSMat_from1<double> a(5),b(5),c;
 | 
					NRSMat_from1<double> a(5),b(5),c;
 | 
				
			||||||
c=a+b;
 | 
					c=a+b;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test2("pokus");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fourindex<int,double> f;
 | 
					fourindex<int,double> f;
 | 
				
			||||||
fourindex_dense<twoelectronrealmullikan,double,int> ff(f);
 | 
					fourindex_dense<twoelectronrealmullikan,double,int> ff(f);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								vec.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								vec.h
									
									
									
									
									
								
							@ -52,6 +52,7 @@ public:
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
	NRVec & operator=(const NRVec &rhs);
 | 
						NRVec & operator=(const NRVec &rhs);
 | 
				
			||||||
	NRVec & operator=(const T &a);  //assign a to every element
 | 
						NRVec & operator=(const T &a);  //assign a to every element
 | 
				
			||||||
 | 
						void clear() {LA_traits<T>::clear(v,nn);}; //zero out
 | 
				
			||||||
	NRVec & operator|=(const NRVec &rhs);
 | 
						NRVec & operator|=(const NRVec &rhs);
 | 
				
			||||||
	const bool operator!=(const NRVec &rhs) const {if(nn!=rhs.nn) return 1; return LA_traits<T>::gencmp(v,rhs.v,nn);} //memcmp for scalars else elementwise
 | 
						const bool operator!=(const NRVec &rhs) const {if(nn!=rhs.nn) return 1; return LA_traits<T>::gencmp(v,rhs.v,nn);} //memcmp for scalars else elementwise
 | 
				
			||||||
	const bool operator==(const NRVec &rhs) const {return !(*this != rhs);};
 | 
						const bool operator==(const NRVec &rhs) const {return !(*this != rhs);};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user