Chi-Tech
function_dimA_to_dimB.h
Go to the documentation of this file.
1#ifndef CHITECH_CHI_MATH_FUNCTION_DIMA_TO_DIMB_H
2#define CHITECH_CHI_MATH_FUNCTION_DIMA_TO_DIMB_H
3
4#include "ChiObject.h"
5#include <functional>
6
7namespace chi_math
8{
9typedef std::function<double(double)> ScalarScalarFunction;
10typedef std::function<double(double, double, double, double)>
13{
14private:
15 const size_t input_dimension_;
16 const size_t output_dimension_;
17
18public:
20 explicit FunctionDimAToDimB(const chi::InputParameters& params);
21
22 size_t InputDimension() const { return input_dimension_; }
23 size_t OutputDimension() const { return output_dimension_; }
24
25 virtual bool HasSlope() const = 0;
26 virtual bool HasCurvature() const = 0;
27
28 virtual double ScalarFunction1Parameter(double) const;
29 virtual double ScalarFunctionSlope1Parameter(double) const;
30 virtual double ScalarFunctionCurvature1Parameter(double) const;
31
32 virtual double
33 ScalarFunction4Parameters(double, double, double, double) const;
34 virtual double
35 ScalarFunctionSlope4Parameters(double, double, double, double) const;
36 virtual double
37 ScalarFunctionCurvature4Parameters(double, double, double, double) const;
38
39 virtual std::vector<double>
40 Evaluate(const std::vector<double>& vals) const = 0;
41 virtual std::vector<double>
42 EvaluateSlope(const std::vector<double>& vals) const
43 {
44 return {0.0};
45 }
46};
47
48} // namespace chi_math
49
50#endif // CHITECH_CHI_MATH_FUNCTION_DIMA_TO_DIMB_H
virtual double ScalarFunction4Parameters(double, double, double, double) const
FunctionDimAToDimB(const chi::InputParameters &params)
virtual std::vector< double > Evaluate(const std::vector< double > &vals) const =0
virtual double ScalarFunctionCurvature1Parameter(double) const
virtual double ScalarFunctionCurvature4Parameters(double, double, double, double) const
static chi::InputParameters GetInputParameters()
virtual std::vector< double > EvaluateSlope(const std::vector< double > &vals) const
virtual bool HasSlope() const =0
virtual double ScalarFunctionSlope4Parameters(double, double, double, double) const
virtual bool HasCurvature() const =0
virtual double ScalarFunction1Parameter(double) const
virtual double ScalarFunctionSlope1Parameter(double) const
std::function< double(double, double, double, double)> ScalarXYZTFunction
std::function< double(double)> ScalarScalarFunction