38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
|
|
// This is an independent project of an individual developer. Dear PVS-Studio, please check it.
|
|||
|
|
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
|
|||
|
|
/*
|
|||
|
|
* SignalMajorization.cpp
|
|||
|
|
*
|
|||
|
|
* Created on: 22 <EFBFBD><EFBFBD><EFBFBD>. 2017 <EFBFBD>.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#include "SignalMajorization.hh"
|
|||
|
|
|
|||
|
|
#include <cmath>
|
|||
|
|
|
|||
|
|
systemic::detail::SignalMajorizationAnd::SignalMajorizationAnd(ISignal & first, ISignal & two,
|
|||
|
|
float delta) : a(first), b(two), error(delta)
|
|||
|
|
{}
|
|||
|
|
|
|||
|
|
systemic::detail::SignalMajorizationAnd::operator float() const {
|
|||
|
|
using namespace std;
|
|||
|
|
|
|||
|
|
float af = static_cast<float>(a);
|
|||
|
|
float bf = static_cast<float>(b);
|
|||
|
|
|
|||
|
|
return fabs(af - bf) > error || isnan(af) || isnan(bf) ? nanf("") : ( af + bf ) * 0.5f;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
systemic::detail::SignalMajorizationOr::SignalMajorizationOr( ISignal & first, ISignal & two ) : a(first), b(two)
|
|||
|
|
{}
|
|||
|
|
|
|||
|
|
systemic::detail::SignalMajorizationOr::operator float() const {
|
|||
|
|
using namespace std;
|
|||
|
|
|
|||
|
|
float af = static_cast<float>(a);
|
|||
|
|
float bf = static_cast<float>(b);
|
|||
|
|
|
|||
|
|
return isnan(af) ? ( isnan(bf) ? nanf("") : bf ) : af;
|
|||
|
|
}
|