⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interval.h

📁 basic mathematic classes used for math programming
💻 H
字号:

#ifndef INTERVAL_H
#define INTERVAL_H

class interval
{
  private:
    m_real start, end;
    
    // negation
    friend interval operator-( interval const& );

    // addtion
    friend interval& operator+=( interval&, m_real );
    friend interval  operator+( m_real, interval const& );
    friend interval  operator+( interval const&, m_real );

    // subtraction
    friend interval& operator-=( interval&, m_real );
    friend interval  operator-( interval const&, m_real );

    // multiplication by scalar
    friend interval& operator*=( interval&, m_real );
    friend interval  operator*( interval const&, m_real );
    friend interval  operator*( m_real, interval const& );

    // division by scalar
    friend interval& operator/=( interval&, m_real );
    friend interval  operator/( interval const&, m_real );

    // inclusion operation
    friend int   operator>>( interval const&, m_real );
    friend int   operator<<( m_real, interval const& );

    // inclusion operation
    friend int   operator>>( interval const&, interval const& );
    friend int   operator<<( interval const&, interval const& );

    // or operation
    friend interval& operator|=( interval&, interval const& );
    friend interval  operator|( interval const&, interval const& );

    // and operation
    friend interval& operator&=( interval&, interval const& );
    friend interval  operator&( interval const&, interval const& );

    // logical-and operation
    friend int       operator&&( interval const&, interval const& );

    // expansion
    friend interval  operator^( interval const&, m_real );

    // axiliary functions
    friend void adjust_interval( interval& );

    // stream
    friend ostream& operator<<( ostream&, interval const& );
    friend istream& operator>>( istream&, interval& );

  public:
    // constructors
    interval( ) { start = end = 0.0; }
    interval( m_real a ) { start = end = a; }
    interval( m_real a, m_real b ) { start = MIN(a,b);
                                     end   = MAX(a,b); }

    // inquiry functions
    m_real start_pt() const { return start; }
    m_real end_pt() const { return end; }
    m_real mid_pt() const { return (start+end)/2.0f; }

    m_real interpolate( m_real t ) const { return (1-t)*start + t*end; }
    m_real len( ) const { return end - start; }

	m_real distance( m_real ) const;
    m_real project( m_real ) const;
};

#endif

⌨️ 快捷键说明

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