mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
#include <poincare/normal_distribution_function.h>
|
|
#include <poincare/normal_distribution.h>
|
|
#include <poincare/square_root.h>
|
|
#include <assert.h>
|
|
|
|
namespace Poincare {
|
|
|
|
Expression NormalDistributionFunctionNode::shallowReduce(ReductionContext reductionContext) {
|
|
return NormalDistributionFunction(this).shallowReduce(reductionContext.context());
|
|
}
|
|
|
|
Expression NormalDistributionFunction::shallowReduce(Context * context, bool * stopReduction) {
|
|
if (stopReduction != nullptr) {
|
|
*stopReduction = true;
|
|
}
|
|
{
|
|
Expression e = Expression::defaultShallowReduce();
|
|
e = e.defaultHandleUnitsInChildren();
|
|
if (e.isUndefined()) {
|
|
return e;
|
|
}
|
|
}
|
|
|
|
// Check mu and var
|
|
bool muAndVarOK = false;
|
|
bool couldCheckMuAndVar = NormalDistribution::ExpressionMuAndVarAreOK(
|
|
&muAndVarOK,
|
|
childAtIndex(muIndex()),
|
|
childAtIndex(varIndex()),
|
|
context);
|
|
if (!couldCheckMuAndVar) {
|
|
return *this;
|
|
}
|
|
if (!muAndVarOK) {
|
|
return replaceWithUndefinedInPlace();
|
|
}
|
|
|
|
if (stopReduction != nullptr) {
|
|
*stopReduction = false;
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
}
|