public void Vector2SqrtTest() { Vector2 v1 = new Vector2(-2.5f, 2.0f); Vector2 v2 = new Vector2(5.5f, 4.5f); Assert.Equal(2, (int)Vector2.SquareRoot(v2).X); Assert.Equal(2, (int)Vector2.SquareRoot(v2).Y); Assert.Equal(Single.NaN, Vector2.SquareRoot(v1).X); }
public static Vector2 SquareRootJitOptimizeCanaryTest() { var result = VectorTests.Vector2Value; for (var iteration = 0; iteration < Benchmark.InnerIterationCount; iteration++) { result += Vector2.SquareRoot(result); } return(result); }
public static Vector2 SquareRootTest() { var result = VectorTests.Vector2Value; for (var iteration = 0; iteration < Benchmark.InnerIterationCount; iteration++) { // The inputs aren't being changed and the output is being reset with each iteration, so a future // optimization could potentially throw away everything except for the final call. This would break // the perf test. The JitOptimizeCanary code below does modify the inputs and consume each output. result = Vector2.SquareRoot(result); } return(result); }