diff options
| author | 2018-09-02 12:22:03 +0200 | |
|---|---|---|
| committer | 2018-09-02 12:22:19 +0200 | |
| commit | 49567f95bf6985707fcf8c2836c761ce39602636 (patch) | |
| tree | 8c57132da55d15f14d7f604a61396d266afff00a /node/scalaroperatornode.cpp | |
| parent | e5a37ca38ef7b28695313e4b59f62c03d4801f2d (diff) | |
| download | OneRoll-49567f95bf6985707fcf8c2836c761ce39602636.tar.gz OneRoll-49567f95bf6985707fcf8c2836c761ce39602636.zip | |
Adding pow
Diffstat (limited to 'node/scalaroperatornode.cpp')
| -rw-r--r-- | node/scalaroperatornode.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp index 46c13c9..edc769d 100644 --- a/node/scalaroperatornode.cpp +++ b/node/scalaroperatornode.cpp @@ -81,7 +81,8 @@ void ScalarOperatorNode::run(ExecutionNode* previous) case Die::DIVIDE: m_scalarResult->setValue(divide(previousResult->getResult(Result::SCALAR).toReal(),internalResult->getResult(Result::SCALAR).toReal())); break; - default: + case Die::POW: + m_scalarResult->setValue(pow(previousResult->getResult(Result::SCALAR).toReal(),internalResult->getResult(Result::SCALAR).toReal())); break; } @@ -111,24 +112,28 @@ void ScalarOperatorNode::setInternalNode(ExecutionNode* node) } qint64 ScalarOperatorNode::add(qreal a,qreal b) { - return a+b; + return static_cast<qint64>(a+b); } qint64 ScalarOperatorNode::substract(qreal a,qreal b) { - return a-b; + return static_cast<qint64>(a-b); } qreal ScalarOperatorNode::divide(qreal a,qreal b) { - if(b==0) + if(qFuzzyCompare(b,0)) { m_errors.insert(DIVIDE_BY_ZERO,QObject::tr("Division by zero")); return 0; } - return (qreal)a/b; + return static_cast<qreal>(a/b); } qint64 ScalarOperatorNode::multiple(qreal a,qreal b) { - return a*b; + return static_cast<qint64>(a*b); +} +qint64 ScalarOperatorNode::pow(qreal a,qreal b) +{ + return static_cast<qint64>(std::pow(a,b)); } Die::ArithmeticOperator ScalarOperatorNode::getArithmeticOperator() const { @@ -157,9 +162,9 @@ QString ScalarOperatorNode::toString(bool wl) const case Die::DIVIDE: op="/"; break; - default: + case Die::POW: + op="^"; break; - } if(wl) { |