diff --git a/Complex.cpp.bak.cpp b/Complex.cpp.bak.cpp deleted file mode 100755 index ae9dc96..0000000 --- a/Complex.cpp.bak.cpp +++ /dev/null @@ -1,1027 +0,0 @@ -#include -#include -#include -#include -#include "Complex.hpp" - -void ComplexDebug(char *fmtstr, ...) -{ - char buf[1024]; - va_list args; - - va_start(args, fmtstr); - vsprintf(buf, fmtstr, args); - va_end(args); - OutputDebugString(buf); - -} - -// = src -ComplexVector& ComplexVector::operator=(const ComplexVector &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.m_size); - - j = 0; - dj = src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = src.m_pPtrReal[j]; - m_pPtrImag[i] = src.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// = src -ComplexVector& ComplexVector::operator=(const radio_float_t &b) -{ - *this = ComplexVector (b, 0); - return *this; -} - -// *= src -ComplexVector& ComplexVector::operator*=(const radio_float_t &b) -{ - *this = *this * ComplexVector (b, 0); - return *this; -} - -// += src -ComplexVector& ComplexVector::operator+=(const radio_float_t &b) -{ - *this = *this + ComplexVector (b, 0); - return *this; -} - -ComplexVector& ComplexVector::operator-=(const radio_float_t &b) -{ - *this = *this - ComplexVector (b, 0); - return *this; -} - -// *= src -ComplexVector& ComplexVector::operator*=(const ComplexVector &src) -{ - *this = *this * src; - return *this; -} - -// += src -ComplexVector& ComplexVector::operator+=(const ComplexVector &src) -{ - *this = *this + src; - return *this; -} - -// -= src -ComplexVector& ComplexVector::operator-=(const ComplexVector &src) -{ - *this = *this - src; - return *this; -} - -// = -src -ComplexVector& ComplexVector::operator=(const Negate &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.src.m_size); - - j = 0; - dj = src.src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = -src.src.m_pPtrReal[j]; - m_pPtrImag[i] = -src.src.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// *= -src -ComplexVector& ComplexVector::operator*=(const Negate &src) -{ - *this = *this * src; - return *this; -} - -// += -src -ComplexVector& ComplexVector::operator+=(const Negate &src) -{ - *this = *this + src; - return *this; -} - -// -= -src -ComplexVector& ComplexVector::operator-=(const Negate &src) -{ - *this = *this + src; - return *this; -} - -// = src* -ComplexVector& ComplexVector::operator=(const Conjugate &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.src.m_size); - - j = 0; - dj = src.src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.src.m_pPtrReal[j]; - m_pPtrImag[i] = - src.src.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// *= src* -ComplexVector& ComplexVector::operator*=(const Conjugate &src) -{ - *this = *this * src; - return *this; -} - -// += src* -ComplexVector& ComplexVector::operator+=(const Conjugate &src) -{ - *this = *this + src; - return *this; -} - -// += src* -ComplexVector& ComplexVector::operator-=(const Conjugate &src) -{ - *this = *this - src; - return *this; -} - -// *= -src* -ComplexVector& ComplexVector::operator=(const ConjugateNegate &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.src.m_size); - - j = 0; - dj = src.src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = - src.src.m_pPtrReal[j]; - m_pPtrImag[i] = + src.src.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// *= -src* -ComplexVector& ComplexVector::operator*=(const ConjugateNegate &src) -{ - *this = *this * src; - return *this; -} - -// += -src* -ComplexVector& ComplexVector::operator+=(const ConjugateNegate &src) -{ - *this = *this + src; - return *this; -} - -// -= -src* -ComplexVector& ComplexVector::operator-=(const ConjugateNegate &src) -{ - *this = *this - src; - return *this; -} - -// 1. -// = a * b -ComplexVector& ComplexVector::operator=(const Mul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] = + src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 1. -// += a * b -ComplexVector& ComplexVector::operator+=(const Mul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += + src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] += + src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 1. -// -= a * b -ComplexVector& ComplexVector::operator-=(const Mul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= + src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] -= + src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 2. -// = (-a) * b -// = a * (-b) -// = -(a * b) -ComplexVector& ComplexVector::operator=(const NegMul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = - src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] = - src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 2. -// += (-a) * b -// += a * (-b) -// += -(a * b) -ComplexVector& ComplexVector::operator+=(const NegMul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += - src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] += - src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 2. -// -= (-a) * b -// -= a * (-b) -// -= -(a * b) -ComplexVector& ComplexVector::operator-=(const NegMul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= - src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] -= - src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 3. -// = a* * b -// = a * b* -ComplexVector& ComplexVector::operator=(const Mul_A_ConjB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] = - src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 3. -// += a* * b -// += a * b* -ComplexVector& ComplexVector::operator+=(const Mul_A_ConjB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += + src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] += - src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 3. -// -= a* * b -// -= a * b* -ComplexVector& ComplexVector::operator-=(const Mul_A_ConjB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= + src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] -= - src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 4. -// = (a * b)* -// = a* * b* -ComplexVector& ComplexVector::operator=(const ConjMul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] = - src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 4. -// += (a * b)* -// += a* * b* -ComplexVector& ComplexVector::operator+=(const ConjMul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += + src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] += - src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 4. -// -= (a * b)* -// -= a* * b* -ComplexVector& ComplexVector::operator-=(const ConjMul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= + src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] -= - src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 5. -// = -(a * b)* -// = (-a)* * (-b)* -ComplexVector& ComplexVector::operator=(const ConjNegMul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = - src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] = + src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 5. -// += -(a * b)* -// += (-a)* * (-b)* -ComplexVector& ComplexVector::operator+=(const ConjNegMul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += - src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] += + src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 5. -// -= -(a * b)* -// -= (-a)* * (-b)* -ComplexVector& ComplexVector::operator-=(const ConjNegMul_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= - src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] -= + src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] + src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 6. -// = (-a) * b* -// = a * (-b)* -// = (-a)* * b -// = a* * (-b) -ComplexVector& ComplexVector::operator=(const NegMul_A_ConjB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = - src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] = + src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 6. -// += (-a) * b* -// += a * (-b)* -// += (-a)* * b -// += a* * (-b) -ComplexVector& ComplexVector::operator+=(const NegMul_A_ConjB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += - src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] += + src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 6. -// -= (-a) * b* -// -= a * (-b)* -// -= (-a)* * b -// -= a* * (-b) -ComplexVector& ComplexVector::operator-=(const NegMul_A_ConjB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= - src.a.m_pPtrReal[i] * src.b.m_pPtrReal[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrImag[j]; - m_pPtrImag[i] -= + src.a.m_pPtrReal[i] * src.b.m_pPtrImag[j] - src.a.m_pPtrImag[i] * src.b.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// 1. -// a + b -ComplexVector& ComplexVector::operator=(const Add_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.a.m_pPtrReal[i] + src.b.m_pPtrReal[j]; - m_pPtrImag[i] = + src.a.m_pPtrImag[i] + src.b.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// 2. -// - (a + b) -// -a - b -ComplexVector& ComplexVector::operator=(const NegAdd_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = - src.a.m_pPtrReal[i] - src.b.m_pPtrReal[j]; - m_pPtrImag[i] = - src.a.m_pPtrImag[i] - src.b.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// 3. -// (a + b)* -ComplexVector& ComplexVector::operator=(const ConjAdd_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.a.m_pPtrReal[i] + src.b.m_pPtrReal[j]; - m_pPtrImag[i] = + src.a.m_pPtrImag[i] - src.b.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// 4. -// -(a + b)* -// (-a)* + (-b)* -ComplexVector& ComplexVector::operator=(const ConjNegAdd_A_B &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.a.m_pPtrReal[i] - src.b.m_pPtrReal[j]; - m_pPtrImag[i] = + src.a.m_pPtrImag[i] + src.b.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// 5. -// a - b -// a + (b-) -// (-a) + b -ComplexVector& ComplexVector::operator=(const Add_A_NegB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.a.m_pPtrReal[i] - src.b.m_pPtrReal[j]; - m_pPtrImag[i] = + src.a.m_pPtrImag[i] - src.b.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// 6. -// a + b* -// a* + b -ComplexVector& ComplexVector::operator=(const Add_A_ConjB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.a.m_pPtrReal[i] + src.b.m_pPtrReal[j]; - m_pPtrImag[i] = + src.a.m_pPtrImag[i] - src.b.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// 7. -// - (a + b*) -// - (a* + b) -// -a* - b -ComplexVector& ComplexVector::operator=(const NegAdd_A_ConjB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = - src.a.m_pPtrReal[i] - src.b.m_pPtrReal[j]; - m_pPtrImag[i] = - src.a.m_pPtrImag[i] + src.b.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -// 8. -// a - b* -// (-a)* + b -ComplexVector& ComplexVector::operator=(const Add_A_ConjNegB &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(src.a.m_size, src.b.m_size); - - j = 0; - dj = src.b.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = + src.a.m_pPtrReal[i] - src.b.m_pPtrReal[j]; - m_pPtrImag[i] = + src.a.m_pPtrImag[i] + src.b.m_pPtrImag[j]; - j += dj; - } - return *this; -} - -ComplexVector::Mul_A_B operator*(const ComplexVector &a, radio_float_t b) -{ - const ComplexVector bb = ComplexVector(b, 0); - const ComplexVector::Mul_A_B ab(a, bb); - - return ab; -} - -ComplexVector::Mul_A_B operator*(const ComplexVector &a, const ComplexVector &b) -{ - const ComplexVector::Mul_A_B ab(a, b); - - return ab; -} - -ComplexVector::Mul_A_B operator*(const ComplexVector::Negate &a, const ComplexVector::Negate &b) -{ - const ComplexVector::Mul_A_B ab(a.src, b.src); - - return ab; -} - -ComplexVector::NegMul_A_B operator*(const ComplexVector::Negate &a, const ComplexVector &b) -{ - const ComplexVector::NegMul_A_B ab(a.src, b); - - return ab; -} - -ComplexVector::NegMul_A_B operator*(const ComplexVector &a, const ComplexVector::Negate &b) -{ - const ComplexVector::NegMul_A_B ab(a, b.src); - - return ab; -} - -ComplexVector::ConjMul_A_B operator*(const ComplexVector::Conjugate &a, const ComplexVector::Conjugate &b) -{ - const ComplexVector::ConjMul_A_B ab(a.src, b.src); - - return ab; -} - -ComplexVector::Mul_A_ConjB operator*(const ComplexVector::Conjugate &a, const ComplexVector &b) -{ - const ComplexVector::Mul_A_ConjB ab(b, a); - - return ab; -} - -ComplexVector::Mul_A_ConjB operator*(const ComplexVector &a, const ComplexVector::Conjugate &b) -{ - const ComplexVector::Mul_A_ConjB ab(a, b); - - return ab; -} - -ComplexVector::ConjMul_A_B operator*(const ComplexVector::ConjugateNegate &a, const ComplexVector::ConjugateNegate &b) -{ - const ComplexVector::ConjMul_A_B ab(a.src, b.src); - - return ab; -} - -ComplexVector::NegMul_A_ConjB operator*(const ComplexVector &a, const ComplexVector::ConjugateNegate &b) -{ - const ComplexVector::NegMul_A_ConjB ab(a, b.src); - - return ab; -} - -ComplexVector::NegMul_A_ConjB operator*(const ComplexVector::ConjugateNegate &a, const ComplexVector &b) -{ - const ComplexVector::NegMul_A_ConjB ab(b, a.src); - - return ab; -} - -ComplexVector::NegMul_A_ConjB operator*(const ComplexVector::Negate &a, const ComplexVector::Conjugate &b) -{ - const ComplexVector::NegMul_A_ConjB ab(a.src, b.src); - - return ab; -} - -ComplexVector::NegMul_A_ConjB operator*(const ComplexVector::Conjugate &a, const ComplexVector::Negate &b) -{ - const ComplexVector::NegMul_A_ConjB ab(b.src, a.src); - - return ab; -} - -ComplexVector::Mul_A_ConjB operator*(const ComplexVector::Negate &a, const ComplexVector::ConjugateNegate &b) -{ - const ComplexVector::Mul_A_ConjB ab(a.src, b.src); - - return ab; -} - -ComplexVector::Mul_A_ConjB operator*(const ComplexVector::ConjugateNegate &a, const ComplexVector::Negate &b) -{ - const ComplexVector::Mul_A_ConjB ab(b.src, a.src); - - return ab; -} - -ComplexVector::Add_A_B operator+(const ComplexVector &a, radio_float_t b) -{ - const ComplexVector bb = ComplexVector(b, 0); - const ComplexVector::Add_A_B ab(a, bb); - - return ab; -} - -ComplexVector::Add_A_B operator+(const ComplexVector &a, const ComplexVector &b) -{ - const ComplexVector::Add_A_B ab(a, b); - - return ab; -} - -ComplexVector::Add_A_NegB operator+(const ComplexVector::Negate &a, const ComplexVector &b) -{ - const ComplexVector::Add_A_NegB ab(b, a); - - return ab; -} - -ComplexVector::Add_A_NegB operator+(const ComplexVector &a, const ComplexVector::Negate &b) -{ - const ComplexVector::Add_A_NegB ab(a, b); - - return ab; -} - -ComplexVector::Add_A_ConjB operator+(const ComplexVector::Conjugate &a, const ComplexVector &b) -{ - const ComplexVector::Add_A_ConjB ab(b, a); - - return ab; -} - -ComplexVector::Add_A_ConjB operator+(const ComplexVector &a, const ComplexVector::Conjugate &b) -{ - const ComplexVector::Add_A_ConjB ab(a, b); - - return ab; -} - -ComplexVector::ConjAdd_A_B operator+(const ComplexVector::Conjugate &a, const ComplexVector::Conjugate &b) -{ - const ComplexVector::ConjAdd_A_B ab(a.src, b.src); - - return ab; -} - -ComplexVector::Add_A_ConjNegB operator+(const ComplexVector::ConjugateNegate &a, const ComplexVector &b) -{ - const ComplexVector::Add_A_ConjNegB ab(b, a); - - return ab; -} - -ComplexVector::Add_A_ConjNegB operator+(const ComplexVector &a, const ComplexVector::ConjugateNegate &b) -{ - const ComplexVector::Add_A_ConjNegB ab(a, b); - - return ab; -} - -ComplexVector::Add_A_B operator-(const ComplexVector &a, radio_float_t b) -{ - const ComplexVector bb = ComplexVector(-b, 0); - const ComplexVector::Add_A_B ab(a, bb); - - return ab; -} - -ComplexVector::Add_A_NegB operator-(const ComplexVector &a, const ComplexVector &b) -{ - const ComplexVector::Add_A_NegB ab(a, b); - - return ab; -} - -ComplexVector::NegAdd_A_B operator-(const ComplexVector::Negate &a, const ComplexVector &b) -{ - const ComplexVector::NegAdd_A_B ab(a.src, b); - - return ab; -} - -ComplexVector::Add_A_B operator-(const ComplexVector &a, const ComplexVector::Negate &b) -{ - const ComplexVector::Add_A_B ab(a, b.src); - - return ab; -} - -ComplexVector::Add_A_NegB operator-(const ComplexVector::Negate &a, const ComplexVector::Negate &b) -{ - const ComplexVector::Add_A_NegB ab(b.src, a); - - return ab; -} - -ComplexVector::Add_A_ConjNegB operator-(const ComplexVector::Conjugate &a, const ComplexVector &b) -{ - const ComplexVector::Add_A_ConjNegB ab(b, a); - - return ab; -} - -ComplexVector::Add_A_ConjNegB operator-(const ComplexVector &a, const ComplexVector::Conjugate &b) -{ - const ComplexVector::Add_A_ConjNegB ab(a, b); - - return ab; -} - -ComplexVector::ConjAdd_A_B operator-(const ComplexVector::Conjugate &a, const ComplexVector::Conjugate &b) -{ - const ComplexVector::ConjAdd_A_B ab(a.src, b.src); - - return ab; -} - -ComplexVector::NegAdd_A_ConjB operator-(const ComplexVector::ConjugateNegate &a, const ComplexVector &b) -{ - const ComplexVector::NegAdd_A_ConjB ab(b, a.src); - - return ab; -} - -ComplexVector::Add_A_ConjB operator-(const ComplexVector &a, const ComplexVector::ConjugateNegate &b) -{ - const ComplexVector::Add_A_ConjB ab(a, b.src); - - return ab; -} diff --git a/Complex.hpp.bak.hpp b/Complex.hpp.bak.hpp deleted file mode 100755 index 40aa3c2..0000000 --- a/Complex.hpp.bak.hpp +++ /dev/null @@ -1,550 +0,0 @@ -#ifndef _COMPLEX_HPP_ -#define _COMPLEX_HPP_ - -#include -#include -#include -#include - -void ComplexDebug(char *fmtstr, ...); - -class ComplexException -{ -public: - ComplexException (std::string s) - { - m_what = s; - } - ~ComplexException() - { - } - std::string& what() - { - return m_what; - } -private: - std::string m_what; -}; - -class ComplexVector -{ -public: - struct Negate - { - Negate(const ComplexVector &src) - : src(src) - { - } - const ComplexVector &src; - - private: - Negate& operator=(const Negate&); - }; - - struct ConjugateNegate; - struct Conjugate - { - Conjugate(const ComplexVector &src) - : src(src) - { - } - const ComplexVector &src; - const ConjugateNegate operator-() - { - const ConjugateNegate neg(src); - return neg; - } - - private: - Conjugate& operator=(const Conjugate&); - }; - - struct ConjugateNegate - { - ConjugateNegate(const Conjugate &src) - : src(src.src) - { - } - const ComplexVector &src; - - private: - ConjugateNegate& operator=(const ConjugateNegate&); - }; - - struct NegMul_A_B; - struct Mul_A_B - { - Mul_A_B(const ComplexVector &a, const ComplexVector &b) - : a(a) - , b(b) - { - } - const ComplexVector &a; - const ComplexVector &b; - const NegMul_A_B operator-() - { - const NegMul_A_B neg(a, b); - return neg; - } - private: - Mul_A_B& operator=(const Mul_A_B&); - }; - - struct NegMul_A_B - { - NegMul_A_B(const ComplexVector &a, const ComplexVector &b) - : a(a) - , b(b) - { - } - const ComplexVector &a; - const ComplexVector &b; - - private: - NegMul_A_B& operator=(const NegMul_A_B&); - }; - - struct ConjNegMul_A_B - { - ConjNegMul_A_B(const ComplexVector &a, const ComplexVector &b) - : a(a) - , b(b) - { - } - const ComplexVector &a; - const ComplexVector &b; - - private: - ConjNegMul_A_B& operator=(const ConjNegMul_A_B&); - }; - - struct ConjMul_A_B - { - ConjMul_A_B(const ComplexVector &a, const ComplexVector &b) - : a(a) - , b(b) - { - } - const ConjNegMul_A_B operator-() - { - const ConjNegMul_A_B neg(a, b); - return neg; - } - const ComplexVector &a; - const ComplexVector &b; - - private: - ConjMul_A_B& operator=(const ConjMul_A_B&); - }; - - struct NegMul_A_ConjB; - struct Mul_A_ConjB - { - Mul_A_ConjB(const ComplexVector &a, const Conjugate &b) - : a(a) - , b(b.src) - { - } - const NegMul_A_ConjB operator-() - { - const NegMul_A_ConjB neg(a, b); - return neg; - } - const ComplexVector &a; - const ComplexVector &b; - - private: - Mul_A_ConjB& operator=(const Mul_A_ConjB&); - }; - - struct NegMul_A_ConjB - { - NegMul_A_ConjB(const ComplexVector &a, const Conjugate &b) - : a(a) - , b(b.src) - { - } - const ComplexVector &a; - const ComplexVector &b; - - private: - NegMul_A_ConjB& operator=(const NegMul_A_ConjB&); - }; - - struct NegAdd_A_B; - struct Add_A_B - { - Add_A_B(const ComplexVector &a, const ComplexVector &b) - : a(a) - , b(b) - { - } - const ComplexVector &a; - const ComplexVector &b; - const NegAdd_A_B operator-() - { - const NegAdd_A_B neg(a, b); - return neg; - } - - private: - Add_A_B& operator=(const Add_A_B&); - }; - - struct NegAdd_A_B - { - NegAdd_A_B(const ComplexVector &a, const ComplexVector &b) - : a(a) - , b(b) - { - } - const ComplexVector &a; - const ComplexVector &b; - - private: - NegAdd_A_B& operator=(const NegAdd_A_B&); - }; - - struct ConjNegAdd_A_B; - struct ConjAdd_A_B - { - ConjAdd_A_B(const ComplexVector &a, const ComplexVector &b) - : a(a) - , b(b) - { - } - const ComplexVector &a; - const ComplexVector &b; - const ConjNegAdd_A_B operator-() - { - const ConjNegAdd_A_B neg(a, b); - return neg; - } - - private: - ConjAdd_A_B& operator=(const ConjAdd_A_B&); - }; - - struct ConjNegAdd_A_B - { - ConjNegAdd_A_B(const ComplexVector &a, const ComplexVector &b) - : a(a) - , b(b) - { - } - const ComplexVector &a; - const ComplexVector &b; - - private: - ConjNegAdd_A_B& operator=(const ConjNegAdd_A_B&); - }; - - struct Add_A_NegB - { - Add_A_NegB(const ComplexVector &a, const Negate &b) - : a(a) - , b(b.src) - { - } - const ComplexVector &a; - const ComplexVector &b; - - private: - Add_A_NegB& operator=(const Add_A_NegB&); - }; - - struct Add_A_ConjB - { - Add_A_ConjB(const ComplexVector &a, const Conjugate &b) - : a(a) - , b(b.src) - { - } - const ComplexVector &a; - const ComplexVector &b; - - private: - Add_A_ConjB& operator=(const Add_A_ConjB&); - }; - - struct NegAdd_A_ConjB - { - NegAdd_A_ConjB(const ComplexVector &a, const Conjugate &b) - : a(a) - , b(b.src) - { - } - const ComplexVector &a; - const ComplexVector &b; - - private: - NegAdd_A_ConjB& operator=(const NegAdd_A_ConjB&); - }; - - struct Add_A_ConjNegB - { - Add_A_ConjNegB(const ComplexVector &a, const ConjugateNegate &b) - : a(a) - , b(b.src) - { - } - const ComplexVector &a; - const ComplexVector &b; - - private: - Add_A_ConjNegB& operator=(const Add_A_ConjNegB&); - }; - - ComplexVector(uint32_t size, radio_float_t *real=0, radio_float_t *imag=0) - : m_size(size) - , m_real(0) - , m_imag(0) - , m_pBufReal(0) - , m_pBufImag(0) - , m_pPtrReal(real) - , m_pPtrImag(imag) - { - if (!real) - { - m_pBufReal = new radio_float_t[m_size]; - memset(m_pBufReal, 0, m_size*sizeof(radio_float_t)); - m_pPtrReal = m_pBufReal; - } - if (!imag) - { - m_pBufImag = new radio_float_t[m_size]; - memset(m_pBufImag, 0, m_size*sizeof(radio_float_t)); - m_pPtrImag = m_pBufImag; - } - } - - ComplexVector(radio_float_t real, radio_float_t imag) - : m_size(1) - , m_real(real) - , m_imag(imag) - , m_pBufReal(0) - , m_pBufImag(0) - , m_pPtrReal(&m_real) - , m_pPtrImag(&m_imag) - { - } - - ~ComplexVector(void) - { - if (m_pBufReal) - delete(m_pBufReal); - - if (m_pBufImag) - delete(m_pBufImag); - - m_pBufReal = nullptr; - m_pBufImag = nullptr; - } - - radio_float_t* getReal() - { - return m_pPtrReal; - } - - radio_float_t* getImag() - { - return m_pPtrImag; - } - - uint32_t getSize() - { - return m_size; - } - - ComplexVector at(uint32_t const &i) - { - return ComplexVector(*this, i); - } - - Conjugate conj() - { - const ComplexVector::Conjugate src_conj(*this); - - return src_conj; - } - - void print(char *pPrefix) - { - uint32_t i; - - ComplexDebug("%s:\n", pPrefix); - for (i=0; i < m_size; i++) - { - if (m_pPtrImag[i] < 0) - { - ComplexDebug("%d: %.6f - j%.6f\n", i, m_pPtrReal[i], -m_pPtrImag[i]); - } - else - { - ComplexDebug("%d: %.6f + j%.6f\n", i, m_pPtrReal[i], m_pPtrImag[i]); - } - } - } - -// Operators - const Negate operator-() - { - const Negate neg(*this); - return neg; - } - - ComplexVector& operator=(const radio_float_t &b); - ComplexVector& operator*=(const radio_float_t &b); - ComplexVector& operator+=(const radio_float_t &b); - ComplexVector& operator-=(const radio_float_t &b); - - ComplexVector& operator=(const ComplexVector &src); - ComplexVector& operator*=(const ComplexVector &src); - ComplexVector& operator+=(const ComplexVector &src); - ComplexVector& operator-=(const ComplexVector &src); - - ComplexVector& operator=(const Negate &src); - ComplexVector& operator*=(const Negate &src); - ComplexVector& operator+=(const Negate &src); - ComplexVector& operator-=(const Negate &src); - - ComplexVector& operator=(const Conjugate &src); - ComplexVector& operator*=(const Conjugate &src); - ComplexVector& operator+=(const Conjugate &src); - ComplexVector& operator-=(const Conjugate &src); - - ComplexVector& operator=(const ConjugateNegate &src); - ComplexVector& operator*=(const ConjugateNegate &src); - ComplexVector& operator+=(const ConjugateNegate &src); - ComplexVector& operator-=(const ConjugateNegate &src); - - ComplexVector& operator=(const Mul_A_B &src); - ComplexVector& operator+=(const Mul_A_B &src); - ComplexVector& operator-=(const Mul_A_B &src); - - ComplexVector& operator=(const NegMul_A_B &src); - ComplexVector& operator+=(const NegMul_A_B &src); - ComplexVector& operator-=(const NegMul_A_B &src); - - ComplexVector& operator=(const Mul_A_ConjB &src); - ComplexVector& operator+=(const Mul_A_ConjB &src); - ComplexVector& operator-=(const Mul_A_ConjB &src); - - ComplexVector& operator=(const ConjMul_A_B &src); - ComplexVector& operator+=(const ConjMul_A_B &src); - ComplexVector& operator-=(const ConjMul_A_B &src); - - ComplexVector& operator=(const ConjNegMul_A_B &src); - ComplexVector& operator+=(const ConjNegMul_A_B &src); - ComplexVector& operator-=(const ConjNegMul_A_B &src); - - ComplexVector& operator=(const NegMul_A_ConjB &src); - ComplexVector& operator+=(const NegMul_A_ConjB &src); - ComplexVector& operator-=(const NegMul_A_ConjB &src); - - ComplexVector& operator=(const Add_A_B &src); - ComplexVector& operator=(const NegAdd_A_B &src); - ComplexVector& operator=(const ConjAdd_A_B &src); - ComplexVector& operator=(const ConjNegAdd_A_B &src); - ComplexVector& operator=(const Add_A_NegB &src); - ComplexVector& operator=(const Add_A_ConjB &src); - ComplexVector& operator=(const NegAdd_A_ConjB &src); - ComplexVector& operator=(const Add_A_ConjNegB &src); - -private: - uint32_t m_size; - radio_float_t m_real; - radio_float_t m_imag; - radio_float_t *m_pBufReal; - radio_float_t *m_pBufImag; - radio_float_t *m_pPtrReal; - radio_float_t *m_pPtrImag; - - ComplexVector(ComplexVector &src, uint32_t index) - : m_size(1) - , m_pBufReal(0) - , m_pBufImag(0) - , m_pPtrReal(&src.m_pPtrReal[index]) - , m_pPtrImag(&src.m_pPtrImag[index]) - { - } - - _inline void checkSize(uint32_t size1, uint32_t size2) - { - try - { - if ((size1 != size2) && (size2 != 1)) - { - throw(ComplexException("Size mismatch")); - } - } - catch(ComplexException &exc) - { - ComplexDebug("Problem: %s\n", exc.what().c_str()); - } - } - -}; - -ComplexVector::Mul_A_B operator*(const ComplexVector &a, radio_float_t b); -ComplexVector::Mul_A_B operator*(const ComplexVector &a, const ComplexVector &b); - -ComplexVector::Mul_A_B operator*(const ComplexVector::Negate &a, const ComplexVector::Negate &b); -ComplexVector::NegMul_A_B operator*(const ComplexVector::Negate &a, const ComplexVector &b); -ComplexVector::NegMul_A_B operator*(const ComplexVector &a, const ComplexVector::Negate &b); - -ComplexVector::ConjMul_A_B operator*(const ComplexVector::Conjugate &a, const ComplexVector::Conjugate &b); -ComplexVector::Mul_A_ConjB operator*(const ComplexVector::Conjugate &a, const ComplexVector &b); -ComplexVector::Mul_A_ConjB operator*(const ComplexVector &a, const ComplexVector::Conjugate &b); - -ComplexVector::ConjMul_A_B operator*(const ComplexVector::ConjugateNegate &a, const ComplexVector::ConjugateNegate &b); -ComplexVector::NegMul_A_ConjB operator*(const ComplexVector &a, const ComplexVector::ConjugateNegate &b); -ComplexVector::NegMul_A_ConjB operator*(const ComplexVector::ConjugateNegate &a, const ComplexVector &b); - -ComplexVector::Mul_A_ConjB operator*(const ComplexVector::Negate &a, const ComplexVector::ConjugateNegate &b); -ComplexVector::Mul_A_ConjB operator*(const ComplexVector::ConjugateNegate &a, const ComplexVector::Negate &b); - -ComplexVector::NegMul_A_ConjB operator*(const ComplexVector::Negate &a, const ComplexVector::Conjugate &b); -ComplexVector::NegMul_A_ConjB operator*(const ComplexVector::Conjugate &a, const ComplexVector::Negate &b); - -ComplexVector::Add_A_B operator+(const ComplexVector &a, radio_float_t b); -ComplexVector::Add_A_B operator+(const ComplexVector &a, const ComplexVector &b); -ComplexVector::NegAdd_A_B operator+(ComplexVector::Negate &a, ComplexVector::Negate &b); - -ComplexVector::Add_A_NegB operator+(const ComplexVector::Negate &a, const ComplexVector &b); -ComplexVector::Add_A_NegB operator+(const ComplexVector &a, const ComplexVector::Negate &b); - -ComplexVector::Add_A_ConjB operator+(const ComplexVector::Conjugate &a, const ComplexVector &b); -ComplexVector::Add_A_ConjB operator+(const ComplexVector &a, const ComplexVector::Conjugate &b); -ComplexVector::ConjAdd_A_B operator+(const ComplexVector::Conjugate &a, const ComplexVector::Conjugate &b); - - -ComplexVector::Add_A_ConjNegB operator+(const ComplexVector::ConjugateNegate &a, const ComplexVector &b); -ComplexVector::Add_A_ConjNegB operator+(const ComplexVector &a, const ComplexVector::ConjugateNegate &b); - -ComplexVector::Add_A_ConjB operator+(const ComplexVector::Conjugate &a, const ComplexVector::Negate &b); -ComplexVector::Add_A_ConjB operator+(const ComplexVector::Negate &a, const ComplexVector::Conjugate &b); - -ComplexVector::Add_A_ConjB operator+(const ComplexVector::ConjugateNegate &a, const ComplexVector::Negate &b); -ComplexVector::Add_A_ConjB operator+(const ComplexVector::Negate &a, const ComplexVector::ConjugateNegate &b); - -ComplexVector::Add_A_B operator-(const ComplexVector &a, radio_float_t b); -ComplexVector::Add_A_NegB operator-(const ComplexVector &a, const ComplexVector &b); -ComplexVector::Add_A_NegB operator-(const ComplexVector::Negate &a, const ComplexVector::Negate &b); - -ComplexVector::NegAdd_A_B operator-(const ComplexVector::Negate &a, const ComplexVector &b); -ComplexVector::Add_A_B operator-(const ComplexVector &a, const ComplexVector::Negate &b); - -ComplexVector::Add_A_ConjNegB operator-(const ComplexVector::Conjugate &a, const ComplexVector &b); -ComplexVector::Add_A_ConjNegB operator-(const ComplexVector &a, const ComplexVector::Conjugate &b); - -ComplexVector::NegAdd_A_ConjB operator-(const ComplexVector::ConjugateNegate &a, const ComplexVector &b); -ComplexVector::Add_A_ConjB operator-(const ComplexVector &a, const ComplexVector::ConjugateNegate &b); - -ComplexVector::Add_A_ConjB operator-(const ComplexVector::Conjugate &a, const ComplexVector::Negate &b); -ComplexVector::Add_A_ConjB operator-(const ComplexVector::Negate &a, const ComplexVector::Conjugate &b); - -ComplexVector::Add_A_ConjB operator-(const ComplexVector::ConjugateNegate &a, const ComplexVector::Negate &b); -ComplexVector::Add_A_ConjB operator-(const ComplexVector::Negate &a, const ComplexVector::ConjugateNegate &b); - -#endif // _COMPLEX_HPP_ \ No newline at end of file diff --git a/RealVector.cpp.inherit b/RealVector.cpp.inherit deleted file mode 100755 index 0c25d82..0000000 --- a/RealVector.cpp.inherit +++ /dev/null @@ -1,1089 +0,0 @@ -#include -#include -#include -#include -#include "RealVector.hpp" - -void RealDebug(char *fmtstr, ...) -{ - char buf[1024]; - va_list args; - - va_start(args, fmtstr); - vsprintf(buf, fmtstr, args); - va_end(args); - OutputDebugString(buf); - -} - -// Methods -RealVector::RealVector(uint32_t size, radio_float_t *real) -: m_size(size) -, m_real(0) -, m_pBufReal(0) -, m_pPtrReal(real) -{ - if (!real) - { - m_pBufReal = new radio_float_t[m_size]; - memset(m_pBufReal, 0, m_size*sizeof(radio_float_t)); - m_pPtrReal = m_pBufReal; - } -} - -// Copy constructor -RealVector::RealVector(const RealVector &src) -: m_size(src.m_size) -, m_real(0) -, m_pBufReal(0) -, m_pPtrReal(0) -{ - m_pBufReal = new radio_float_t[m_size]; - m_pPtrReal = m_pBufReal; - - *this = src; -} - -// Slicing constructor -RealVector::RealVector(RealVector &src, uint32_t from, uint32_t step, uint32_t to) -: m_size(0) -, m_pBufReal(0) -, m_pPtrReal(&src.m_pPtrReal[from]) -{ - uint32_t i; - - for (i=from; i <= to; i+=step) - { - m_size++; - } -} - -// Negative resolver copy constructor -RealVector::RealVector(const RealVectorNegative &src) -: m_size(src.m_size) -, m_real(src.m_real) -, m_pBufReal(0) -, m_pPtrReal(src.m_pPtrReal) -{ - *this = src; -} - -// OpBinaryAdd resolver copy constructor -RealVector::RealVector(const OpBinaryAdd &src) -: m_size(src.a.m_size) -, m_real(0) -, m_pBufReal(0) -, m_pPtrReal(0) -{ - m_pBufReal = new radio_float_t[m_size]; - m_pPtrReal = m_pBufReal; - - *this = src; -} - -// OpBinaryAdd::Negative resolver copy constructor -RealVector::RealVector(const OpBinaryAdd::Negative &src) -: m_size(src.a.m_size) -, m_real(0) -, m_pBufReal(0) -, m_pPtrReal(0) -{ - m_pBufReal = new radio_float_t[m_size]; - m_pPtrReal = m_pBufReal; - - *this = src; -} - -// OpBinarySub resolver copy constructor -RealVector::RealVector(const OpBinarySub &src) -: m_size(src.a.m_size) -, m_real(0) -, m_pBufReal(0) -, m_pPtrReal(0) -{ - m_pBufReal = new radio_float_t[m_size]; - m_pPtrReal = m_pBufReal; - - *this = src; -} - -// OpBinaryMul resolver copy constructor -RealVector::RealVector(const OpBinaryMul &src) -: m_size(src.a.m_size) -, m_real(0) -, m_pBufReal(0) -, m_pPtrReal(0) -{ - m_pBufReal = new radio_float_t[m_size]; - m_pPtrReal = m_pBufReal; - - *this = src; -} - -// OpBinaryMul::Negative resolver copy constructor -RealVector::RealVector(const OpBinaryMul::Negative &src) -: m_size(src.a.m_size) -, m_real(0) -, m_pBufReal(0) -, m_pPtrReal(0) -{ - m_pBufReal = new radio_float_t[m_size]; - m_pPtrReal = m_pBufReal; - - *this = src; -} - -// OpBinaryDiv resolver copy constructor -RealVector::RealVector(const OpBinaryDiv &src) -: m_size(src.a.m_size) -, m_real(0) -, m_pBufReal(0) -, m_pPtrReal(0) -{ - m_pBufReal = new radio_float_t[m_size]; - m_pPtrReal = m_pBufReal; - - *this = src; -} - -// OpBinaryDiv::Negative resolver copy constructor -RealVector::RealVector(const OpBinaryDiv::Negative &src) -: m_size(src.a.m_size) -, m_real(0) -, m_pBufReal(0) -, m_pPtrReal(0) -{ - m_pBufReal = new radio_float_t[m_size]; - m_pPtrReal = m_pBufReal; - - *this = src; -} - -// Scalar constructor -RealVector::RealVector(radio_float_t real) -: m_size(1) -, m_real(real) -, m_pBufReal(0) -, m_pPtrReal(&m_real) -{ -} - -RealVector::~RealVector(void) -{ - if (m_pBufReal) - delete(m_pBufReal); - - m_pBufReal = nullptr; -} - -uint32_t RealVector::getSize() const -{ - return m_size; -} - -radio_float_t RealVector::getValue() const -{ - return *m_pPtrReal; -} - -RealVector RealVector::at(uint32_t const &i) -{ - return RealVector(*this, i, 1, i); -} - -void RealVector::print(char *pPrefix) const -{ - uint32_t i; - - RealDebug("%s:\n", pPrefix); - for (i=0; i < m_size; i++) - { - RealDebug("%d: %.6f\n", i, m_pPtrReal[i]); - } -} - -RealVectorNegative RealVector::operator-() const -{ - return RealVectorNegative(*this); -} - -const RealVector& RealVector::operator+() const -{ - return *this; -} - -// ------------------------------------------------- -// Assignments -// ------------------------------------------------- -// = RealVector -RealVector& RealVector::operator=(const RealVector &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.m_size); - - j = 0; - dj = src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = src.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// = RealVector::Negative -RealVector& RealVector::operator=(const RealVectorNegative &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.m_size); - - j = 0; - dj = src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = -src.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// += RealVector -RealVector& RealVector::operator+=(const RealVector &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.m_size); - - j = 0; - dj = src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += src.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// -= RealVector -RealVector& RealVector::operator-=(const RealVector &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.m_size); - - j = 0; - dj = src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= src.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// *= RealVector -RealVector& RealVector::operator*=(const RealVector &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.m_size); - - j = 0; - dj = src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] *= src.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// /= RealVector -RealVector& RealVector::operator/=(const RealVector &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.m_size); - - j = 0; - dj = src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] /= src.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// += RealVector::Negative -RealVector& RealVector::operator+=(const RealVectorNegative &src) -{ - *this -= -src; - - return *this; -} - -// -= RealVector::Negative -RealVector& RealVector::operator-=(const RealVectorNegative &src) -{ - *this += -src; - - return *this; -} - -// *= RealVector::Negative -RealVector& RealVector::operator*=(const RealVectorNegative &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.m_size); - - j = 0; - dj = src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] *= -src.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// /= RealVector::Negative -RealVector& RealVector::operator/=(const RealVectorNegative &src) -{ - uint32_t i; - uint32_t j; - uint32_t dj; - - checkSize(m_size, src.m_size); - - j = 0; - dj = src.m_size > 1; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] /= -src.m_pPtrReal[j]; - j += dj; - } - return *this; -} - -// = RealVector::OpBinaryAdd -RealVector& RealVector::operator=(const OpBinaryAdd &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = (src.a.m_pPtrReal[j] + src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// += RealVector::OpBinaryAdd -RealVector& RealVector::operator+=(const OpBinaryAdd &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += (src.a.m_pPtrReal[j] + src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// -= RealVector::OpBinaryAdd -RealVector& RealVector::operator-=(const OpBinaryAdd &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= (src.a.m_pPtrReal[j] + src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// *= RealVector::OpBinaryAdd -RealVector& RealVector::operator*=(const OpBinaryAdd &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] *= (src.a.m_pPtrReal[j] + src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// /= RealVector::OpBinaryAdd -RealVector& RealVector::operator/=(const OpBinaryAdd &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] /= (src.a.m_pPtrReal[j] + src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// = RealVector::OpBinaryAdd::Negative -RealVector& RealVector::operator=(const OpBinaryAdd::Negative &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = - (src.a.m_pPtrReal[j] + src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// += RealVector::OpBinaryAdd::Negative -RealVector& RealVector::operator+=(const OpBinaryAdd::Negative &src) -{ - *this -= -src; - - return *this; -} - -// -= RealVector::OpBinaryAdd::Negative -RealVector& RealVector::operator-=(const OpBinaryAdd::Negative &src) -{ - *this += -src; - - return *this; -} - -// *= RealVector::OpBinaryAdd::Negative -RealVector& RealVector::operator*=(const OpBinaryAdd::Negative &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] *= - (src.a.m_pPtrReal[j] + src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - - return *this; -} - -// /= RealVector::OpBinaryAdd::Negative -RealVector& RealVector::operator/=(const OpBinaryAdd::Negative &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] /= - (src.a.m_pPtrReal[j] + src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - - return *this; -} - -// = RealVector::OpBinarySub -RealVector& RealVector::operator=(const OpBinarySub &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = (src.a.m_pPtrReal[j] - src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// += RealVector::OpBinarySub -RealVector& RealVector::operator+=(const OpBinarySub &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += (src.a.m_pPtrReal[j] - src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// -= RealVector::OpBinarySub -RealVector& RealVector::operator-=(const OpBinarySub &src) -{ - *this += OpBinarySub(src.b, src.a); - return *this; -} - -// *= RealVector::OpBinarySub -RealVector& RealVector::operator*=(const OpBinarySub &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] *= (src.a.m_pPtrReal[j] - src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// /= RealVector::OpBinarySub -RealVector& RealVector::operator/=(const OpBinarySub &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] /= (src.a.m_pPtrReal[j] - src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// = RealVector::OpBinaryMul -RealVector& RealVector::operator=(const OpBinaryMul &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = (src.a.m_pPtrReal[j] * src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// += RealVector::OpBinaryMul -RealVector& RealVector::operator+=(const OpBinaryMul &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += (src.a.m_pPtrReal[j] * src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// -= RealVector::OpBinaryMul -RealVector& RealVector::operator-=(const OpBinaryMul &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= (src.a.m_pPtrReal[j] * src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// *= RealVector::OpBinaryMul -RealVector& RealVector::operator*=(const OpBinaryMul &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] *= (src.a.m_pPtrReal[j] * src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// /= RealVector::OpBinaryMul -RealVector& RealVector::operator/=(const OpBinaryMul &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] /= (src.a.m_pPtrReal[j] * src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// = RealVector::OpBinaryMul::Negative -RealVector& RealVector::operator=(const OpBinaryMul::Negative &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = - (src.a.m_pPtrReal[j] * src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// += RealVector::OpBinaryMul::Negative -RealVector& RealVector::operator+=(const OpBinaryMul::Negative &src) -{ - *this -= -src; - - return *this; -} - -// -= RealVector::OpBinaryMul::Negative -RealVector& RealVector::operator-=(const OpBinaryMul::Negative &src) -{ - *this += -src; - - return *this; -} - -// *= RealVector::OpBinaryMul::Negative -RealVector& RealVector::operator*=(const OpBinaryMul::Negative &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] *= - (src.a.m_pPtrReal[j] * src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - - return *this; -} - -// /= RealVector::OpBinaryMul::Negative -RealVector& RealVector::operator/=(const OpBinaryMul::Negative &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] /= - (src.a.m_pPtrReal[j] * src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - - return *this; -} - -// = RealVector::OpBinaryDiv -RealVector& RealVector::operator=(const OpBinaryDiv &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = (src.a.m_pPtrReal[j] / src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// += RealVector::OpBinaryDiv -RealVector& RealVector::operator+=(const OpBinaryDiv &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] += (src.a.m_pPtrReal[j] / src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// -= RealVector::OpBinaryDiv -RealVector& RealVector::operator-=(const OpBinaryDiv &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] -= (src.a.m_pPtrReal[j] / src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// *= RealVector::OpBinaryDiv -RealVector& RealVector::operator*=(const OpBinaryDiv &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] *= (src.a.m_pPtrReal[j] / src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// /= RealVector::OpBinaryDiv -RealVector& RealVector::operator/=(const OpBinaryDiv &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] /= (src.a.m_pPtrReal[j] / src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// = RealVector::OpBinaryDiv::Negative -RealVector& RealVector::operator=(const OpBinaryDiv::Negative &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] = - (src.a.m_pPtrReal[j] / src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - return *this; -} - -// += RealVector::OpBinaryDiv::Negative -RealVector& RealVector::operator+=(const OpBinaryDiv::Negative &src) -{ - *this -= -src; - - return *this; -} - -// -= RealVector::OpBinaryDiv::Negative -RealVector& RealVector::operator-=(const OpBinaryDiv::Negative &src) -{ - *this += -src; - - return *this; -} - -// *= RealVector::OpBinaryDiv::Negative -RealVector& RealVector::operator*=(const OpBinaryDiv::Negative &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] *= - (src.a.m_pPtrReal[j] / src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - - return *this; -} - -// /= RealVector::OpBinaryDiv::Negative -RealVector& RealVector::operator/=(const OpBinaryDiv::Negative &src) -{ - uint32_t i, j, k; - uint32_t dj, dk; - - dj = src.a.m_size > 1; - dk = src.b.m_size > 1; - - j = 0; - k = 0; - for (i=0; i < m_size; i++) - { - m_pPtrReal[i] /= - (src.a.m_pPtrReal[j] / src.b.m_pPtrReal[k]); - j += dj; - k += dk; - } - - return *this; -} - -// ------------------------------------------------- -// Binary Operators -// ------------------------------------------------- -// Returning RealVector::OpBinary -RealVector::OpBinaryAdd operator+(const RealVector &a, const RealVector &b) -{ - return RealVector::OpBinaryAdd (a, b); -} -#if 0 -RealVector::OpBinarySub operator+(const RealVectorNegative &a, const RealVector &b) -{ - return RealVector::OpBinarySub (b, -a); -} - -RealVector::OpBinarySub operator+(const RealVector &a, const RealVectorNegative &b) -{ - return RealVector::OpBinarySub (a, -b); -} - -RealVector::OpBinaryAdd::Negative operator+(const RealVectorNegative &a, const RealVectorNegative &b) -{ - return -RealVector::OpBinaryAdd (-a, -b); -} -#endif -RealVector::OpBinarySub operator-(const RealVector &a, const RealVector &b) -{ - return RealVector::OpBinarySub (a, b); -} - -RealVector::OpBinaryAdd::Negative operator-(const RealVectorNegative &a, const RealVector &b) -{ - return -RealVector::OpBinaryAdd (-a, b); -} - -RealVector::OpBinaryAdd operator-(const RealVector &a, const RealVectorNegative &b) -{ - return RealVector::OpBinaryAdd (a, -b); -} - -RealVector::OpBinarySub operator-(const RealVectorNegative &a, const RealVectorNegative &b) -{ - return RealVector::OpBinarySub (-b, -a); -} - -RealVector::OpBinaryMul operator*(const RealVector &a, const RealVector &b) -{ - return RealVector::OpBinaryMul (a, b); -} - -RealVector::OpBinaryMul::Negative operator*(const RealVectorNegative &a, const RealVector &b) -{ - return -RealVector::OpBinaryMul (-a, b); -} - -RealVector::OpBinaryMul::Negative operator*(const RealVector &a, const RealVectorNegative &b) -{ - return -RealVector::OpBinaryMul (a, -b); -} - -RealVector::OpBinaryMul operator*(const RealVectorNegative &a, const RealVectorNegative &b) -{ - return RealVector::OpBinaryMul (-a, -b); -} - -RealVector::OpBinaryDiv operator/(const RealVector &a, const RealVector &b) -{ - return RealVector::OpBinaryDiv (a, b); -} - -RealVector::OpBinaryDiv::Negative operator/(const RealVectorNegative &a, const RealVector &b) -{ - return -RealVector::OpBinaryDiv (-a, b); -} - -RealVector::OpBinaryDiv::Negative operator/(const RealVector &a, const RealVectorNegative &b) -{ - return -RealVector::OpBinaryDiv (a, -b); -} - -RealVector::OpBinaryDiv operator/(const RealVectorNegative &a, const RealVectorNegative &b) -{ - return RealVector::OpBinaryDiv (-a, -b); -} diff --git a/RealVector.hpp.inherit b/RealVector.hpp.inherit deleted file mode 100755 index 5da85fc..0000000 --- a/RealVector.hpp.inherit +++ /dev/null @@ -1,403 +0,0 @@ -#ifndef _REAL_HPP_ -#define _REAL_HPP_ - -#include -#include -#include - -void RealDebug(char *fmtstr, ...); - -class RealException -{ -public: - RealException (std::string s) - { - m_what = s; - } - ~RealException() - { - } - std::string& what() - { - return m_what; - } -private: - std::string m_what; -}; - -class RealVectorNegative; - -class RealVector -{ -public: - - struct OpBinaryAdd - { - struct Negative - { - Negative(const OpBinaryAdd src) - : a(src.a) - , b(src.b) - { - } - - OpBinaryAdd operator-() const - { - return OpBinaryAdd(a, b); - } - const RealVector &a; - const RealVector &b; - - private: - Negative& operator=(const Negative&); - }; - - OpBinaryAdd(const RealVector &a, const RealVector &b) - : a(a) - , b(b) - { - } - - Negative operator-() const - { - return Negative(*this); - } - - const OpBinaryAdd& operator+() const - { - return *this; - } - - ~OpBinaryAdd() - { - } - const RealVector &a; - const RealVector &b; - - private: - OpBinaryAdd& operator=(const OpBinaryAdd&); - }; - - struct OpBinarySub - { - struct Negative - { - Negative(const OpBinarySub src) - : a(src.a) - , b(src.b) - { - } - - OpBinarySub operator-() const - { - return OpBinarySub(a, b); - } - const RealVector &a; - const RealVector &b; - - private: - Negative& operator=(const Negative&); - }; - - OpBinarySub(const RealVector &a, const RealVector &b) - : a(a) - , b(b) - { - } - - ~OpBinarySub() - { - } - - Negative operator-() const - { - return Negative(*this); - } - - const OpBinarySub& operator+() const - { - return *this; - } - - const RealVector &a; - const RealVector &b; - - private: - OpBinarySub& operator=(const OpBinarySub&); - }; - - struct OpBinaryMul - { - struct Negative - { - Negative(const OpBinaryMul src) - : a(src.a) - , b(src.b) - { - } - - OpBinaryMul operator-() const - { - return OpBinaryMul(a, b); - } - const RealVector &a; - const RealVector &b; - - private: - Negative& operator=(const Negative&); - }; - - OpBinaryMul(const RealVector &a, const RealVector &b) - : a(a) - , b(b) - { - } - - Negative operator-() const - { - return Negative(*this); - } - - const OpBinaryMul& operator+() const - { - return *this; - } - - ~OpBinaryMul() - { - } - const RealVector &a; - const RealVector &b; - - private: - OpBinaryMul& operator=(const OpBinaryMul&); - }; - - struct OpBinaryDiv - { - struct Negative - { - Negative(const OpBinaryDiv src) - : a(src.a) - , b(src.b) - { - } - - OpBinaryDiv operator-() const - { - return OpBinaryDiv(a, b); - } - const RealVector &a; - const RealVector &b; - - private: - Negative& operator=(const Negative&); - }; - - OpBinaryDiv(const RealVector &a, const RealVector &b) - : a(a) - , b(b) - { - } - - Negative operator-() const - { - return Negative(*this); - } - - const OpBinaryDiv& operator+() const - { - return *this; - } - - ~OpBinaryDiv() - { - } - const RealVector &a; - const RealVector &b; - - private: - OpBinaryDiv& operator=(const OpBinaryDiv&); - }; - - ~RealVector(void); - - // Standard constructor - RealVector(uint32_t size, radio_float_t *real=0); - - // Copy constructor - RealVector(const RealVector &src); - - // Slicing constructor - RealVector(RealVector &src, uint32_t from, uint32_t step, uint32_t to); - - // Negative resolver copy constructor - RealVector(const RealVectorNegative &src); - - // OpBinaryAdd resolver copy constructor - RealVector(const OpBinaryAdd &src); - - // OpBinaryAdd::Negative resolver copy constructor - RealVector(const OpBinaryAdd::Negative &src); - - // OpBinarySub resolver copy constructor - RealVector(const OpBinarySub &src); - - // OpBinaryMul resolver copy constructor - RealVector(const OpBinaryMul &src); - - // OpBinaryMul::Negative resolver copy constructor - RealVector(const OpBinaryMul::Negative &src); - - // OpBinaryDiv resolver copy constructor - RealVector(const OpBinaryDiv &src); - - // OpBinaryDiv::Negative resolver copy constructor - RealVector(const OpBinaryDiv::Negative &src); - - // Scalar constructor - RealVector(radio_float_t real); - - uint32_t getSize() const; - - radio_float_t getValue() const; - - RealVector at(uint32_t const &i); - void print(char *pPrefix) const; - - RealVectorNegative operator-() const; - const RealVector& operator+() const; - - // Assignments - RealVector& operator=(const RealVector &src); - RealVector& operator+=(const RealVector &src); - RealVector& operator-=(const RealVector &src); - RealVector& operator*=(const RealVector &src); - RealVector& operator/=(const RealVector &src); - - RealVector& operator=(const RealVectorNegative &src); - RealVector& operator+=(const RealVectorNegative &src); - RealVector& operator-=(const RealVectorNegative &src); - RealVector& operator*=(const RealVectorNegative &src); - RealVector& operator/=(const RealVectorNegative &src); - - RealVector& operator=(const OpBinaryAdd &src); - RealVector& operator+=(const OpBinaryAdd &src); - RealVector& operator-=(const OpBinaryAdd &src); - RealVector& operator*=(const OpBinaryAdd &src); - RealVector& operator/=(const OpBinaryAdd &src); - - RealVector& operator=(const OpBinaryAdd::Negative &src); - RealVector& operator+=(const OpBinaryAdd::Negative &src); - RealVector& operator-=(const OpBinaryAdd::Negative &src); - RealVector& operator*=(const OpBinaryAdd::Negative &src); - RealVector& operator/=(const OpBinaryAdd::Negative &src); - - RealVector& operator=(const OpBinarySub &src); - RealVector& operator+=(const OpBinarySub &src); - RealVector& operator-=(const OpBinarySub &src); - RealVector& operator*=(const OpBinarySub &src); - RealVector& operator/=(const OpBinarySub &src); - - RealVector& operator=(const OpBinaryMul &src); - RealVector& operator+=(const OpBinaryMul &src); - RealVector& operator-=(const OpBinaryMul &src); - RealVector& operator*=(const OpBinaryMul &src); - RealVector& operator/=(const OpBinaryMul &src); - - RealVector& operator=(const OpBinaryMul::Negative &src); - RealVector& operator+=(const OpBinaryMul::Negative &src); - RealVector& operator-=(const OpBinaryMul::Negative &src); - RealVector& operator*=(const OpBinaryMul::Negative &src); - RealVector& operator/=(const OpBinaryMul::Negative &src); - - RealVector& operator=(const OpBinaryDiv &src); - RealVector& operator+=(const OpBinaryDiv &src); - RealVector& operator-=(const OpBinaryDiv &src); - RealVector& operator*=(const OpBinaryDiv &src); - RealVector& operator/=(const OpBinaryDiv &src); - - RealVector& operator=(const OpBinaryDiv::Negative &src); - RealVector& operator+=(const OpBinaryDiv::Negative &src); - RealVector& operator-=(const OpBinaryDiv::Negative &src); - RealVector& operator*=(const OpBinaryDiv::Negative &src); - RealVector& operator/=(const OpBinaryDiv::Negative &src); - -private: - uint32_t m_size; - radio_float_t m_real; - radio_float_t *m_pBufReal; - radio_float_t *m_pPtrReal; - - _inline void checkSize(uint32_t size1, uint32_t size2) - { - try - { - if ((size1 != size2) && (size2 != 1)) - { - throw(RealException("Size mismatch")); - } - } - catch(RealException &exc) - { - RealDebug("Problem: %s\n", exc.what().c_str()); - } - } - -}; - -class RealVectorNegative : public RealVector -{ -public: - RealVectorNegative(const RealVector &src) - : RealVector(src) - , m_iamNegative(true) - { - } - - const RealVector& operator-() const - { - return (RealVector&)*this; - } - - const RealVectorNegative& operator+() const - { - return *this; - } - -private: - bool m_iamNegative; - RealVectorNegative& operator=(const RealVectorNegative&); -}; - - -// Non-Member -// Binary Operators -// Returning RealVector::OpBinary -RealVector::OpBinaryAdd operator+(const RealVector &a, const RealVector &b); -#if 0 -RealVector::OpBinarySub operator+(const RealVectorNegative &a, const RealVector &b); -RealVector::OpBinarySub operator+(const RealVector &a, const RealVectorNegative &b); -RealVector::OpBinaryAdd::Negative operator+(const RealVectorNegative &a, const RealVectorNegative &b); -#endif - -RealVector::OpBinarySub operator-(const RealVector &a, const RealVector &b); -#if 0 -RealVector::OpBinaryAdd::Negative operator-(const RealVectorNegative &a, const RealVector &b); -RealVector::OpBinaryAdd operator-(const RealVector &a, const RealVectorNegative &b); -RealVector::OpBinarySub operator-(const RealVectorNegative &a, const RealVectorNegative &b); -#endif - -RealVector::OpBinaryMul operator*(const RealVector &a, const RealVector &b); -#if 0 -RealVector::OpBinaryMul::Negative operator*(const RealVectorNegative &a, const RealVector &b); -RealVector::OpBinaryMul::Negative operator*(const RealVector &a, const RealVectorNegative &b); -RealVector::OpBinaryMul operator*(const RealVectorNegative &a, const RealVectorNegative &b); -#endif - -RealVector::OpBinaryDiv operator/(const RealVector &a, const RealVector &b); -RealVector::OpBinaryDiv::Negative operator/(const RealVectorNegative &a, const RealVector &b); -RealVector::OpBinaryDiv::Negative operator/(const RealVector &a, const RealVectorNegative &b); -RealVector::OpBinaryDiv operator/(const RealVectorNegative &a, const RealVectorNegative &b); - -#endif // _REAL_HPP_ \ No newline at end of file