20#ifndef _MULTIVARIATE_QUADRATIC_FUNCTION_H_
21#define _MULTIVARIATE_QUADRATIC_FUNCTION_H_
23#include "multivariate_linear_function.h"
24#include "mbsim/utils/utils.h"
30 template<
typename Ret,
typename Arg>
35 fmatvec::SqrMatV a2pa2T;
38 void seta2(
const fmatvec::SqrMatV &a2_) {
40 a2pa2T <<= a2 + a2.T();
42 Ret operator()(
const Arg &x)
override {
45 typename B::DRetDArg parDer(
const Arg &x)
override {
46 return B::a1+x.T()*a2pa2T;
48 typename B::DRetDArg parDerDirDer(
const Arg &xDir,
const Arg &x)
override {
49 return xDir.T()*a2pa2T;
51 void initializeUsingXML(xercesc::DOMElement *element)
override {
53 auto e=MBXMLUtils::E(element)->getFirstElementChildNamed(MBSIM%
"a2");
54 seta2(MBXMLUtils::E(e)->getText<fmatvec::SqrMatV>());
Definition: multivariate_linear_function.h:28
Definition: multivariate_quadratic_function.h:28
namespace MBSim
Definition: bilateral_constraint.cc:30