对于多项式方程求解,这将是巨大的模板它有可用的任何类型:如何在提供`T = std :: complex <Q>`时避免嵌入`std :: complex`?
template <class number, int degree>
class PolynomialEquation
{
public:
private:
array<number, degree+1> myEquation;
array<complex<number>, degree> equationResult;
};
这允许,例如,在ℝdouble
用于输入,结果是std::complex<double>
在ℂ中(我们知道从2级开始,方程的解决方案通常落入ℂ,例如:x^2 + 1)。
但是,等式的输入也可以是std::complex
。在这种情况下,myEquation
的类型应该很复杂,但equationResult
不应该是std::complex<complex<T>>
,而只是T
类型的正常复数。
问题:
如何使equationResult
类型是子类型的std::complex
当方程提供std::complex
?
有没有像std :: is_complex_number一样的std::is_floating_point
?
也许我会称之为'poly_root_type_traits'或类似的东西 - 'to_complex'对于这件事背后的理由有点不清楚。 –