From 5f8f8e005030f9c3105314fbc460cda68960f585 Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 10 Jun 2020 15:36:36 +0300 Subject: [PATCH] remove pifixedpoint.h --- src_main/math/pifixedpoint.h | 90 ------------------------------------ src_main/math/pimathmodule.h | 1 - 2 files changed, 91 deletions(-) delete mode 100644 src_main/math/pifixedpoint.h diff --git a/src_main/math/pifixedpoint.h b/src_main/math/pifixedpoint.h deleted file mode 100644 index facffa53..00000000 --- a/src_main/math/pifixedpoint.h +++ /dev/null @@ -1,90 +0,0 @@ -/*! \file pifixedpoint.h - * \brief Class for fixed point numbers -*/ -/* - PIP - Platform Independent Primitives - Class for fixed point numbers - Andrey Bychkov work.a.b@yandex.ru - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . -*/ - -#include "picout.h" - -#ifndef PIFIXEDPOINT_H -#define PIFIXEDPOINT_H - -template -class PIP_EXPORT PIFixedPoint { -public: - typedef PIFixedPoint fp; - PIFixedPoint(const Type &v = Type()) {val = fpv(v);} - PIFixedPoint(const fp &v) {val = v.val;} - PIFixedPoint(const float &v) {val = Precision == 0 ? Type(v) : Type(v * (2 << (Precision-1)));} - PIFixedPoint(const double &v) {val = Precision == 0 ? Type(v) : Type(v * (2 << (Precision-1)));} - - template - fp & operator =(const T & v) {val = fpv(Type(v)); return *this;} - fp & operator =(const fp & v) {val = v.val; return *this;} - fp & operator =(const float &v) {val = PIFixedPoint(v).val; return *this;} - fp & operator =(const double &v) {val = PIFixedPoint(v).val; return *this;} - fp & operator =(const long double &v) {val = PIFixedPoint(v).val; return *this;} - fp operator -() {fp p = fp(*this); p.val = -val; return p;} - bool operator ==(const fp & v) const {return val == v.val;} - bool operator !=(const fp & v) const {return val != v.val;} - - void operator +=(const fp & v) {val += v.val;} - void operator -=(const fp & v) {val -= v.val;} - - void operator *=(const fp & v) {val = fpi(val *v.val);} - void operator /=(const fp & v) {val = fpv(val) / v.val;} - - fp operator +(const fp & v) {fp p = fp(*this); p.val += v.val; return p;} - fp operator -(const fp & v) {fp p = fp(*this); p.val -= v.val; return p;} - - fp operator *(const fp & v) {fp p; p.val = fpi(val * v.val); return p;} - fp operator /(const fp & v) {fp p; p.val = fpv(val) / v.val; return p;} - - Type fpv(Type v) const {return Type(v << Precision);} - Type fpi(Type v) const {return Type(v >> Precision);} - Type fpc(Type v) const {return v - fpv(fpi(v));} - Type val; -}; - - -template -inline PICout operator <<(PICout s, const PIFixedPoint & v) { - s.space(); s.setControl(0, true); - if (Precision == 0) s << v.val; - else { - std::stringstream ss,sr; - Type tmp = 10; - int n = 1; - Type rs = (2 << Precision-1); - while(tmp < rs) tmp = tmp*10, n++; - tmp *= 10; n++; - Type rv = v.fpc(v.val); - if (rv != 0) tmp = tmp / (rs / rv); - ss << tmp; - PIString r = ss.str(); - if (rv == 0) r.pop_front(); - else r.expandLeftTo(n,'0'); - sr << v.fpi(v.val); - s << PIString(sr.str()) + "." + r; - } - s.restoreControl(); - return s; -} - -#endif // PIFIXEDPOINT_H diff --git a/src_main/math/pimathmodule.h b/src_main/math/pimathmodule.h index 00ef4154..ec0ca259 100644 --- a/src_main/math/pimathmodule.h +++ b/src_main/math/pimathmodule.h @@ -25,7 +25,6 @@ #include "pievaluator.h" #include "pifft.h" #include "picrc.h" -#include "pifixedpoint.h" #include "piquaternion.h" #endif // PIMATHMODULE_H