当前位置: 首页>>代码示例>>C++>>正文


C++ expr::m_e1方法代码示例

本文整理汇总了C++中expr::m_e1方法的典型用法代码示例。如果您正苦于以下问题:C++ expr::m_e1方法的具体用法?C++ expr::m_e1怎么用?C++ expr::m_e1使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在expr的用法示例。


在下文中一共展示了expr::m_e1方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: solve

inline bool solve(const expr<division,ref2<var<double>>,ref2<var<double>>>& e, const double& r) noexcept        
{
    // n/m = 3.1415926 => n=22,m=7
    long m[2][2] = {
                        {1,0},
                        {0,1}
                   };
    double x      = r;
    //double startx = r;
    long maxden   = 100;
    long ai;

    /* loop finding terms until denom gets too big */
    while (m[1][0] *  ( ai = (long)x ) + m[1][1] <= maxden) {
        long t;
        t = m[0][0] * ai + m[0][1];
        m[0][1] = m[0][0];
        m[0][0] = t;
        t = m[1][0] * ai + m[1][1];
        m[1][1] = m[1][0];
        m[1][0] = t;
        if(x==(double)ai) break;     // AF: division by zero
        x = 1/(x - (double) ai);
        if(x>(double)0x7FFFFFFF) break;  // AF: representation failure
    } 

    ///* now remaining x is between 0 and 1/ai */
    ///* approx as either 0 or 1/m where m is max that will fit in maxden */
    ///* first try zero */
    //printf("%ld/%ld, error = %e\n", m[0][0], m[1][0], startx - ((double) m[0][0] / (double) m[1][0]));

    ///* now try other possibility */
    //ai = (maxden - m[1][1]) / m[1][0];
    //m[0][0] = m[0][0] * ai + m[0][1];
    //m[1][0] = m[1][0] * ai + m[1][1];
    //printf("%ld/%ld, error = %e\n", m[0][0], m[1][0], startx - ((double) m[0][0] / (double) m[1][0]));
    e.m_e1(m[0][0]);
    e.m_e2(m[1][0]);
    return true;
}
开发者ID:solodon4,项目名称:Mach7,代码行数:40,代码来源:algebraic.cpp


注:本文中的expr::m_e1方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。