Janus 2.0.0
High-performance C++20 dual-mode numerical framework
Loading...
Searching...
No Matches
Sparsity.hpp File Reference

Sparsity pattern analysis, graph coloring, and sparse derivative evaluators. More...

#include "Function.hpp"
#include "JanusError.hpp"
#include "JanusIO.hpp"
#include "JanusTypes.hpp"
#include <casadi/casadi.hpp>
#include <cmath>
#include <limits>
#include <sstream>
#include <string>
#include <tuple>
#include <utility>
#include <vector>
Include dependency graph for Sparsity.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  janus::SparsityPattern
class  janus::GraphColoring
 Wrapper around a CasADi graph coloring assignment. More...
struct  janus::detail::SparseJacobianArtifacts
struct  janus::detail::SparseHessianArtifacts
class  janus::SparseJacobianEvaluator
 Cached sparse Jacobian evaluator with fixed structural ordering. More...
class  janus::SparseHessianEvaluator
 Cached sparse Hessian evaluator with fixed structural ordering. More...
struct  janus::NaNSparsityOptions
 Options for NaN-propagation sparsity detection. More...

Namespaces

namespace  janus
namespace  janus::detail
 Smooth approximation of ReLU function: softplus(x) = (1/beta) * log(1 + exp(beta * x)).

Enumerations

enum class  janus::SparseJacobianMode { janus::Forward , janus::Reverse }
 Preferred directional mode for a sparse Jacobian evaluator. More...

Functions

std::vector< SymbolicScalarjanus::detail::to_mx_vector (const std::vector< SymbolicArg > &args)
std::vector< SymbolicArgjanus::detail::to_symbolic_args (const std::vector< SymbolicScalar > &args)
SymbolicScalar janus::detail::stack_nonzeros (const SymbolicScalar &expr)
void janus::detail::validate_function_indices (const Function &fn, int output_idx, int input_idx, const char *where)
std::vector< SymbolicScalarjanus::detail::symbolic_inputs_like (const Function &fn, const std::string &prefix)
GraphColoring janus::detail::make_forward_coloring (const casadi::Sparsity &jac_sparsity)
GraphColoring janus::detail::make_reverse_coloring (const casadi::Sparsity &jac_sparsity)
SparseJacobianArtifacts janus::detail::make_sparse_jacobian_artifacts (const std::vector< SymbolicArg > &expressions, const std::vector< SymbolicArg > &variables, const std::string &name)
SparseJacobianArtifacts janus::detail::make_sparse_jacobian_artifacts (const Function &fn, int output_idx, int input_idx, const std::string &name)
SparseHessianArtifacts janus::detail::make_sparse_hessian_artifacts (const SymbolicArg &expression, const std::vector< SymbolicArg > &variables, const std::string &name)
SparseHessianArtifacts janus::detail::make_sparse_hessian_artifacts (const Function &fn, int output_idx, int input_idx, const std::string &name)
SparsityPattern janus::detail::function_jacobian_sparsity (const Function &fn, int output_idx, int input_idx)
SparsityPattern janus::sparsity_of_jacobian (const SymbolicScalar &expr, const SymbolicScalar &vars)
 Get Jacobian sparsity without computing the full Jacobian.
SparsityPattern janus::sparsity_of_hessian (const SymbolicScalar &expr, const SymbolicScalar &vars)
 Get Hessian sparsity of a scalar expression.
SparsityPattern janus::get_jacobian_sparsity (const Function &fn, int output_idx=0, int input_idx=0)
 Get sparsity of a janus::Function Jacobian.
SparsityPattern janus::get_hessian_sparsity (const Function &fn, int output_idx=0, int input_idx=0)
 Get Hessian sparsity of a scalar janus::Function output.
SparsityPattern janus::get_sparsity_in (const Function &fn, int input_idx=0)
 Get input sparsity of a janus::Function.
SparsityPattern janus::get_sparsity_out (const Function &fn, int output_idx=0)
 Get output sparsity of a janus::Function.
SparseJacobianEvaluator janus::sparse_jacobian (const SymbolicArg &expression, const SymbolicArg &variables, const std::string &name="")
 Compile a sparse Jacobian evaluator from symbolic expressions.
SparseJacobianEvaluator janus::sparse_jacobian (const std::vector< SymbolicArg > &expressions, const std::vector< SymbolicArg > &variables, const std::string &name="")
 Compile a sparse Jacobian evaluator from vector arguments.
SparseJacobianEvaluator janus::sparse_jacobian (const Function &fn, int output_idx=0, int input_idx=0, const std::string &name="")
 Compile a sparse Jacobian evaluator from a janus::Function.
SparseHessianEvaluator janus::sparse_hessian (const SymbolicArg &expression, const SymbolicArg &variables, const std::string &name="")
 Compile a sparse Hessian evaluator from symbolic expressions.
SparseHessianEvaluator janus::sparse_hessian (const SymbolicArg &expression, const std::vector< SymbolicArg > &variables, const std::string &name="")
 Compile a sparse Hessian evaluator from vector arguments.
SparseHessianEvaluator janus::sparse_hessian (const Function &fn, int output_idx=0, int input_idx=0, const std::string &name="")
 Compile a sparse Hessian evaluator from a janus::Function.
template<typename Func>
SparsityPattern janus::nan_propagation_sparsity (Func &&fn, int n_inputs, int n_outputs, const NaNSparsityOptions &opts={})
 Detect Jacobian sparsity using NaN propagation.
SparsityPattern janus::nan_propagation_sparsity (const Function &fn, const NaNSparsityOptions &opts={})
 Detect Jacobian sparsity of a janus::Function using NaN propagation.

Detailed Description

Sparsity pattern analysis, graph coloring, and sparse derivative evaluators.