Für eine Polynomgleichung Löser, wäre es toll, es als Templat jede Art zur Verfügung zu haben:Wie vermeidet man eingebettete `std :: complex` wenn` T = std :: complex <Q> `?
template <class number, int degree>
class PolynomialEquation
{
public:
private:
array<number, degree+1> myEquation;
array<complex<number>, degree> equationResult;
};
Dies ermöglicht zum Beispiel double
in r für die Eingabe verwendet werden, und das Ergebnis std::complex<double>
sein in ℂ (wir wissen, dass ab Gleichung 2 und mehr Lösung zu Gleichung gewöhnlich in ∞ fällt, Beispiel: x^2 + 1). Die Eingabe in die Gleichung könnte auch eine std::complex
sein. In diesem Fall sollte der Typ myEquation
komplex sein, aber sollte NICHT ein std::complex<complex<T>>
sein, sondern nur eine normale komplexe Zahl vom Typ T
.
Fragen:
Wie die Art des equationResult
machen der Untertyp von std::complex
zu sein, wenn die Gleichung mit std::complex
zur Verfügung gestellt?
Gibt es eine std::is_floating_point
Entsprechung wie std :: is_complex_number?
Wahrscheinlich würde ich es 'poly_root_type_traits' oder so ähnlich nennen -' to_complex' ist ein wenig unklar über die Gründe hinter dieser Sache. –