Ejemplo n.º 1
0
void rotnumber(long double xi1, long double yi1, int time) {
    __float128 x = xi1;
    __float128 y = yi1;
    __float128 xn;
    __float128 yn;
    __float128 xav=0.Q;
    __float128 yav=0.Q;
    __float128 cosval=0.Q;
    __float128 dot, mo, mn, theta;
    __float128 rho=0.Q; 
    __float128 wsum=0.Q;
    for(int t=0; t< time; t++) {
        wsum+=weight((__float128)t/(__float128)time);
    }


    for(int t=0; t < time; t++) {
        xav+=x*weight((__float128)t/(__float128)time);
        yav+=y*weight((__float128)t/(__float128)time);
        xn = smod(x+y,2.Q*M_PIq);
        yn = smod(y+1.4Q*sinq(x+y),2.Q*M_PIq);
        x=xn;
        y=yn;
    }
    xav/=wsum;
    yav/=wsum;
    mn = sqrtq((x-xav)*(x-xav) + (y-yav)*(y-yav));
    for(int t=0; t< time; t++) {
        xn = smod(x+y,2.Q*M_PIq);
        yn = smod(y+1.4Q*sinq(x+y),2.Q*M_PIq);

        dot = (xn-xav)*(x-xav) + (yn-yav)*(y-yav);
        mo = mn;
        mn = sqrtq((xn-xav)*(xn-xav) + (yn-yav)*(yn-yav));
        cosval = dot/(mo*mn);
        theta = acosq(cosval);
        rho += theta*weight((__float128)t/(__float128)time);
        x=xn;
        y=yn;
    }
    rho/=wsum*2.Q*M_PIq;

    printf("The rotation number at (xi=%Lf, yi=%Lf) is %.20Lf\n",xi1,yi1,(long double)rho);
}
Ejemplo n.º 2
0
inline void eval_acos(float128_backend& result, const float128_backend& arg)
{
   result.value() = acosq(arg.value());
}
Ejemplo n.º 3
0
inline Quad Acos( const Quad& alpha ) { return acosq(alpha); }