complex.html

来自「ST20 Embedded Toolset R2.0.5用于开发基于ST20芯片」· HTML 代码 · 共 668 行 · 第 1/2 页

HTML
668
字号
<HTML><HEAD><TITLE>&lt;complex&gt;</TITLE></HEAD><BODY><H1><A NAME="&lt;complex&gt;"><CODE>&lt;complex&gt;</CODE></A></H1><HR><P><B><CODE><A HREF="#abs">abs</A>&#183; <A HREF="#arg">arg</A>&#183; <A HREF="#complex">complex</A>&#183; <A HREF="#conj">conj</A>&#183; <A HREF="#cos">cos</A>&#183; <A HREF="#cosh">cosh</A>&#183; <A HREF="#double_complex">double_complex</A>&#183; <A HREF="#exp">exp</A>&#183; <A HREF="#float_complex">float_complex</A>&#183; <A HREF="#imag">imag</A>&#183; <A HREF="#log">log</A>&#183; <A HREF="#log10">log10</A>&#183; <A HREF="#norm">norm</A>&#183; <A HREF="#operator!=">operator!=</A>&#183; <A HREF="#operator*">operator*</A>&#183; <A HREF="#operator+">operator+</A>&#183; <A HREF="#operator-">operator-</A>&#183; <A HREF="#operator/">operator/</A>&#183; <A HREF="#operator&lt;&lt;">operator&lt;&lt;</A>&#183; <A HREF="#operator==">operator==</A>&#183; <A HREF="#operator&gt;&gt;">operator&gt;&gt;</A>&#183; <A HREF="#polar">polar</A>&#183; <A HREF="#pow">pow</A>&#183; <A HREF="#real">real</A>&#183; <A HREF="#sin">sin</A>&#183; <A HREF="#sinh">sinh</A>&#183; <A HREF="#sqrt">sqrt</A>&#183; <A HREF="#tan">tan</A>&#183; <A HREF="#tanh">tanh</A>&#183; <A HREF="#__STD_COMPLEX">__STD_COMPLEX</A></CODE></B></P><HR><P>Include the standard header <B><CODE>&lt;complex&gt;</CODE></B>to define classes <CODE>double_complex</CODE> and <CODE>float_complex</CODE> and a host ofsupporting functions.Unless otherwise specified,functions that can return multiple values return an imaginarypart in the half-open interval <CODE>(-pi, pi]</CODE>.</P><PRE>        // DECLARATIONS#define <B><A HREF="#__STD_COMPLEX">__STD_COMPLEX</A></B>        // CLASSESclass double_complex;class float_complex;        // double_complex FUNCTIONSdouble_complex <B><A HREF="#operator+">operator+</A></B>(const double_complex&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#operator+">operator+</A></B>(const double_complex&amp; left,    const double&amp; right);double_complex <B><A HREF="#operator+">operator+</A></B>(const double&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#operator-">operator-</A></B>(const double_complex&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#operator-">operator-</A></B>(const double_complex&amp; left,    const double&amp; right);double_complex <B><A HREF="#operator-">operator-</A></B>(const double&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#operator*">operator*</A></B>(const double_complex&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#operator*">operator*</A></B>(const double_complex&amp; left,    const double&amp; right);double_complex <B><A HREF="#operator*">operator*</A></B>(const double&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#operator/">operator/</A></B>(const double_complex&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#operator/">operator/</A></B>(const double_complex&amp; left,    const double&amp; right);double_complex <B><A HREF="#operator/">operator/</A></B>(const double&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#operator+">operator+</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#operator-">operator-</A></B>(const double_complex&amp; left);bool <B><A HREF="#operator==">operator==</A></B>(const double_complex&amp; left,    const double_complex&amp; right);bool <B><A HREF="#operator==">operator==</A></B>(const double_complex&amp; left,    const double&amp; right);bool <B><A HREF="#operator==">operator==</A></B>(const double&amp; left,    const double_complex&amp; right);bool <B><A HREF="#operator!=">operator!=</A></B>(const double_complex&amp; left,    const double_complex&amp; right);bool <B><A HREF="#operator!=">operator!=</A></B>(const double_complex&amp; left,    const double&amp; right);bool <B><A HREF="#operator!=">operator!=</A></B>(const double&amp; left,    const double_complex&amp; right);istream&amp; <B><A HREF="#operator&gt;&gt;">operator&gt;&gt;</A></B>(istream&amp; istr, double_complex&amp; right);ostream&amp; <B><A HREF="#operator&lt;&lt;">operator&lt;&lt;</A></B>(ostream&amp; ostr, const double_complex&amp; right);double <B><A HREF="#real">real</A></B>(const double_complex&amp; left);double <B><A HREF="#imag">imag</A></B>(const double_complex&amp; left);double <B><A HREF="#abs">abs</A></B>(const double_complex&amp; left);double <B><A HREF="#arg">arg</A></B>(const double_complex&amp; left);double <B><A HREF="#norm">norm</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#conj">conj</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#polar">polar</A></B>(const double&amp; rho,    const double&amp; theta = 0);double_complex <B><A HREF="#cos">cos</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#cosh">cosh</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#exp">exp</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#log">log</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#log10">log10</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#pow">pow</A></B>(const double_complex&amp; left, int right);double_complex <B><A HREF="#pow">pow</A></B>(const double_complex&amp; left,    const double&amp; right);double_complex <B><A HREF="#pow">pow</A></B>(const double_complex&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#pow">pow</A></B>(const double&amp; left,    const double_complex&amp; right);double_complex <B><A HREF="#sin">sin</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#sinh">sinh</A></B>(const double_complex&amp; left);double_complex <B><A HREF="#sqrt">sqrt</A></B>(const double_complex&amp; left);        // float_complex FUNCTIONSbool <B><A HREF="#operator==">operator==</A></B>(const float&amp; left,    const float_complex&amp; right);bool <B><A HREF="#operator!=">operator!=</A></B>(const float_complex&amp; left,    const float_complex&amp; right);bool <B><A HREF="#operator!=">operator!=</A></B>(const float_complex&amp; left,    const float&amp; right);bool <B><A HREF="#operator!=">operator!=</A></B>(const float&amp; left,    const float_complex&amp; right);istream&amp; <B><A HREF="#operator&gt;&gt;">operator&gt;&gt;</A></B>(istream&amp; istr, float_complex&amp; right);ostream&amp; <B><A HREF="#operator&lt;&lt;">operator&lt;&lt;</A></B>(ostream&amp; ostr, const float_complex&amp; right);float <B><A HREF="#real">real</A></B>(const float_complex&amp; left);float <B><A HREF="#imag">imag</A></B>(const float_complex&amp; left);float <B><A HREF="#abs">abs</A></B>(const float_complex&amp; left);float <B><A HREF="#arg">arg</A></B>(const float_complex&amp; left);float <B><A HREF="#norm">norm</A></B>(const float_complex&amp; left);float_complex <B><A HREF="#conj">conj</A></B>(const float_complex&amp; left);float_complex <B><A HREF="#polar">polar</A></B>(const float&amp; rho,    const float&amp; theta = 0);float_complex <B><A HREF="#cos">cos</A></B>(const float_complex&amp; left);float_complex <B><A HREF="#cosh">cosh</A></B>(const float_complex&amp; left);float_complex <B><A HREF="#exp">exp</A></B>(const float_complex&amp; left);float_complex <B><A HREF="#log">log</A></B>(const float_complex&amp; left);float_complex <B><A HREF="#log10">log10</A></B>(const float_complex&amp; left);float_complex <B><A HREF="#pow">pow</A></B>(const float_complex&amp; left, int right);float_complex <B><A HREF="#pow">pow</A></B>(const float_complex&amp; left,    const float&amp; right);float_complex <B><A HREF="#pow">pow</A></B>(const float_complex&amp; left,    const float_complex&amp; right);float_complex <B><A HREF="#pow">pow</A></B>(const float&amp; left,    const float_complex&amp; right);float_complex <B><A HREF="#sin">sin</A></B>(const float_complex&amp; left);float_complex <B><A HREF="#sinh">sinh</A></B>(const float_complex&amp; left);float_complex <B><A HREF="#sqrt">sqrt</A></B>(const float_complex&amp; left);        // END OF DECLARATIONS</PRE><H2><A NAME="abs"><CODE>abs</CODE></A></H2><PRE>double <B>abs</B>(const double_complex&amp; left);float <B>abs</B>(const float_complex&amp; left);</PRE><P>The function returns the magnitude of <CODE>left</CODE>.</P><H2><A NAME="arg"><CODE>arg</CODE></A></H2><PRE>double <B>arg</B>(const double_complex&amp; left);float <B>arg</B>(const float_complex&amp; left);</PRE><P>The function returns the phase angle of <CODE>left</CODE>.</P><H2><A NAME="complex"><CODE>complex</CODE></A></H2><PRE>template&lt;class Ty&gt;    class <B>complex</B> {public:    typedef Ty <B><A HREF="#complex::value_type">value_type</A></B>;    Ty <B><A HREF="#complex::real">real</A></B>() const;    Ty <B><A HREF="#complex::imag">imag</A></B>() const;    <B><A HREF="#complex::complex">complex</A></B>(const Ty&amp; realval = 0, const Ty&amp; imagval = 0);    <B><A HREF="#complex::complex">complex</A></B>(const complex&amp; right);    complex&amp; <B><A HREF="#complex::operator=">operator=</A></B>(const complex&amp; right);    complex&amp; <B><A HREF="#complex::operator+=">operator+=</A></B>(const complex&amp; right);    complex&amp; <B><A HREF="#complex::operator-=">operator-=</A></B>(const complex&amp; right);    complex&amp; <B><A HREF="#complex::operator*=">operator*=</A></B>(const complex&amp; right);    complex&amp; <B><A HREF="#complex::operator/=">operator/=</A></B>(const complex&amp; right);    complex&amp; <B><A HREF="#complex::operator=">operator=</A></B>(const Ty&amp; right);    complex&amp; <B><A HREF="#complex::operator=">operator=</A></B>(const Ty&amp; right);    complex&amp; <B><A HREF="#complex::operator+=">operator+=</A></B>(const Ty&amp; right);    complex&amp; <B><A HREF="#complex::operator-=">operator-=</A></B>(const Ty&amp; right);    complex&amp; <B><A HREF="#complex::operator*=">operator*=</A></B>(const Ty&amp; right);    complex&amp; <B><A HREF="#complex::operator/=">operator/=</A></B>(const Ty&amp; right);    };</PRE><P>The template class doesn't really exist. It is a convenient fictionfor describing the behavior common to the two types:</P><UL><LI><CODE><A HREF="#double_complex">double_complex</A></CODE> --which behaves like <CODE>complex&lt;double&gt;</CODE></LI><LI><CODE><A HREF="#float_complex">float_complex</A></CODE> --which behaves like <CODE>complex&lt;float&gt;</CODE></LI></UL><P>The template class describes an object that stores two objectsof type <B><CODE>Ty</CODE></B>, one that represents the real partof a complex number and one that represents the imaginary part.</P><H3><A NAME="complex::complex"><CODE>complex::complex</CODE></A></H3><PRE><B>complex</B>(const Ty&amp; realval = 0, const Ty&amp; imagval = 0);<B>complex</B>(const complex&amp; right);</PRE><P>The first constructor initializes the stored real part to<CODE>realval</CODE> and the stored imaginary part to <CODE>imagval</CODE>.The second constructor initializes the stored real part to<CODE>right.real()</CODE> and the stored imaginary part to<CODE>right.imag()</CODE>.</P><H3><A NAME="complex::imag"><CODE>complex::imag</CODE></A></H3><PRE>Ty <B>imag</B>() const;</PRE><P>The member function returns the stored imaginary part.</P><H3><A NAME="complex::operator*="><CODE>complex::operator*=</CODE></A></H3><PRE>complex&amp; <B>operator*=</B>(const complex&amp; right);complex&amp; <B>operator*=</B>(const Ty&amp; right);</PRE><P>The first member function replaces the stored real and imaginary partswith those corresponding to the complex product of <CODE>*this</CODE>and <CODE>right</CODE>. It then returns <CODE>*this</CODE>.</P><P>The second member function multiplies both the stored real partand the stored imaginary part with <CODE>right</CODE>.It then returns <CODE>*this</CODE>.</P><H3><A NAME="complex::operator+="><CODE>complex::operator+=</CODE></A></H3><PRE>complex&amp; <B>operator+=</B>(const complex&amp; right);complex&amp; <B>operator+=</B>(const Ty&amp; right);</PRE><P>The first member function replaces the stored real and imaginary partswith those corresponding to the complex sum of <CODE>*this</CODE>and <CODE>right</CODE>. It then returns <CODE>*this</CODE>.</P><P>The second member function adds <CODE>right</CODE> to the stored real part.It then returns <CODE>*this</CODE>.</P><H3><A NAME="complex::operator-="><CODE>complex::operator-=</CODE></A></H3><PRE>complex&amp; <B>operator-=</B>(const complex&amp; right);complex&amp; <B>operator-=</B>(const Ty&amp; right);</PRE><P>The first member function replaces the stored real and imaginary partswith those corresponding to the complex difference of <CODE>*this</CODE>and <CODE>right</CODE>. It then returns <CODE>*this</CODE>.</P><P>The second member function subtracts <CODE>right</CODE> fromthe stored real part. It then returns <CODE>*this</CODE>.</P><H3><A NAME="complex::operator/="><CODE>complex::operator/=</CODE></A></H3><PRE>complex&amp; <B>operator/=</B>(const complex&amp; right);complex&amp; <B>operator/=</B>(const Ty&amp; right);</PRE><P>The first member function replaces the stored real and imaginary partswith those corresponding to the complex quotient of <CODE>*this</CODE>and <CODE>right</CODE>. It then returns <CODE>*this</CODE>.</P><P>The second member function multiplies both the stored real partand the stored imaginary part with <CODE>right</CODE>.It then returns <CODE>*this</CODE>.</P><H3><A NAME="complex::operator="><CODE>complex::operator=</CODE></A></H3><PRE>complex&amp; <B>operator=</B>(const complex&amp; right);complex&amp; <B>operator=</B>(const Ty&amp; right);</PRE><P>The first member function replaces the stored real part with<CODE>right.real()</CODE> and the stored imaginary partwith <CODE>right.imag()</CODE>. It then returns <CODE>*this</CODE>.</P><P>The second member function replaces the stored real part with<CODE>right</CODE> and the stored imaginary partwith zero. It then returns <CODE>*this</CODE>.</P><H3><A NAME="complex::real"><CODE>complex::real</CODE></A></H3><PRE>Ty <B>real</B>() const;</PRE><P>The member function returns the stored real part.</P><H3><A NAME="complex::value_type"><CODE>complex::value_type</CODE></A></H3><PRE>typedef Ty <B>value_type</B>;</PRE><P>The type is a synonym for the template parameter <CODE>Ty</CODE>.</P><H2><A NAME="conj"><CODE>conj</CODE></A></H2><PRE>double_complex <B>conj</B>(const double_complex&amp; left);float_complex <B>conj</B>(const float_complex&amp; left);</PRE><P>The function returns the conjugate of <CODE>left</CODE>.</P><H2><A NAME="cos"><CODE>cos</CODE></A></H2><PRE>double_complex <B>cos</B>(const double_complex&amp; left);float_complex <B>cos</B>(const float_complex&amp; left);</PRE><P>The function returns the cosine of <CODE>left</CODE>.</P><H2><A NAME="cosh"><CODE>cosh</CODE></A></H2><PRE>double_complex <B>cosh</B>(const double_complex&amp; left);float_complex <B>cosh</B>(const float_complex&amp; left);</PRE><P>The function returns the hyperbolic cosine of <CODE>left</CODE>.</P><H2><A NAME="double_complex"><CODE>double_complex</CODE></A></H2><PRE>class <B>double_complex</B> : public complex&lt;double&gt; {public:    <B>double_complex</B>(double realval = 0, double imagval = 0);    <B>double_complex</B>(const float_complex&amp; right);    double_complex&amp; <B>operator=</B>(const double right);    };</PRE><P>The class describes an object that stores two objects

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?