一些函数要记的函数笔记

__builtin_popcount() 求二进制 1的个数。

double add(double a,double b) {
    if(abs(a+b)<eps *(abs(a)+abs(b))) return 0;
    return a+b;
}


一个 向量操作结构体。
const double eps =1e-8;

struct P {
    double x,y;
    P() {}
    P(double x,double y):x(x),y(y) {}
    P operator + (P p) {
        return P(add(x,p.x),add(y,p.y));
    }
    P operator - (P p) {
        return P(add(x,-p.x),add(y,-p.y));
    }
    P operator * (double d) {
        return P(x*d,y*d);
    }
    double dot (P p) {   //向量积
        return add(x*p.x,y*p.y);
    }
    double det(P p) {    //数量积
        return add(x*p.y,-y*p.x);
    }
};

猜你喜欢

转载自blog.csdn.net/qq_40871466/article/details/81197666