aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node/scalaroperatornode.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2018-09-02 12:22:03 +0200
committerRenaud G <renaud@rolisteam.org>2018-09-02 12:22:19 +0200
commit49567f95bf6985707fcf8c2836c761ce39602636 (patch)
tree8c57132da55d15f14d7f604a61396d266afff00a /node/scalaroperatornode.cpp
parente5a37ca38ef7b28695313e4b59f62c03d4801f2d (diff)
downloadOneRoll-49567f95bf6985707fcf8c2836c761ce39602636.tar.gz
OneRoll-49567f95bf6985707fcf8c2836c761ce39602636.zip
Adding pow
Diffstat (limited to 'node/scalaroperatornode.cpp')
-rw-r--r--node/scalaroperatornode.cpp21
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)
{