Namespaces | Typedefs | Functions | Variables
Marmot::NumericalAlgorithms::Differentiation::Complex Namespace Reference

Namespaces

 ScalarToTensor
 
 TensorToScalar
 
 TensorToTensor
 

Typedefs

using scalar_to_scalar_function_type = std::function< complexDouble(const complexDouble x) >
 
using vector_to_vector_function_type = std::function< Eigen::VectorXcd(const Eigen::VectorXcd &X) >
 
using complexDouble = std::complex< double >
 
template<size_t dim>
using tensor_to_scalar_function_type = std::function< std::complex< double >(const Fastor::Tensor< std::complex< double >, dim, dim > &T) >
 

Functions

double forwardDifference (const scalar_to_scalar_function_type &f, const double x)
 
std::tuple< Eigen::VectorXd, Eigen::MatrixXd > forwardDifference (const vector_to_vector_function_type &F, const Eigen::VectorXd &X)
 
Eigen::MatrixXd centralDifference (const vector_to_vector_function_type &F, const Eigen::VectorXd &X)
 
Eigen::MatrixXd fourthOrderAccurateDerivative (const vector_to_vector_function_type &F, const Eigen::VectorXd &X)
 
template<size_t dim>
Fastor::Tensor< double, dim, dim > forwardDifference (const tensor_to_scalar_function_type< dim > &F, const Fastor::Tensor< double, dim, dim > &T)
 
std::tuple< VectorXd, MatrixXd > forwardDifference (const vector_to_vector_function_type &F, const VectorXd &X)
 
MatrixXd centralDifference (const vector_to_vector_function_type &F, const VectorXd &X)
 
MatrixXd fourthOrderAccurateDerivative (const vector_to_vector_function_type &F, const VectorXd &X)
 

Variables

static const std::complex< double > imaginaryUnit = { 0, 1 }
 
static const std::complex< double > complexUnit = { 1, 1 }
 
static const std::complex< double > i_ = Marmot::Constants::sqrt2 / 2. * complexUnit
 
static const double imaginaryPerturbationSize = 1e-20
 
static const complexDouble imaginaryPerturbation = imaginaryPerturbationSize * imaginaryUnit
 

Typedef Documentation

◆ scalar_to_scalar_function_type

◆ vector_to_vector_function_type

using Marmot::NumericalAlgorithms::Differentiation::Complex::vector_to_vector_function_type = typedef std::function< Eigen::VectorXcd( const Eigen::VectorXcd& X ) >

◆ complexDouble

◆ tensor_to_scalar_function_type

template<size_t dim>
using Marmot::NumericalAlgorithms::Differentiation::Complex::tensor_to_scalar_function_type = typedef std::function< std::complex< double >( const Fastor::Tensor< std::complex< double >, dim, dim >& T ) >

Function Documentation

◆ forwardDifference() [1/4]

double Marmot::NumericalAlgorithms::Differentiation::Complex::forwardDifference ( const scalar_to_scalar_function_type f,
const double  x 
)

◆ forwardDifference() [2/4]

std::tuple< Eigen::VectorXd, Eigen::MatrixXd > Marmot::NumericalAlgorithms::Differentiation::Complex::forwardDifference ( const vector_to_vector_function_type F,
const Eigen::VectorXd &  X 
)

◆ centralDifference() [1/2]

Eigen::MatrixXd Marmot::NumericalAlgorithms::Differentiation::Complex::centralDifference ( const vector_to_vector_function_type F,
const Eigen::VectorXd &  X 
)

◆ fourthOrderAccurateDerivative() [1/2]

Eigen::MatrixXd Marmot::NumericalAlgorithms::Differentiation::Complex::fourthOrderAccurateDerivative ( const vector_to_vector_function_type F,
const Eigen::VectorXd &  X 
)

◆ forwardDifference() [3/4]

template<size_t dim>
Fastor::Tensor< double, dim, dim > Marmot::NumericalAlgorithms::Differentiation::Complex::forwardDifference ( const tensor_to_scalar_function_type< dim > &  F,
const Fastor::Tensor< double, dim, dim > &  T 
)

◆ forwardDifference() [4/4]

std::tuple< VectorXd, MatrixXd > Marmot::NumericalAlgorithms::Differentiation::Complex::forwardDifference ( const vector_to_vector_function_type F,
const VectorXd &  X 
)

◆ centralDifference() [2/2]

MatrixXd Marmot::NumericalAlgorithms::Differentiation::Complex::centralDifference ( const vector_to_vector_function_type F,
const VectorXd &  X 
)

◆ fourthOrderAccurateDerivative() [2/2]

MatrixXd Marmot::NumericalAlgorithms::Differentiation::Complex::fourthOrderAccurateDerivative ( const vector_to_vector_function_type F,
const VectorXd &  X 
)

Variable Documentation

◆ imaginaryUnit

const std::complex< double > Marmot::NumericalAlgorithms::Differentiation::Complex::imaginaryUnit = { 0, 1 }
static

◆ complexUnit

const std::complex< double > Marmot::NumericalAlgorithms::Differentiation::Complex::complexUnit = { 1, 1 }
static

◆ i_

const std::complex< double > Marmot::NumericalAlgorithms::Differentiation::Complex::i_ = Marmot::Constants::sqrt2 / 2. * complexUnit
static

◆ imaginaryPerturbationSize

const double Marmot::NumericalAlgorithms::Differentiation::Complex::imaginaryPerturbationSize = 1e-20
static

◆ imaginaryPerturbation

const complexDouble Marmot::NumericalAlgorithms::Differentiation::Complex::imaginaryPerturbation = imaginaryPerturbationSize * imaginaryUnit
static