public static F64 Length(F64Vec2 a) { return((a.x * a.x + a.y * a.y).SqrtFast()); }
public static F64Vec2 Lerp(F64Vec2 a, F64Vec2 b, F64 t) { return(a + t * (b - a)); }
public static F64Vec2 Pow(F64Vec2 a, F64Vec2 b) { return(new F64Vec2(F64.Pow(a.x, b.x), F64.Pow(a.y, b.y))); }
public static F64Vec2 RSqrtFastest(F64Vec2 a) { return(new F64Vec2(F64.RSqrtFastest(a.x), F64.RSqrtFastest(a.y))); }
public static F64 DistanceFastest(F64Vec2 a, F64Vec2 b) { return(LengthFastest(a - b)); }
public static F64 Dot(F64Vec2 a, F64Vec2 b) { return(a.x * b.x + a.y * b.y); }
public static F64Vec2 Lerp(F64Vec2 a, F64Vec2 b, F64 t) { return((F64.One - t) * a + t * b); } // \todo [petri] is a + t*(b-a) better formula?
public static F64Vec2 CosFastest(F64Vec2 a) { return(new F64Vec2(F64.CosFastest(a.x), F64.CosFastest(a.y))); }
public static F64Vec2 PowFastest(F64Vec2 a, F64 b) { return(new F64Vec2(F64.PowFastest(a.x, b), F64.PowFastest(a.y, b))); }
public static F64Vec2 Log2Fastest(F64Vec2 a) { return(new F64Vec2(F64.Log2Fastest(a.x), F64.Log2Fastest(a.y))); }
public static F64Vec2 SinFast(F64Vec2 a) { return(new F64Vec2(F64.SinFast(a.x), F64.SinFast(a.y))); }
public static F64Vec2 Log(F64Vec2 a) { return(new F64Vec2(F64.Log(a.x), F64.Log(a.y))); }
public static F64Vec2 Exp2Fast(F64Vec2 a) { return(new F64Vec2(F64.Exp2Fast(a.x), F64.Exp2Fast(a.y))); }
public static F64Vec2 RcpFast(F64Vec2 a) { return(new F64Vec2(F64.RcpFast(a.x), F64.RcpFast(a.y))); }
public static F64 LengthSqr(F64Vec2 a) { return(a.x * a.x + a.y * a.y); }
public static F64Vec2 PowFastest(F64 a, F64Vec2 b) { return(new F64Vec2(F64.PowFastest(a, b.x), F64.PowFastest(a, b.y))); }
public static F64Vec2 Normalize(F64Vec2 a) { F64 ooLen = LengthSqr(a).RSqrt(); return(ooLen * a); }
public static F64 LengthFastest(F64Vec2 a) { return(F64.SqrtFastest(a.x * a.x + a.y * a.y)); }
public static F64 Distance(F64Vec2 a, F64Vec2 b) { return(Length(a - b)); }
public static F64Vec2 NormalizeFastest(F64Vec2 a) { F64 ooLen = F64.RSqrtFastest(LengthSqr(a)); return(ooLen * a); }
public static F64Vec2 Max(F64Vec2 a, F64Vec2 b) { return(new F64Vec2(F64.Max(a.x, b.x), F64.Max(a.y, b.y))); }
public static F64Vec2 SqrtPrecise(F64Vec2 a) { return(new F64Vec2(F64.SqrtPrecise(a.x), F64.SqrtPrecise(a.y))); }