00001
00003 inline drovector& drovector::operator=(const _drovector& vec)
00004 {
00005 #ifdef CPPL_VERBOSE
00006 std::cerr << "# [MARK] drovector::operator=(const _drovector&)"
00007 << std::endl;
00008 #endif//CPPL_VERBOSE
00009
00010 #ifdef CPPL_DEBUG
00011 std::cerr << "# [NOTE] drovector::operator=(const _drovector&) was called."
00012 << std::endl;
00013 #endif//CPPL_DEBUG
00014
00015 shallow_copy(vec);
00016 return *this;
00017 }
00018
00022
00023
00025 inline drovector& drovector::operator+=(const _drovector& vec)
00026 {
00027 #ifdef CPPL_VERBOSE
00028 std::cerr << "# [MARK] drovector::operator+=(const _drovector&)"
00029 << std::endl;
00030 #endif//CPPL_VERBOSE
00031
00032 #ifdef CPPL_DEBUG
00033 if( L!=vec.L ){
00034 std::cerr << "[ERROR] drovector::operator+=(const _drovector&)" << std::endl
00035 << "These two vectors can not make a sumation." << std::endl
00036 << "Your input was (" << L << ") += (" << vec.L << ")."
00037 << std::endl;
00038 exit(1);
00039 }
00040 #endif//CPPL_DEBUG
00041
00042 for(long i=0; i<L; i++){ Array[i]+=vec.Array[i]; }
00043
00044 vec.destroy();
00045 return *this;
00046 }
00047
00048
00050 inline drovector& drovector::operator-=(const _drovector& vec)
00051 {
00052 #ifdef CPPL_VERBOSE
00053 std::cerr << "# [MARK] drovector::operator-=(const _drovector&)"
00054 << std::endl;
00055 #endif//CPPL_VERBOSE
00056
00057 #ifdef CPPL_DEBUG
00058 if( L!=vec.L ){
00059 std::cerr << "[ERROR] drovector::operator-=(const _drovector&)" << std::endl
00060 << "These two vectors can not make a subtraction." << std::endl
00061 << "Your input was (" << L << ") -= (" << vec.L << ")."
00062 << std::endl;
00063 exit(1);
00064 }
00065 #endif//CPPL_DEBUG
00066
00067 for(long i=0; i<L; i++){ Array[i]-=vec.Array[i]; }
00068
00069 vec.destroy();
00070 return *this;
00071 }
00072
00076
00077
00079 inline _drovector operator+(const drovector& vecA, const _drovector& vecB)
00080 {
00081 #ifdef CPPL_VERBOSE
00082 std::cerr << "# [MARK] operator+(const drovector&, const _drovector&)"
00083 << std::endl;
00084 #endif//CPPL_VERBOSE
00085
00086 #ifdef CPPL_DEBUG
00087 if(vecA.L!=vecB.L){
00088 std::cerr << "[ERROR] operator+(const drovector&, const _drovector&)"
00089 << std::endl
00090 << "These two vectors can not make a sumation." << std::endl
00091 << "Your input was (" << vecA.L << ") + (" << vecB.L << ")."
00092 << std::endl;
00093 exit(1);
00094 }
00095
00096 #endif//CPPL_DEBUG
00097
00098 for(long i=0; i<vecA.L; i++){ vecB.Array[i]+=vecA.Array[i]; }
00099
00100 return vecB;
00101 }
00102
00103
00105 inline _drovector operator-(const drovector& vecA, const _drovector& vecB)
00106 {
00107 #ifdef CPPL_VERBOSE
00108 std::cerr << "# [MARK] operator-(const drovector&, const _drovector&)"
00109 << std::endl;
00110 #endif//CPPL_VERBOSE
00111
00112 #ifdef CPPL_DEBUG
00113 if(vecA.L!=vecB.L){
00114 std::cerr << "[ERROR] operator-(const drovector&, const _drovector&)"
00115 << std::endl
00116 << "These two vectors can not make a subtraction." << std::endl
00117 << "Your input was (" << vecA.L << ") - (" << vecB.L << ")."
00118 << std::endl;
00119 exit(1);
00120 }
00121 #endif//CPPL_DEBUG
00122
00123 for(long i=0; i<vecA.L; i++){
00124 vecB.Array[i] =vecA.Array[i]-vecB.Array[i];
00125 }
00126
00127 return vecB;
00128 }
00129
00130
00132 inline double operator%(const drovector& vecA, const _drovector& vecB)
00133 {
00134 #ifdef CPPL_VERBOSE
00135 std::cerr << "# [MARK] operator%(const drovector&, const _drovector&)"
00136 << std::endl;
00137 #endif//CPPL_VERBOSE
00138
00139 #ifdef CPPL_DEBUG
00140 if(vecA.L!=vecB.L){
00141 std::cerr << "[ERROR] operator%(const drovector&, const _drovector&)"
00142 << std::endl
00143 << "These two vectors can not make a dot product." << std::endl
00144 << "Your input was (" << vecA.L << ") % (" << vecB.L << ")."
00145 << std::endl;
00146 exit(1);
00147 }
00148 #endif//CPPL_DEBUG
00149
00150 double val( ddot_( vecA.L, vecA.Array, 1, vecB.Array, 1 ) );
00151
00152 vecB.destroy();
00153 return val;
00154 }