25 static std::string
format(
const Scalar &value,
int precision = 6) {
26 std::ostringstream ss;
27 ss << std::setprecision(precision) << value;
31 static std::string
format_fixed(
const Scalar &value,
int precision = 6) {
32 std::ostringstream ss;
33 ss << std::fixed << std::setprecision(precision) << value;
38 std::ostringstream ss;
39 ss << std::scientific << std::setprecision(precision) << value;
48 static std::string
format(
const double &value,
int precision = 6) {
49 std::ostringstream ss;
50 ss << std::setprecision(precision) << value;
54 static std::string
format_fixed(
const double &value,
int precision = 6) {
55 std::ostringstream ss;
56 ss << std::fixed << std::setprecision(precision) << value;
61 std::ostringstream ss;
62 ss << std::scientific << std::setprecision(precision) << value;
76 static std::string
format(
const SymbolicScalar &value,
int = 6) {
77 std::ostringstream ss;
82 static std::string
format_fixed(
const SymbolicScalar &value,
int = 6) {
98 static bool is_constant(
const SymbolicScalar &value) {
return value.is_constant(); }
104 return static_cast<double>(casadi::DM(value));
115template <
typename Scalar>
inline std::string
FormatScalar(
const Scalar &value,
int precision = 6) {
122template <
typename Scalar>
130template <
typename Scalar>
146 if constexpr (std::is_same_v<Scalar, double>) {
149 }
else if constexpr (std::is_same_v<Scalar, SymbolicScalar>) {
150 return value.is_constant();
160template <
typename Scalar>
double EvaluateToDouble(
const Scalar &value,
double default_val = 0.0) {
161 if constexpr (std::is_same_v<Scalar, double>) {
163 }
else if constexpr (std::is_same_v<Scalar, SymbolicScalar>) {
164 if (value.is_constant()) {
165 return static_cast<double>(casadi::DM(value));
Core type definitions, concepts, and configuration for Icarus.
Definition ScalarFormat.hpp:17
std::string FormatScalar(const Scalar &value, int precision=6)
Format a scalar value (auto-dispatch).
Definition ScalarFormat.hpp:115
std::string FormatScalarFixed(const Scalar &value, int precision=6)
Format a scalar with fixed notation.
Definition ScalarFormat.hpp:123
bool CanEvaluateToDouble(const Scalar &value)
Check if a value can be safely converted to double.
Definition ScalarFormat.hpp:145
std::string FormatScalarScientific(const Scalar &value, int precision=6)
Format a scalar with scientific notation.
Definition ScalarFormat.hpp:131
double EvaluateToDouble(const Scalar &value, double default_val=0.0)
Safely get double value if possible.
Definition ScalarFormat.hpp:160
constexpr bool IsNumericScalar()
Check if a scalar type is numeric.
Definition ScalarFormat.hpp:138