00001
00003 inline _dcovector operator+(const _dcovector& vecA, const _dcovector& vecB)
00004 {
00005 #ifdef CPPL_VERBOSE
00006 std::cerr << "# [MARK] operator+(const _dcovector&, const _dcovector&)"
00007 << std::endl;
00008 #endif//CPPL_VERBOSE
00009
00010 #ifdef CPPL_DEBUG
00011 if(vecA.L!=vecB.L){
00012 std::cerr << "[ERROR] operator+(const _dcovector&, const _dcovector&)"
00013 << std::endl
00014 << "These two vectors can not make a sumation." << std::endl
00015 << "Your input was (" << vecA.L << ") + (" << vecB.L << ")."
00016 << std::endl;
00017 exit(1);
00018 }
00019
00020 #endif//CPPL_DEBUG
00021
00022 for(long i=0; i<vecA.L; i++){ vecA.Array[i]+=vecB.Array[i]; }
00023
00024 vecB.destroy();
00025 return vecA;
00026 }
00027
00028
00030 inline _dcovector operator-(const _dcovector& vecA, const _dcovector& vecB)
00031 {
00032 #ifdef CPPL_VERBOSE
00033 std::cerr << "# [MARK] operator-(const _dcovector&, const _dcovector&)"
00034 << std::endl;
00035 #endif//CPPL_VERBOSE
00036
00037 #ifdef CPPL_DEBUG
00038 if(vecA.L!=vecB.L){
00039 std::cerr << "[ERROR] operator-(const _dcovector&, const _dcovector&)"
00040 << std::endl
00041 << "These two vectors can not make a subtraction." << std::endl
00042 << "Your input was (" << vecA.L << ") - (" << vecB.L << ")."
00043 << std::endl;
00044 exit(1);
00045 }
00046 #endif//CPPL_DEBUG
00047
00048 for(long i=0; i<vecA.L; i++){ vecA.Array[i]-=vecB.Array[i]; }
00049
00050 vecB.destroy();
00051 return vecA;
00052 }
00053
00054
00056 inline double operator%(const _dcovector& vecA, const _dcovector& vecB)
00057 {
00058 #ifdef CPPL_VERBOSE
00059 std::cerr << "# [MARK] operator%(const _dcovector&, const _dcovector&)"
00060 << std::endl;
00061 #endif//CPPL_VERBOSE
00062
00063 #ifdef CPPL_DEBUG
00064 if(vecA.L!=vecB.L){
00065 std::cerr << "[ERROR] operator%(const _dcovector&, const _dcovector&)"
00066 << std::endl
00067 << "These two vectors can not make a dot product." << std::endl
00068 << "Your input was (" << vecA.L << ") % (" << vecB.L << ")."
00069 << std::endl;
00070 exit(1);
00071 }
00072 #endif//CPPL_DEBUG
00073
00074 double val( ddot_( vecA.L, vecA.Array, 1, vecB.Array, 1 ) );
00075
00076 vecA.destroy();
00077 vecB.destroy();
00078 return val;
00079 }