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