184 lines
4.7 KiB
C++
184 lines
4.7 KiB
C++
|
|
/*
|
|||
|
|
* SignalMathSetup.hh
|
|||
|
|
*
|
|||
|
|
* Created on: 14 <EFBFBD><EFBFBD><EFBFBD> 2020 <EFBFBD>.
|
|||
|
|
* Author: LeonidTitov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALMATHSETUP_HH_
|
|||
|
|
#define UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALMATHSETUP_HH_
|
|||
|
|
|
|||
|
|
#include "../ISetupStep.hh"
|
|||
|
|
|
|||
|
|
#include "../../schematic/SignalMath.hpp"
|
|||
|
|
|
|||
|
|
namespace application { namespace schematic {
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> abs = |a|.
|
|||
|
|
struct SignalAbs : public ISetupStep {
|
|||
|
|
|
|||
|
|
systemic::ISignal * value_a = nullptr;
|
|||
|
|
|
|||
|
|
bool input( Environment & env );
|
|||
|
|
void build( Environment & env );
|
|||
|
|
|
|||
|
|
struct Links {
|
|||
|
|
Environment::SignalId a;
|
|||
|
|
Environment::SignalId abs; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const Links & links;
|
|||
|
|
|
|||
|
|
SignalAbs( const Links & links ) : links(links) {}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> subtraction = a - b.
|
|||
|
|
struct SignalSubtraction : public ISetupStep {
|
|||
|
|
|
|||
|
|
systemic::ISignal * value_a = nullptr;
|
|||
|
|
systemic::ISignal * value_b = nullptr;
|
|||
|
|
|
|||
|
|
bool input( Environment & env );
|
|||
|
|
void build( Environment & env );
|
|||
|
|
|
|||
|
|
struct Links {
|
|||
|
|
Environment::SignalId a; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "a".
|
|||
|
|
Environment::SignalId b; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "b".
|
|||
|
|
Environment::SignalId subtraction; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const Links & links;
|
|||
|
|
|
|||
|
|
SignalSubtraction( const Links & links ) : links(links) {}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> addition = a + b.
|
|||
|
|
struct SignalAddition : public ISetupStep {
|
|||
|
|
|
|||
|
|
systemic::ISignal * value_a = nullptr;
|
|||
|
|
systemic::ISignal * value_b = nullptr;
|
|||
|
|
|
|||
|
|
bool input( Environment & env );
|
|||
|
|
void build( Environment & env );
|
|||
|
|
|
|||
|
|
struct Links {
|
|||
|
|
Environment::SignalId a; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "a".
|
|||
|
|
Environment::SignalId b; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "b".
|
|||
|
|
Environment::SignalId addition; //!<<3C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const Links & links;
|
|||
|
|
|
|||
|
|
SignalAddition( const Links & links ) : links(links) {}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> multiplication = a * b.
|
|||
|
|
struct SignalMultiplication : public ISetupStep {
|
|||
|
|
|
|||
|
|
systemic::ISignal * value_a = nullptr;
|
|||
|
|
systemic::ISignal * value_b = nullptr;
|
|||
|
|
|
|||
|
|
bool input( Environment & env );
|
|||
|
|
void build( Environment & env );
|
|||
|
|
|
|||
|
|
struct Links {
|
|||
|
|
Environment::SignalId a; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "a".
|
|||
|
|
Environment::SignalId b; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "b".
|
|||
|
|
Environment::SignalId multiplication; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const Links & links;
|
|||
|
|
|
|||
|
|
SignalMultiplication( const Links & links ) : links(links) {}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> division = a / b.
|
|||
|
|
struct SignalDivision : public ISetupStep {
|
|||
|
|
|
|||
|
|
systemic::ISignal * value_a = nullptr;
|
|||
|
|
systemic::ISignal * value_b = nullptr;
|
|||
|
|
|
|||
|
|
bool input( Environment & env );
|
|||
|
|
void build( Environment & env );
|
|||
|
|
|
|||
|
|
struct Links {
|
|||
|
|
Environment::SignalId a; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "a".
|
|||
|
|
Environment::SignalId b; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "b".
|
|||
|
|
Environment::SignalId division; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const Links & links;
|
|||
|
|
|
|||
|
|
SignalDivision( const Links & links ) : links(links) {}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sqrt = sqrt(a).
|
|||
|
|
struct SignalSquareRoot : public ISetupStep {
|
|||
|
|
|
|||
|
|
systemic::ISignal * value_a = nullptr;
|
|||
|
|
|
|||
|
|
bool input( Environment & env );
|
|||
|
|
void build( Environment & env );
|
|||
|
|
|
|||
|
|
struct Links {
|
|||
|
|
Environment::SignalId a; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "a".
|
|||
|
|
Environment::SignalId sqrt; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22>".
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const Links & links;
|
|||
|
|
|
|||
|
|
SignalSquareRoot( const Links & links ) : links(links) {}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
////!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sqr = a^2.
|
|||
|
|
//struct SignalSquare : public ISetupStep {
|
|||
|
|
//
|
|||
|
|
// systemic::ISignal * value_a = nullptr;
|
|||
|
|
//
|
|||
|
|
// bool input( Environment & env );
|
|||
|
|
// void build( Environment & env );
|
|||
|
|
//
|
|||
|
|
// struct Links {
|
|||
|
|
// Environment::SignalId a; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "a".
|
|||
|
|
// Environment::SignalId sqr; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22>".
|
|||
|
|
// };
|
|||
|
|
//
|
|||
|
|
// const Links & links;
|
|||
|
|
//
|
|||
|
|
// SignalSquare( const Links & links ) : links(links) {}
|
|||
|
|
//
|
|||
|
|
//};
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> power = pow(a, b).
|
|||
|
|
struct SignalPower : public ISetupStep {
|
|||
|
|
|
|||
|
|
systemic::ISignal * value_a = nullptr;
|
|||
|
|
systemic::ISignal * value_b = nullptr;
|
|||
|
|
|
|||
|
|
bool input( Environment & env );
|
|||
|
|
void build( Environment & env );
|
|||
|
|
|
|||
|
|
struct Links {
|
|||
|
|
Environment::SignalId a; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "a".
|
|||
|
|
Environment::SignalId b; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "b".
|
|||
|
|
Environment::SignalId power; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "b" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22>".
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const Links & links;
|
|||
|
|
|
|||
|
|
SignalPower( const Links & links ) : links(links) {}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /* UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALMATH_HH_ */
|