public float cross(Ivec2d <float> rhs) => x * rhs.y - y * rhs.x;
public float dot(Ivec2d <float> rhs) => x * rhs.x + y * rhs.y;
public vec2d_f(Ivec2d <float> v) : this(v.x, v.y) { }
public readonly int cross(Ivec2d <int> rhs) => x * rhs.y - y * rhs.x;
public readonly int dot(Ivec2d <int> rhs) => x * rhs.x + y * rhs.y;
public vec2d_i(Ivec2d <int> v) : this(v.x, v.y) { }