public static void Atan2()
{
AssertEqual(-MathF.PI, MathF.Atan2(-0.0f, -0.0f), CrossPlatformMachineEpsilon * 10);
Assert.Equal(-0.0f, MathF.Atan2(-0.0f, 0.0f));
AssertEqual(MathF.PI, MathF.Atan2(0.0f, -0.0f), CrossPlatformMachineEpsilon * 10);
Assert.Equal(0.0f, MathF.Atan2(0.0f, 0.0f));
AssertEqual(MathF.PI / 2.0f, MathF.Atan2(1.0f, 0.0f), CrossPlatformMachineEpsilon * 10);
AssertEqual(0.588002604f, MathF.Atan2(2.0f, 3.0f), CrossPlatformMachineEpsilon);
Assert.Equal(0.0f, MathF.Atan2(0.0f, 3.0f));
AssertEqual(-0.588002604f, MathF.Atan2(-2.0f, 3.0f), CrossPlatformMachineEpsilon);
Assert.Equal(float.NaN, MathF.Atan2(float.NaN, 1.0f));
Assert.Equal(float.NaN, MathF.Atan2(1.0f, float.NaN));
AssertEqual(MathF.PI / 2.0f, MathF.Atan2(float.PositiveInfinity, 1.0f), CrossPlatformMachineEpsilon * 10);
AssertEqual(-MathF.PI / 2.0f, MathF.Atan2(float.NegativeInfinity, 1.0f), CrossPlatformMachineEpsilon * 10);
Assert.Equal(0.0f, MathF.Atan2(1.0f, float.PositiveInfinity));
AssertEqual(MathF.PI, MathF.Atan2(1.0f, float.NegativeInfinity), CrossPlatformMachineEpsilon * 10);
Assert.Equal(float.NaN, MathF.Atan2(float.NegativeInfinity, float.NegativeInfinity));
Assert.Equal(float.NaN, MathF.Atan2(float.NegativeInfinity, float.PositiveInfinity));
Assert.Equal(float.NaN, MathF.Atan2(float.PositiveInfinity, float.NegativeInfinity));
Assert.Equal(float.NaN, MathF.Atan2(float.PositiveInfinity, float.PositiveInfinity));
}