46 lines
1.3 KiB
C++
46 lines
1.3 KiB
C++
/***************************************************************************
|
|
* Copyright (c) 2023 Ondsel, Inc. *
|
|
* *
|
|
* This file is part of OndselSolver. *
|
|
* *
|
|
* See LICENSE file for details about copyright. *
|
|
***************************************************************************/
|
|
|
|
#include "ExpressionX.h"
|
|
#include "Constant.h"
|
|
|
|
using namespace MbD;
|
|
|
|
MbD::ExpressionX::ExpressionX(Symsptr arg) : FunctionX(arg)
|
|
{
|
|
}
|
|
|
|
void MbD::ExpressionX::xexpression(Symsptr arg, Symsptr func)
|
|
{
|
|
//"
|
|
//Future modification :
|
|
//Check that func is a function of arg.
|
|
//No need for self to be dependent of arg since self is dependent of func which is indirectly
|
|
//dependent of of arg.
|
|
//"
|
|
|
|
xx = arg;
|
|
expression = func;
|
|
}
|
|
|
|
Symsptr MbD::ExpressionX::differentiateWRTx()
|
|
{
|
|
return expression->differentiateWRT(xx);
|
|
}
|
|
|
|
Symsptr MbD::ExpressionX::differentiateWRT(Symsptr var)
|
|
{
|
|
if (this == var.get()) return sptrConstant(1.0);
|
|
return expression->differentiateWRT(var);
|
|
}
|
|
|
|
double MbD::ExpressionX::getValue()
|
|
{
|
|
return expression->getValue();
|
|
}
|