using System; using System.Collections.Generic; using System.Linq; using System.Text; using Azimuth.DenseLinearAlgebra; namespace Azimuth.UnitTests.DenseLinearAlgebra { public class DenseVectorPoolTests : UnitTestSharp.TestFixture { public class Log2Tests : UnitTestSharp.TestFixture { public void _0() { var log2 = DenseVectorPool.Base2.Log2(0); CheckEqual(0, log2); } public void _1() { var log2 = DenseVectorPool.Base2.Log2(1); CheckEqual(1, log2); } public void _2() { var log2 = DenseVectorPool.Base2.Log2(2); CheckEqual(1, log2); } public void _3() { var log2 = DenseVectorPool.Base2.Log2(3); CheckEqual(2, log2); } public void _4() { var log2 = DenseVectorPool.Base2.Log2(4); CheckEqual(2, log2); } public void _5() { var log2 = DenseVectorPool.Base2.Log2(5); CheckEqual(3, log2); } public void _2Pow30() { var log2 = DenseVectorPool.Base2.Log2(0x1 << 30); CheckEqual(30, log2); } public void _2Pow30_Minus1() { var log2 = DenseVectorPool.Base2.Log2((0x1 << 30) - 1); CheckEqual(30, log2); } public void _2Pow30_Plus1() { var log2 = DenseVectorPool.Base2.Log2((0x1 << 30) + 1); CheckEqual(31, log2); } public void _2Pow31_Plus1() { uint x = 0x1; x <<= 31; var log2 = DenseVectorPool.Base2.Log2(x + 1); CheckEqual(32, log2); } } public void GetDenseVector_Pow2_CreateNew() { var oldScalars = DenseVectorPool.AggregateScalarsInPool; { var vector = DenseVectorPool.GetDenseVector_FromLog2(5); CheckEqual(32, vector.Length); } CheckEqual(oldScalars, DenseVectorPool.AggregateScalarsInPool); } public void GetDenseVector_Pow2_FromPool() { var oldScalars = DenseVectorPool.AggregateScalarsInPool; { DenseVectorPool.ReturnDenseVector(new DenseVector(1024), 10); CheckEqual(oldScalars + 1024, DenseVectorPool.AggregateScalarsInPool); var vector = DenseVectorPool.GetDenseVector_FromLog2(10); CheckEqual(1024, vector.Length); } CheckEqual(oldScalars, DenseVectorPool.AggregateScalarsInPool); } public void GetDenseVector_CreateNew() { var oldScalars = DenseVectorPool.AggregateScalarsInPool; { var vector = DenseVectorPool.GetDenseVector(1000); CheckEqual(1000, vector.Length); } CheckEqual(oldScalars, DenseVectorPool.AggregateScalarsInPool); } public void GetDenseVector_FromPool() { var oldScalars = DenseVectorPool.AggregateScalarsInPool; { var vec = new DenseVector(1024); vec.SetLength(999); DenseVectorPool.ReturnDenseVector(vec); CheckEqual(oldScalars + 1024, DenseVectorPool.AggregateScalarsInPool); var vector = DenseVectorPool.GetDenseVector(1000); CheckEqual(1000, vector.Length); } CheckEqual(oldScalars, DenseVectorPool.AggregateScalarsInPool); } } }