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 <20><><EFBFBD>. 2017 <20>.
|
||
* 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;
|
||
}
|